第二章汇编语言与汇编程序1.ppt

上传人:本田雅阁 文档编号:2915369 上传时间:2019-06-05 格式:PPT 页数:53 大小:327.52KB
返回 下载 相关 举报
第二章汇编语言与汇编程序1.ppt_第1页
第1页 / 共53页
第二章汇编语言与汇编程序1.ppt_第2页
第2页 / 共53页
第二章汇编语言与汇编程序1.ppt_第3页
第3页 / 共53页
第二章汇编语言与汇编程序1.ppt_第4页
第4页 / 共53页
第二章汇编语言与汇编程序1.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《第二章汇编语言与汇编程序1.ppt》由会员分享,可在线阅读,更多相关《第二章汇编语言与汇编程序1.ppt(53页珍藏版)》请在三一文库上搜索。

1、1,第二章,汇编语言与汇编程序,2,二、汇编语言与汇编程序,2.1 符号指令中的表达式; 2.2 符号指令的寻址方式; 2.3 常用指令; 2.4 伪指令; 2.5 常用系统功能调用与BIOS。,3,2.1 符号指令中的表达式,1. 常量和数值表达式; 2. 变量和地址表达式; 3. 标号; 4. 标量和标号类型的变更。,4,1. 常量和数值表达式,1.常量:指在汇编时已经有确定数值,程序执行期间不变的量. (1)汇编语言使用的常量:2进制(10110110B)、8进制(1234Q)、10进制(123D)、16进制(01A8H)、ASCII码字符(welcome , 1234 ) (2)应用:

2、用于伪指令给变量赋值、或机器指令语句中的操作数、寻址方式中的位移量等,5,(3)分类: 数值常量:直接以数值出现,如0B7H 符号常量:由括起来的一串字符,最 长225个字符,如12345678,hello (4)符号常量的定义:伪指令EQU或“” eg: P EQU 314 ; P314 2.数值表达式:是由常量和算术、逻辑、关系等运算符组成的有意义的式子。,6,2. 变量和地址表达式,变量:存储器中的数据或数据区的符号表示。 变量名:是数据的地址或数据区的首地址。,地址表达式:由变量、常量、寄存器(SI、DI、BX、BP)的内容和运算符组成的有意义的式子。,变量或地址表达式可给出指令中的存

3、储器的地址。由于存储器是分段使用的,因此变量或地址表达式都具有3重属性:段地址、偏移地址和类型。,7,变量的段地址:变量所在段的段首地址除以10H之商;当要访问某变量时,其段地址一定要在相应的段寄存器中。 变量的偏移地址:变量所在段的段首址到该变量所在存储单元的字节距离,即EA。 变量的段地址和偏移地址分别用SEG或OFFSET两个算符来指定。,例如:变量W的段地址和偏移地址分别表示为SEG W和OFFSET W。 变量的类型:存取某变量的字节数,Byte、Word、Dword、Qword、Tbyte,8,变量的定义,变量名 数据定义伪指令 表达式, 变量名:数据的地址或数据区的首地址 数据定

4、义伪指令:DB(定义字节)、DW(定义字)、DD(定义双字)、DQ(定义4字)、DT(定义10字节),根据定义的字节数自动给变量分配存储单元。 表达式:数值表达式、ASCII码字符串、地址表达式、?及n DUP(表达式),9,数值表达式: A1 DB (1*3), (15/3) ASCII码字符串: B2 DB 1234,ABCD (DB给每个字节分配一个单元,字符从左至右按地址递增顺序排列) 地址表达式:只能用于DW或DD,表达式为一变量或标号,DW定义:取其偏移地址初始化变量, eg A DW VALUE ; 取 VALUE偏移地址初始化A,DD定义:取其段地址和偏移地址初始化变量, eg

