
第3章8086指令象统及寻址六式 学习目标 ·了解编辑程序、汇编程序、连接程序的功能及其输入、输出文件的类型 ·了解汇编语言源程序框架,熟悉程序段定义和过程定义伪操作 熟悉数据类型和数据定义伪操作 熟练掌握并运用8086指令集及各类寻址方式 3.1汇编语言程序格式 3.2寻址方式与机器语言转换 3.38086指令系统
第3章 8086指令系统及寻址方式 学习目标 •了解编辑程序、汇编程序、连接程序的功能及其输入、输出文件的类型 • 了解汇编语言源程序框架,熟悉程序段定义和过程定义伪操作 • 熟悉数据类型和数据定义伪操作 • 熟练掌握并运用8086指令集及各类寻址方式 3.1 汇编语言程序格式 3.2 寻址方式与机器语言转换 3.3 8086指令系统

第3章8086指令系统及寻址方式 3.1汇编语言程序格式 介绍两条常用指令:MOV和ADD ·MOV dst,.src (dst) _(src) 个↑ 助记符目的源操作数 操作数 例:MOV AH,BL MOV AX,1234H ·ADD dst,src (dst)(dst)+(src) ↑↑↑ 助记符目的源操作数 操作数 例:ADD AL,36H ADD BX,CX
第3章 8086指令系统及寻址方式 3.1 汇编语言程序格式 介绍两条常用指令:MOV 和 ADD • MOV dst, src ; (dst) (src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: MOV AH,BL MOV AX,1234H • ADD dst, src ; (dst) (dst)+(src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: ADD AL,36H ADD BX,CX

第3章 8086指令系统及寻址方式 :THE FORMOF AN ASSEMBLY LANGUAGE PROGRAM STSEG SEGMENT DB 64DUP(?) STSEG ENDS 个简单程序实例 DTSEG SEGMENT DATAI DB 36H DATA2 DB 4BH SUM DB ENDS CDSEG SEGMENT MAIN PROC FAR ;this is the program entry point ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG START: MOV AX,DTSEG ;load the data segmentaddress MOV DS,AX ;assign value to DS MOV ALDATAI iget the first operand MOV BLDATA2 ;get the second operand ADD AL,BL ;add the operands MOV SUM.AL ;store result in location SUM MOV AH4CH ;set up to INT 21H ;return to DOS MAIN ENDP CDSEG ENDS END START this is the programexit point
第3章 8086指令系统及寻址方式 一个简单程序实例 ;THE FORM OFAN ASSEMBLY LANGUAGE PROGRAM STSEG SEGMENT DB 64 DUP(?) STSEG ENDS ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DTSEG SEGMENT DATA1 DB 36H DATA2 DB 4BH SUM DB ? DTSEG ENDS ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CDSEG SEGMENT MAIN PROC FAR ;this is the program entry point ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG START: MOV AX,DTSEG ;load the data segment address MOV DS,AX ;assignvalue to DS MOV AL,DATA1 ;get the first operand MOV BL,DATA2 ;get the secondoperand ADD AL,BL ;add the operands MOV SUM,AL ;store result in locationSUM MOV AH,4CH ;set up to INT 21H ;return to DOS MAIN ENDP CDSEG ENDS END START ;this is the program exit point

第3章8086指令象统及寻址六式 1)汇编语句组成 四个域: [标号:】助记符操作数][注释] 如:DATA1DB36H ;变量数据的符号地址 START:MOV AX,DTSEG ;标号--指令的符号地址 2)伪指令(伪操作) 伪指令是汇编程序对源程序进行汇编时处理的操作命令。 伪指令不能生成机器代码,它只为汇编程序提供转换源程序的命令。 3)汇编程序的逻辑段 堆栈段数据段代码段 附加段
第3章 8086指令系统及寻址方式 1) 汇编语句组成 四个域: [标号:] 助记符 [操作数] [;注释] 如: DATA1 DB 36H ;变量-----数据的符号地址 START: MOV AX, DTSEG ;标号-----指令的符号地址 2) 伪指令(伪操作) 伪指令是汇编程序对源程序进行汇编时处理的操作命令。 伪指令不能生成机器代码,它只为汇编程序提供转换源程序的命令。 3) 汇编程序的逻辑段 堆栈段 数据段 代码段 附加段