5、 A DD VALUE ;取 VALUE段地址和偏移地址初 始化A,髙位字为VALUE段地址,低位字为其偏移地址,?:变量无确定的值,用于预留若干字节存储单元以存放结果,n DUP : DUP为重复字句,n为重复因子,eg A DB 2 DUP(0,3DUP(1) ; 01110111,10,例如,在数据段DATAl中定义的变量如下: Wl DW B3; B1 DB AB$; W2 DW -5,1994H; B2 DB 4 DUP(?) ; D DD EB ; B3 DB 2 DUP(-1) DB l DUP(10,E) ; DB 13,1,3 在附加数据段DATA2中定义的变量如下: EB

6、DB 8 DUP(?) EW DW AB,CD,11,3. 标号,标号是指令地址的符号表示,也可以是过程名。过程名是过程入口地址的符号表示,即过程的第一条指令的地址。,标号的定义方式有两种: (1)用“:”定义,直接写在指令助记符前。 如 CYCLE:MOV AL,SI (2)用PROC和ENDP伪指令定义过程。,标号代表指令的地址,因而它也有3个属性:段地址、偏移地址和类型。 标号的段地址:定义该标号所在段的段地址。 标号的偏移地址:标号所在段的段首址到该标号定 义指令的字节距离。 标号的类型有NEAR和FAR两种。,12,4. 变量和标号类型的变更,格式: 类型 PTR 地址表达式,PTR

7、算符用来明确指出某个变量、标号或地址表达式的类型属性,或者使它们临时兼有与原定义所不同的类型属性,但仍保持它们原来的段地址和偏移地址属性不变。,如:BYTE PTR W1 WORD PTR B3 BYTE PTR BX+3,13,指令 (Instruction): 让计算机完成某种操作的命令。,指令系统 (Instruction System): 指令的集合。,2.2 符号指令的寻址方式 一、概 述,指令控制计算机完成指定操作的命令 机器指令指令的二进制代码形式。例如:CD21H 汇编指令助记符形式的指令。例如:INT 21H 指令系统CPU所有指令及其使用规则的集合,14,8086汇编语言指

8、令的语句格式,标号: 指令助记符 操作数 ;注释,(1) 标号:指令所在地址的符号,符合以下规则:, 由字母(az, AZ)、数字(09)或某些特殊字符(,_,?) 等组成;, 首字符是字母或某些特殊字符,但“?”不能单独作标识符;, 有效长度为131个字符。,15,(2) 指令助记符:指出指令的操作类型。,(3) 操作数:参加本指令运算的数据。,(4) 注释:指令功能的说明。,16,有效地址EA(Effective Address),17,指令包含的信息,(1) 做什么操作,(2) 操作数的来源,(3) 操作结果的存数,(4) 下一条指令的位置,18,指令的基本构成,操作码,操作数,,操作数

9、,说明要执行的是什么操作,操作对象,可以有0个、1个或2个,目的,源,19,指令举例:,ADD AX,SI+6,MOV AX , BX,操作码 操作数,INC BX,HLT,20,双操作数指令 ADD AX, BX 大多数运算型指令都是双操作数指令,对这种指令,有的机器(大中型)使用“三地址”指令:除给出参加运算的两个操作数外,还要指出运算结果的存放地址。,现代微型计算机中多采用二地址指令,两个操作数分别称为“源操作数”和“目的操作数”,指令执行后,把运算结果放到目的操作数的地址之中。,21,指令系统设计,一个指令系统能够提供哪些寻址方式,能否为编制程序提供方便,这是指令系统设计的关键。 需要

10、说明的是,在不同的计算机系统中,寻址方式的名称和分类并不统一,但基本可以归结为以下几种方式或它们的变型或组合:,22,二、8088/8086的操作数分为3类,1、立即数(常数) 取值范围如下表:,立即数只能用作源操作数,如,MOV AX,0FA00H ;正确 MOV 8000H,DX ;错误,23,2、寄存器操作数,放在8个通用寄存器或4个段寄存器中的操作数,24,只能存放字操作数,段寄存器存放当前操作数的段基地址,不允许将立即数传送到段寄存器,SI,DI,BP,SP,CS,DS,ES,SS,25,3、存储器操作数,存储器操作数,字节 字 双字,1 2 4,类型,存储单元个数,一般不允许两个操

11、作数同时为存储器操作数,26,存储单元的物理地址 = 段基地址16 + 偏移地址,若指令中没有指明所涉及的段寄存器,CPU就采用默认的段寄存器来确定操作数所在的段。,存储器操作数的偏移地址(也称有效地址)可以通过不同的寻址方式由指令给出。 例如,若(BX)=2000H, (SI)=0A00H, (DI)=2A00H,则以下指令的结果是一样的: MOV AL, 2A00H MOV AL, BX+0A00H MOV AL, BXSI MOV AL, DI,27,一条指令的执行时间=,指令的执行时间,取指令 取操作数 执行指令 传送结果,单位用时钟周期数表示,结论: 1)尽量使用寄存器作为操作数 2

12、)若有可能,用移位代替乘除法 3)尽量使用简单的寻址方式,28,寻址方式寻找操作数的方法 寻找操作数的地址 在8086指令系统中,说明操作数所在地址的寻址方式可分为8种: 立即寻址 寄存器相对寻址 寄存器寻址 基址-变址寻址 直接寻址 相对的基址-变址寻址 间接寻址 隐含寻址,三、8086的寻址方式,29,操作数(为一常数)直接由指令给出 (此操作数称为立即数) 立即寻址只能用于源操作数,用于寄存器或存储器赋初值,与寄存器或存储器操作数进行算术逻辑运算 例:MOV AX, 1C8FH MOV AL, 8FH ADD AX ,100H 错误例: MOV 2A00H, AX,1. 立即寻址,30,

13、立即数,操作码,低8位,高8位,存储器,MOV操作码,02H,31H,AH,AL,代码段,代码段,立即寻址指令在存储器中的存放形式,AX,指令操作例:MOV AX,3102H ; AX 3102H 执行后,(AH) = 31H,(AL) = 02H,31,2. 寄存器寻址,操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例: MOV AX, BX MOV 3F00H, AX MOV CL, AL 错误例: MOV AX, BL ; 字长不同 MOV ES: AX, DX ; 寄存器与段无关,32,AX,SI,2233H,2233H,指令操作例:MOV SI,AX

14、 ; SI (AX) 指令执行前:(AX)=2233H 指令执行后:(AX)=2233H,(SI)=2233H,AX是累加器,结果存放在AX的话,执行时间要短些。 通用寄存器是处理器的一部分,采用寄存器寻址方式可以提高效率。,33,3. 直接寻址,指令中直接给出操作数的16位偏移地址 偏移地址也称为有效地址(EA, Effective Address) 默认的段寄存器为DS,但也可以显式地指定其他段寄存器称为段超越前缀 偏移地址也可用符号地址来表示,如ADDR、VAR 例: MOV AX , 2A00H MOV DX , ES: 2A00H MOV ES: 2A00H,DX MOV SI ,

15、TABLE_PTR,34,指令操作例:MOV AX,3102H AL (3102H) , AH (3103H),如果(DS)=2000H, (23102H) = CDH, (23103H) = ABH 则操作数的物理地址为: 20000H+3102H = 23102H 指令执行后:(AX) = ABCDH,MOV操作码,02H,31H,AH,AL,23102H,CDH,ABH,存储器,代码段,数据段,. .,35,4. 寄存器间接寻址,操作数的偏移地址(有效地址EA)放在寄存器中 只有SI、DI、BX和BP可作间址寄存器 例: MOV AX, BX MOV CL, CS:DI 错误例 : MO

16、V AX, DX MOV CL, AX,EA =,(BX) (BP) (SI) (DI),36,37,指令操作例:MOV AX,SI 若 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H 则指令执行后,(AX)=3344H。,38,5. 寄存器相对寻址(包括基址寻址和变址寻址),EA=间址寄存器的内容加上一个8或16位的位移量,寄存器相对寻址常用于存取表格或一维数组中的元素把表格的起始地址作为位移量,元素的下标值放在间址寄存器中(或反之),EA =,(BX) (BP) (SI) (DI),+,8位 16位,位移量,39,(1) 若EA =,B