第3章8086指令系统及寻址方式 2.程序运行步骤及生成的文件 编辑程序 myfile.asm 汇编程序 myfile.Ist myfile.crf otherfiles.obj myfile.obj 连接程序 myfile.map myfile.exe
第3章 8086指令系统及寻址方式 2. 程序运行步骤及生成的文件 myfile.asm 编 辑 程 序 汇 编 程 序 连 接 程 序 myfile.crf otherfiles.obj myfile.lst myfile.obj myfile.map myfile.exe

第3章8086指令象统及寻址方式 建立,运行汇编语言程序 C>EDIT MYFILE.ASM C>MASM MYFILE.ASM Microsoft(R)Macro Assembler Version5.10 Copyright(C)Microsoft Corp 1981,1988.All rights reserved. Object filename [MYFILE.OBJ]: Source listing [NUL.LST]:MYFILE.LST Cross-reference[NUL.CRF]: 47962+413345Bytes symbol space free 0 Warning Errors 0 Severe Errors C>LINK MYFILE.OBJCR> Microsoft(R)Overlay Linker Version 3.64 Copyright(C)Microsoft Corp 1983-1988.All rights reserved. Run File [MYFILE.EXE]: List File [NUL.MAP]: Libraries [.LIB]: LINK:warning L4021:no stack segment C>MYFILE
第3章 8086指令系统及寻址方式 建立, 运行汇编语言程序 C>EDIT MYFILE.ASM C>MASM MYFILE.ASM Microsoft(R) Macro AssemblerVersion5.10 Copyright (C) Microsoft Corp 1981,1988.All rights reserved. Object filename [MYFILE.OBJ]: Source listing [NUL.LST]: MYFILE.LST Cross-reference [NUL.CRF]: 47962 + 413345Bytessymbol space free 0 Warning Errors 0 Severe Errors C>LINK MYFILE.OBJ Microsoft(R) Overlay Linker Version 3.64 Copyright (C) Microsoft Corp1983-1988.All rights reserved. Run File [MYFILE.EXE]: List File [NUL.MAP]: Libraries [.LIB]: LINK : warning L4021: no stack segment C>MYFILE

第3章8086指令象统及寻址云式 3.常用伪操作 ()程序结构伪操作 段定义伪操作 段名 SEGMENT 段名 ENDS 过程定义伪操作 过程名 PROC [NEAR/FAR] 过程名 EDP 程序开始伪操作TITLE 程序名-程序说明(<60个ASCI字符) 程序结束伪操作 END START 段分配伪操作 ASSUME CS:CODE DS:DATA.SS:STACK.ES:DATA
第3章 8086指令系统及寻址方式 3. 常用伪操作 (1) 程序结构伪操作 段定义伪操作 段名 SEGMENT … 段名 ENDS 过程定义伪操作 过程名 PROC [NEAR/FAR] … 过程名 EDP 程序开始伪操作 TITLE 程序名 ---- 程序说明(<60个ASCII字符) 程序结束伪操作 END START 段分配伪操作 ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA

第3章8086指令象统及寻址方式 (2)数据类型及数据定义伪操作 ORG指定数据的存储地址或代码段的起始地址 例:ORG100H 例:ORG100H DATAI DB 100 START:MOV AX,BX .DB 定义字节,是唯一能定义字符串的伪操作 List File for DB Examples 000019 DB 25 decimal number 000189 DATA2 DB10001001B binary number 000212 DATA3 DB 12H hexadecimal number 0010 ORG 0010H the offsetaddress is 10h 001032353931 DATA4 DB2591 ASCII number 0018 ORG 0018H the offsetaddress is 18h 001800 DATA5 DB setaside a byte 0020 ORG 0020H the offsetaddress is 20h 00204D79206E616D DATA6 DB 'My name is Joe' ;ASCⅡcharacters 65206973204A 6F65 002E0A1002313042 DATA7 DB 10,10H,10B,'10B'different data types
第3章 8086指令系统及寻址方式 (2) 数据类型及数据定义伪操作 •ORG 指定数据的存储地址或代码段的起始地址 例: ORG 100H 例: ORG 100H DATA1 DB 100 START: MOV AX,BX •DB 定义字节, 是唯一能定义字符串的伪操作. ; List File for DB Examples 0000 19 DATA1 DB 25 ; decimal number 0001 89 DATA2 DB 10001001B ; binary number 0002 12 DATA3 DB 12H ; hexadecimal number 0010 ORG 0010H ; the offset address is 10h 0010 32 35 39 31 DATA4 DB ‘2591’ ; ASCII number 0018 ORG 0018H ; the offset address is 18h 0018 00 DATA5 DB ? ; set aside a byte 0020 ORG 0020H ; the offset address is 20h 0020 4D 79 20 6E 61 6D DATA6 DB ‘My name is Joe’ ; ASCII characters 65 20 69 73 20 4A 6F65 002E 0A10 02 31 30 42 DATA7 DB 10,10H,10B,‘10B’ ; different data types

第3章8086指令集统及寻址式 DW定义字 List File for DW Examples 0070 ORG 70H 007003BA DATA DW 954 decimal 00720954 DATA9 DW 100101010100B binary 0074253F DATA10 DW 253FH hexadecimal 0076 FFFB DATAI1 DW 5 negative 0080 ORG 80H 00800009FFFF0007000 C DATA12 DW 9,-1,7.0CH,00100000B,100,H 002000644849 008E00700076 DW DATA,DATA1I .DD 定义双字 List File for DD Examples 00A0 ORG 00AOH 00A0000003FF DATA13 DD 1023 decimal 00A40008965C DATA14 DD 10001001011001011100B;binary 00A85C2A57F2 DATA15 DD 5C2A57F2H hexadecimal 00AC0000002300034789 DATA16 DD 23H34789H65533 miscellaneous 0000FFFD
第3章 8086指令系统及寻址方式 •DW 定义字 ; List File for DW Examples 0070 ORG 70H 0070 03BA DATA DW 954 ; decimal 0072 0954 DATA9 DW 100101010100B ; binary 0074 253F DATA10 DW 253FH ; hexadecimal 0076 FFFB DATA11 DW -5 ; negative 0080 ORG 80H 0080 0009 FFFF 0007 000C DATA12 DW 9,-1,7,0CH,00100000B,100,‘HI’ 0020 0064 4849 008E 0070 0076 DW DATA, DATA11 •DD 定义双字 ; List File for DD Examples 00A0 ORG 00A0H 00A0 000003FF DATA13 DD 1023 ; decimal 00A4 0008965C DATA14 DD 10001001011001011100B ; binary 00A8 5C2A57F2 DATA15 DD 5C2A57F2H ; hexadecimal 00AC 00000023 00034789 DATA16 DD 23H,34789H,65533 ; miscellaneous 0000FFFD

第3章8086指令集统及寻址交式 .DQ 定义4字 .DT 为压缩的BCD数据分配存储单元 List File for DQ,DT Examples 00C0 ORG 00COH 00C0C223450000000000 DATA17 DQ 4523C2H hexadecimal 00C84948000000000000 DATA18 DQ HI' ASCII characters 00D00000000000000000 DATA19 D0? ;nothing 00E0 ORG 00EOH 00E02998564379860000 DATA20 DT 867943569829:BCD 0000 00EA0000000000000000 DATA21 DT nothing 0000
第3章 8086指令系统及寻址方式 •DQ 定义4字 •DT 为压缩的BCD数据分配存储单元 ; List File for DQ ,DT Examples 00C0 ORG 00C0H 00C0 C223450000000000 DATA17 DQ 4523C2H ; hexadecimal 00C8 4948000000000000 DATA18 DQ ‘HI’ ; ASCII characters 00D0 0000000000000000 DATA19 DQ ? ; nothing 00E0 ORG 00E0H 00E0 2998564379860000 DATA20 DT 867943569829 ; BCD 0000 00EA 0000000000000000 DATA21 DT ? ; nothing 0000