17、X,SI,DI,+ 8位或16位偏移量,则操作数地址 DS: EA,(2) 若EA = BP + 8位或16位偏移量,则操作数地址:SS: EA,40,例: MOV AX, BX+8 MOV CX, TABLESI MOV AX, BP ; 默认段寄存器为SS 指令操作例:MOV AX,DATABX 若(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H 则物理地址 = 60000H + 1000H + 2A00H = 63A00H 指令执行后:(AX)=5566H (见下页图示),41,操作码,00 偏移量低,2A 偏移

18、量高,DS 6000,BX 1000,+ DATA 2A00,63A00,63A00H,AH,AL,AX,代码段,数据段,. . .,. . .,. . .,66H,55H,MOV AX,DATABX,42,6. 基址-变址寻址,若操作数的偏移地址: 由基址寄存器(BX或BP)给出 基址寻址方式 由变址寄存器(SI或DI)给出 变址寻址方式,由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址-变址寻址。,EA =,(BX) (BP),+,(SI) (DI),同一组内的寄存器不能同时出现。,43,例: MOV AX, BX SI MOV AX, BX+SI MOV

19、AX, DS: BP DI 错误例: MOV AX, BX BP MOV AX, DI SI,44,83000,操作码,DS 8000,BX 2000,+ SI 1000,83000H,AH,AL,AX,代码段,数据段,. . .,. . .,. . .,YY,XX,指令操作例:MOV AX,BXSI 假定:(DS)=8000H, (BX)=2000H, SI=1000H 则物理地址 = 80000H + 2000H + 1000H = 83000H 指令执行后: (AL)=83000H (AH)=83001H,45,7. 相对的基址-变址寻址,在基址-变址寻址的基础上再加上一个相对位移量 注

20、意事项同基址-变址寻址,EA =,(BX) (BP),+,(SI) (DI),+,8位 16位,位移量,例:,MOV AX,BASE SI BX MOV AX,BX+BASE SI MOV AX,BX+SI+BASE MOV AX,BX BASE SI MOV AX,BX+SI BASE,46,指令操作例:MOV AX,DATADIBX 若(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H 则指令执行后(AH)=83201H, (AL)=83200H,83200,83200H,AH,AL,AX,+ DATA 0200,操作码,代码段,数据段,. . .,

21、. . .,. . .,YY,XX,DS 8000,BX 2000,DI 1000,47,使用相对的基址-变址寻址方式可以很方便地访问二维数组。,基址寄存器,数组首地址,变址寄存器,数组元素行址,位移量,数组元素列址,(偏移地址),48,8. 隐含寻址,指令操作数是隐含的,在指令中未显式地指明。 例:MUL BL 指令隐含了被乘数AL及乘积AX 类似的指令还有:DIV、CBW、MOVS等,(AL)(BL)AX,49,分别指出下列指令中源操作数的寻址方式。 (1)MOV BX,1000H (2)ADD AX, SI4 (3)MOV DI,1000H (4)SUB AX, BP+DI+5 (5)M

22、OV AX, BX,50,指出下列指令中源操作数的寻址方式,并计算源操作数的物理地址。 设(DS)=2000H,(ES)=3000H,(SS)=4000H, (SI)=100H,(BX)=200H, (BP)=300H。 1)MOV AX,BX+16 2)MOV AX,0040H 3)MOV AX, BP 4)MOV AX,ES:BXSI 5)MOV AX, BXSI0050H,1)基址寻址;2020FH 2)直接寻址;20040H 3)间接寻址;40300H 4)基址变址寻址;30300H 5)基址变址寻址;20350H,51,设有关寄存器及存储单元的内容如下(DS)=1000H,(BX)=

23、 0100H,(SI)=0001H (10100H)= 12H,(10101H)= 34H,(10102H)= 78H,(11200H)= 2AH,(11201H)= 20H,(11202H)= 0B7H,(11203H)= 65H。 试说明下列各条指令执行完后,求(AX)是多少? (1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,1200H (4)MOV AX,BXSI; (5)MOV AX,1100HBXSI,(1)(AX)1200H (2)(AX)0100H (3)(AX)202AH (4)(AX)7834H (5)(AX)0B720H,52,小结,指令由( )和( )构成,如何取得操作数称为( ),操作码,操作数,寻址,53,寄存器间接、寄存器相对、基址变址、相对基址变址四种寻址方式的比较: 寻址方式 指令操作数形式 寄存器间接 只有一个寄存器(BX/BP/SI/DI之一) 寄存器相对 一个寄存器加上位移量 基址变址 两个不同类别的寄存器 相对基址-变址 两个不同类别的寄存器加上位移量,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1