微机原理第3章-指令系统ppt课件_第1页
微机原理第3章-指令系统ppt课件_第2页
微机原理第3章-指令系统ppt课件_第3页
微机原理第3章-指令系统ppt课件_第4页
微机原理第3章-指令系统ppt课件_第5页
已阅读5页,还剩234页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、秦红磊秦红磊 金天金天操作码操作码 操作数操作数汇编指令:汇编指令:操作码:指令操作类型;操作码:指令操作类型;操作数:指令所需操作数或操作数的地址;操作数可以有一个,操作数:指令所需操作数或操作数的地址;操作数可以有一个,也可以有两个,一个源操作数,一个目的操作数。也可以有两个,一个源操作数,一个目的操作数。 例:例: MOV AX,CX ;将;将CX的内容送入的内容送入AX中。中。 微机算机处置器的指令由几十种或上百种组成,微机算机处置器的指令由几十种或上百种组成,每种指令由两个字段每种指令由两个字段Field构成:构成: 8086的寻址方式是指寻得操作数来源得方式,有以下的寻址方式是指寻

2、得操作数来源得方式,有以下几种:几种: 1. 立刻数寻址立刻数寻址Immediate Addressing 2. 存放器寻址存放器寻址Register Addressing 3. 直接寻址直接寻址Direct Addressing 4. 间接寻址间接寻址Indirect Addressing)存储器寻址存储器寻址 由指令字节给出的信息求出操作数的地址称为有效地址由指令字节给出的信息求出操作数的地址称为有效地址EA(Efficient) 寻觅得到操作数有效地址的方法称为操作寻觅得到操作数有效地址的方法称为操作 数的寻址方法数的寻址方法 寻觅得到操作数有效地址和存取操作数的过程称为指令的寻址操作寻

3、觅得到操作数有效地址和存取操作数的过程称为指令的寻址操作 指令操作数部分直接给出指令的操作数,操作数与操指令操作数部分直接给出指令的操作数,操作数与操作码一同存入代码段中。立刻数有作码一同存入代码段中。立刻数有8位和位和16位。位。 例例 :MOV AL, 05H ;源操作数为立刻寻址;源操作数为立刻寻址 指令执行后,指令执行后,AL=05H,8位数据位数据05H存入存入AL存放器。存放器。 例例 :MOV AX,3064H ;源操作数为立刻寻址;源操作数为立刻寻址 指令执行后,指令执行后,AX=3064H,16位数据位数据3064H存入存入AX寄寄 存器。存器。 1. 1.立刻数寻址立刻数寻

4、址Immediate AddressingImmediate Addressing 立刻数寻址、存放器寻址的操作数,不用在取完指令后再到内存中取数。立刻数寻址、存放器寻址的操作数,不用在取完指令后再到内存中取数。寻址方式。其它寻址方式寻址方式。其它寻址方式 操作数存放在内存中,取完指令后,还需到内存取操作数存放在内存中,取完指令后,还需到内存取数,指令中给出的是该操作数的地址,包括段地址和偏移地址。数,指令中给出的是该操作数的地址,包括段地址和偏移地址。CPU 总线总线 内存内存DSESSSCSIP数据暂存器数据暂存器PSW标志标志存放器存放器执行部件控制电路执行部件控制电路指令译码器指令译码

5、器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL存放器组存放器组指指令令队队列列总线总线接口接口控制控制电路电路运运算算器器地地址址加加法法器器、指令1指令2指令3指令4、数据1数据2数据3、地址总线地址总线AB数据总线数据总线DB控制总线控制总线CB地地址址译译码码器器 存放器寻址方式的操作数是存放器的值,指令中直接存放器寻址方式的操作数是存放器的值,指令中直接运用存放器名,包括运用存放器名,包括8位或位或16位通用存放器和段存放器。可位通用存放器和段存放器。可运用的运用的16位存放器:位存放器:AX、BX、CX、DX、SI、DI、SP、BP;其中:;其中:AX、BX、CX

6、、DX可分成两可分成两8位运用。位运用。 例:例: MOV AX,CX ;AX CX INC CX ;CX CX1 2. 2.存放器寻址存放器寻址Register AddressingRegister Addressing 直接寻址方式的操作数的方式为:直接寻址方式的操作数的方式为:Variable或或Variable在直接寻址方式中,操作数的偏移地址在直接寻址方式中,操作数的偏移地址(有效地址有效地址EA)直接用指令直接用指令加以指定加以指定(有直接地址值和标号两种方式有直接地址值和标号两种方式)。它存放在代码段中指。它存放在代码段中指定操作码之后,但操作数普通存放在存储器的数据段中,所以必

7、定操作码之后,但操作数普通存放在存储器的数据段中,所以必需先求出操作数的物理地址,然后再访问存储器才干获得操作数。需先求出操作数的物理地址,然后再访问存储器才干获得操作数。段地址隐含的由段地址隐含的由DS 指定,也可以指定,也可以ES指定,但需在指令中指明。指定,但需在指令中指明。最后存储器地址为:最后存储器地址为:DS:偏移地址偏移地址 或或 ES:偏移地址。偏移地址。 例:例: MOV AX,ES:2000H 将将ES:2000H单元内容送入单元内容送入AX。 例:例: MOV AX,LABLE 或或 MOV AX,LABEL 将标号为将标号为LABLE(存放操作数单元的符号地址存放操作数

8、单元的符号地址) ,即,即 DS:LABLE中的内容送入中的内容送入AX。3.3.直接寻址直接寻址Direct AddressingDirect Addressing 例:例:MOV AX , 1000 H 假设假设 ( DS ) = 2000H 内存操作数的物理地址为:内存操作数的物理地址为: PA = ( DS )10H +EA = 2000H 10H + 1000H = 21000H 执行后执行后 (AX)= 3040H 21000 40 00A1内内存存 10 30指指令令思索:思索: 指令指令 MOV AX,1000H 与与MOV AX, 1000H有什么不同?有什么不同?4.4.间

9、接寻址间接寻址Indirect AddressingIndirect Addressing 按给出偏移地址方式的不同,分为以下按给出偏移地址方式的不同,分为以下5种:种:存放器间接寻址存放器间接寻址 MOV AL, BX 存放器相对寻址存放器相对寻址 MOV AL, BX + 10H 基址加变址存放器基址加变址存放器 MOV AL, BX + SI 相对基址加变址存放器相对基址加变址存放器 MOV AL, BX + SI + 10H 1存放器间接寻址存放器间接寻址 存放器间接寻址方式的操作数方式为:存放器间接寻址方式的操作数方式为:reg 操作数的有效地址包含在基址存放器操作数的有效地址包含在

10、基址存放器BX,基址指,基址指针针BP或一或一 个变址存放器个变址存放器SI或或DI中。存放器间接寻中。存放器间接寻址要用方括号括起来,以便与存放器操作数相区别。址要用方括号括起来,以便与存放器操作数相区别。例:例: MOV AX,BX;将由;将由BX决议的存储单元的内决议的存储单元的内容送到容送到AX存放器。存放器。0000000100020003CCAATAB: AH AL AA BB数据段数据段0002BXBBl 默许段存放器的关系:默许段存放器的关系:l 运用运用BX、SI、DI,默许段存放器为,默许段存放器为DSl (BX)l PA = ( DS )10H + (SI)l (DI)l

11、 运用运用BP,默许段存放器为,默许段存放器为SSlPA = ( SS )10H + ( BP ) 运用运用BX、SI、DI的存放器寻址,默许段存放器为的存放器寻址,默许段存放器为DSCPU 总线总线 内存内存DSESSSCSIP数据暂存器数据暂存器PSW标志标志存放器存放器执行部件控制电路执行部件控制电路指令译码器指令译码器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL存放器组存放器组指指令令队队列列总线总线接口接口控制控制电路电路运运算算器器地地址址加加法法器器、指令1指令2指令3指令4、数据1数据2数据3、地址总线地址总线AB数据总线数据总线DB控制总线控制总线CB地地

12、址址译译码码器器例:例: MOV AX , DI 假设假设 ( DS ) = 3000H ( DI ) = 2000H 那么内存操作数的物理地址为:那么内存操作数的物理地址为: PA = ( DS )10H + ( DI ) = 32000H 执行后执行后 (AX) = (32000H) = 400BH 32000 0B 058B指指 令令 40思索:思索: 指令指令 MOV AX, DI 与与MOV AX, DI有什么不同?有什么不同?用用 SI、DI、BX 、BP作为间接寻址允许段跨越作为间接寻址允许段跨越 指令中可以指定段跨越前缀来获得其他段中的指令中可以指定段跨越前缀来获得其他段中的数

13、据。数据。例:例:MOV ES:DI, AX MOV DX, DS:BP这种寻址方法可以用于表格处置。这种寻址方法可以用于表格处置。2存放器相对寻址方式存放器相对寻址方式 操作数在存储器内,指令中存放器内容与指令指操作数在存储器内,指令中存放器内容与指令指定的位移量定的位移量DISP之和作为操作数所在单元的有效之和作为操作数所在单元的有效地址。地址。 BX DISP8 SI DI BP DISP16有效地址有效地址 = 段存放器为段存放器为DS段存放器为段存放器为SS+物理地址物理地址 = DS* 16 +BX+DISP8SI、DI、DISP16类同。类同。物理地址物理地址= SS *16 +

14、 BP+DISP16操作数操作数 有效地址是一个基址或变址存放器的内容和指令中指有效地址是一个基址或变址存放器的内容和指令中指定的定的8 8位或位或1616位位移量位位移量displacementdisplacement之和。之和。 可可 用的存放器有用的存放器有 BX BX、DIDI 、SISI、BP , BP , 与存放器间接与存放器间接寻址一样寻址一样 如如: MOV AL, BX +10H: MOV AL, BX +10H MOV AH, DI+20H MOV AH, DI+20H MOV DL, 30H SI MOV DL, 30H SI MOV DH, 40H BP MOV DH,

15、 40H BP 例:例: MOV AX , BX+30H 假设假设 ( DS ) = 2000H ( BX ) = 1000H 那么内存操作数的物理地址为:那么内存操作数的物理地址为: PA = ( DS )10H + ( BX ) + 30H = 21030H 指令执行后:指令执行后: (AX) = (21030H) = 8976H 21030 76 3047指指 令令 898B3 3基址变址寻址方式:基址变址寻址方式: 操作数在存储器中,指令将基址存放器操作数在存储器中,指令将基址存放器BXBX或或BPBP与变址存放器与变址存放器SISI或或DIDI内容之和作为操作数所在存内容之和作为操作

16、数所在存储单元的有效地址。储单元的有效地址。 BX SI BP DIEA =+PA = DS * 16 + BX+ SI或或DIPA = SS * 16 + BP + SI或或DI 例:例: MOV AX,BX+DI 或或 MOV AX,BXDI DS:(BX)+(DI) 字存储单元内容送字存储单元内容送AX。例:例: MOV AX,BP+SI 或或 MOV AX,BPSI SS:(BP)+(SI) 字存储单元内容送字存储单元内容送AX。 l 默许段存放器由基址存放器决议默许段存放器由基址存放器决议,允许段跨越。允许段跨越。l 基址存放器为基址存放器为BX,默许段存放器为,默许段存放器为DS

17、l (SI)lPA = ( DS )10H + ( BX ) + l (DI)l 基址存放器为基址存放器为BP,默许段存放器为,默许段存放器为SS l (SI)lPA = ( SS )10H + ( BP ) + l (DI)运用运用BX的基址加变址寻址,默许段存放器为的基址加变址寻址,默许段存放器为DSCPU 总线总线 内存内存DSESSSCSIP数据暂存器数据暂存器PSW标志标志存放器存放器执行部件控制电路执行部件控制电路指令译码器指令译码器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL存放器组存放器组指指令令队队列列总线总线接口接口控制控制电路电路运运算算器器地地址址加

18、加法法器器、指令1指令2指令3指令4、数据1数据2数据3、地址总线地址总线AB数据总线数据总线DB控制总线控制总线CB地地址址译译码码器器例:例: MOV AX , BX + SI 假设假设 ( DS ) = 4000H ( BX ) = 2000H ( SI ) = 100H 那么内存操作数的物理地址为:那么内存操作数的物理地址为: PA = ( DS )10H + ( BX ) + ( SI ) = 42100H 指令执行后指令执行后 (AX) = (42100H) = 2345H 42100 45 008B指指 令令 234相对基址变址寻址方式相对基址变址寻址方式 操作数在存储器内,指令

19、将基址存放器操作数在存储器内,指令将基址存放器BX或或BP与变址存放器与变址存放器SI或或DI的内容之和再加上位移量的内容之和再加上位移量8位或位或16位,得到操作数所在单元的有效地址。位,得到操作数所在单元的有效地址。 BX SI DISP8 BP DI DISP16有效地址有效地址= +l 默许段存放器由基址存放器决议默许段存放器由基址存放器决议, 与基址加变址寻址一样与基址加变址寻址一样.l 允许段跨越。允许段跨越。l 基址存放器为基址存放器为BX,默许段存放器为,默许段存放器为DS l (SI)lPA = ( DS )10H + ( BX ) + + 偏移量偏移量 l (DI)l 基址

20、存放器为基址存放器为BP,默许段存放器为,默许段存放器为SS l (SI)lPA = ( SS )10H + ( BP ) + + 偏移量偏移量 l (DI)例:例: MOV AX , BX + SI + 10H 假设假设 ( DS ) = 4000H ( BX ) = 3000H ( SI ) = 200H 那么内存操作数的物理地址为:那么内存操作数的物理地址为: PA = ( DS )10H + ( BX ) + ( SI ) + 10H = 43210H 指令执行后指令执行后 (AX) = (43210H) = 8877H 43210 77 1040指指 令令 888B 8086的指令系

21、统包含的指令系统包含133条根本指令,这条根本指令,这些指令功能可以分为些指令功能可以分为6类:类: 1. 数据传送指令数据传送指令(Data transfer) 2. 算术运算指令算术运算指令(Arithmetic) 3. 逻辑指令与移位指令逻辑指令与移位指令(Logic&Shift) 4. 控制转移指令控制转移指令(Control transfer) 5. 处置机控制指令处置机控制指令(Processor Control) 6. 串操作指令串操作指令(String manipulation) 一一. 数据传送指令数据传送指令 数据传送指令是最简单、最常用的一类指令,数据传送指令是最

22、简单、最常用的一类指令,它是担任把数据、地址、或立刻数传送到存放器它是担任把数据、地址、或立刻数传送到存放器或存储单元中或存储单元中 。地址总线地址总线 AB存存储储器器I/O接接口口输输入入设设备备I/O接接口口数据总线数据总线 DB控制总线控制总线 CB输输出出设设备备C PU存放器,存储器,存放器,存储器,I/O端口端口 按传送内容,可分为四类:按传送内容,可分为四类:1。通用数据传送。通用数据传送 MOV, PUSH, POP, XCHG2. 累加器公用传送累加器公用传送 IN, OUT,XLAT 3. 地址传送地址传送 LEA, LDS, LES4. 标志传送标志传送 PUSHF,

23、POPF, LAHF, SAHF 特点:特点: 1. 除除POPF、SAHF外,其他传送指令对标志位均无影响外,其他传送指令对标志位均无影响 2. 独一允许以段存放器做操作数的指令独一允许以段存放器做操作数的指令 且只需且只需MOV、PUSH、POP这三条允许这三条允许1. 通用传送指令通用传送指令 MOV、PUSH、POP、XCHGreg/mem/segreg regreg/segreg memreg/mem segregreg/mem data 可实现可实现1MOV传送指令传送指令 格式格式 MOV dst,src 执行执行 ( dst ) ( src )例例 : reg/mem/segr

24、eg reg reg/mem/segreg reg 通用存放器通用存放器/ /存储器存储器/ /段存放器段存放器通用存放器通用存放器 MOV AL , BL MOV AL , BL MOV BX , AL MOV BX , AL MOV DS , AX MOV DS , AX reg/segreg mem reg/segreg mem 通用存放器通用存放器/ /段存放器段存放器 存储存储器器 MOV AL , BX MOV AL , BX MOV DS , BX+SI MOV DS , BX+SI reg/mem segreg reg/mem segreg 通用存放器通用存放器/ /存储器存储

25、器 段存段存放器放器 MOV BX , CS MOV BX , CS MOV BX , DS MOV BX , DS reg/mem data reg/mem data 通用存放器通用存放器/ /存储器存储器 立刻立刻数数 MOV Al , 9 MOV Al , 9 MOV BX , OFFSET buffer MOV BX , OFFSET buffer MOV BYTE PTR value , 0 MOV BYTE PTR value , 0 MOV WORD PTR BX , 1 MOV WORD PTR BX , 1MOV指令特点及本卷须知指令特点及本卷须知: 双操作数指令双操作数指令

26、 (留意双操作指令的特点留意双操作指令的特点 可进展字节或字传送可进展字节或字传送 不允许存储器传送到存储器不允许存储器传送到存储器MOV BX , value MOV DI, SI MOV AX ,value MOV BX ,AXMOV AL ,SI MOV DI ,ALl 可对可对 DS、ES、SS 赋值赋值l 但不允许立刻数直接传送给段存放器但不允许立刻数直接传送给段存放器lMOV DS,AX lMOV ES ,BX lMOV DS,1000H lMOV AX ,1000HlMOV DS,AXl CS不能做目的操作数不能做目的操作数, 不能经过传送指令改动不能经过传送指令改动CS的值的值

27、l MOV CS , AX l MOV AX, CS l 不允许段存放器传送到段存放器不允许段存放器传送到段存放器 lMOV ES ,DS lMOV AX , DS lMOV ES , AXD:MASMDEBUG-A1693:0100 MOV ES, DS Error1693:0100 MOV AX, DS1693:0102 MOV ES, AX1693:0104- MOV指令运用指令运用例:例:实现将实现将AREA1开场的开场的100个数据传送到个数据传送到AREA2开场的单元。开场的单元。AREA1:AREA2:100个数据个数据分析题意:分析题意: 可以用可以用200条条MOV指令来完成

28、指令来完成100个数据传送,个数据传送, 指令操作反复,每个数据传送后的地址是变化的。指令操作反复,每个数据传送后的地址是变化的。 可以利用循环,可以利用循环,但每循环一次要修正地址源地址和目的地址,但每循环一次要修正地址源地址和目的地址,必需把地址放在存放器当中,用存放器间接寻址来寻觅操作数必需把地址放在存放器当中,用存放器间接寻址来寻觅操作数.得到如下程序:得到如下程序:MOV SI,OFFSET AREA1 MOV DI,OFFSET AREA2 MOV CX,100AGAIN :MOV AL,SIMOV DI,AL INC SI ;修正地址指针;修正地址指针 INC DI ;修正地址指

29、针;修正地址指针 DEC CX;修正个数;修正个数 JNZ AGAIN2PUSH (Push word onto stack) POP (Pop word off stack) 这是两条堆栈操作指令。这是两条堆栈操作指令。 1 先引见一下什么是堆栈,为什么需求堆栈先引见一下什么是堆栈,为什么需求堆栈 堆栈是按照先进后出原那么组织的一段内存区域。堆栈是按照先进后出原那么组织的一段内存区域。 通常用于存放一些重要数据通常用于存放一些重要数据, 如:程序的地址、或是需求恢复的数据。如:程序的地址、或是需求恢复的数据。为方便数据的存放和恢复,为方便数据的存放和恢复, 设置专门的指针,指向堆栈中要操作的

30、单元。设置专门的指针,指向堆栈中要操作的单元。 段值由段值由 SS 给出,偏移地址由给出,偏移地址由 SP 给出给出 SS 堆栈段存放器堆栈段存放器 (stack segment) SP 堆栈指针存放器堆栈指针存放器 (stack point)SS:SP 特点:特点: 下推式的规定堆栈设置在堆栈段内改动下推式的规定堆栈设置在堆栈段内改动SP的内容,的内容, 随着推入堆栈内容添加,随着推入堆栈内容添加,SP的值减少。的值减少。 先进后出任务原那么先进后出任务原那么Last In First Out 简称简称LIFO) 堆栈在内存中的情况:堆栈在内存中的情况:.偏移地址偏移地址物理地址物理地址00

31、000H(低地址)00000H(低地址)90000H90000H9E200H9E200H9FFFFH9FFFFHFFFFHFFFFH(SP)=E200H(SP)=E200H0000H0000H堆堆栈栈段段堆栈在内存中的情况堆栈在内存中的情况SS:SP SS:SP (src)SS:SP SS:SP (dst) PUSH 入栈操作入栈操作格式格式 PUSH src 执行执行 SP SP- 2 SS:SP src 特点特点: 单操作数指令单操作数指令 操作数为操作数为16位,可以是位,可以是reg/segreg/mem, 不可以是不可以是datareg : AX, BX, CX, DX, SI, D

32、I, BP, BXsegreg : CS, DS, ES, SSmem : 字类型字类型SS:SP SS:SP (src)例:例: PUSH AX假设执行前:假设执行前: SS= 2000HSP= 1002HSS:SP= 2019H AX= 1234H3B2A10低低高高20地址地址SS:SP2000:1002指令执行前指令执行前(AX)=1234h那么执行那么执行PUSH AX后:后: SS= 2000HSP= 1000HSS:SP= 1234HAX= 1234H123410低低高高20地址地址SS:SP2000:1000指令执行后指令执行后(AX)=1234h不变不变 减减2 变变不变不变

33、 特点特点:单操作数指令单操作数指令操作数为操作数为16位,可以是位,可以是reg/segreg/mem, 不可以是不可以是datareg : AX, BX, CX, DX, SI, DI, BP, BXsegreg : DS, ES, SS, 不允许是不允许是CSmem : 字类型字类型 POP出栈操作出栈操作SS:SP SS:SP (dst)格式格式 POP dst 执行执行 dst SS:SP SP SP+ 2 假设执行前:假设执行前: SS= 2000HSP= 1000HSS:SP= 1234H BX= 5678H123410低低高高20SS:SP2000:1000指令执行前指令执行前

34、地址地址(BX)=5678h例:例: POP BX123410低低高高20SS:SP2000:1002指令执行后指令执行后地址地址(BX)=1234h那么执行那么执行POP BX后:后: SS= 2000HSP= 1002H SS:SP= 2019H BX= 1234H 不变不变 加加2 变变 变变 堆栈运用的场所堆栈运用的场所 用堆栈保管恢复信息用堆栈保管恢复信息 子程序的调用、前往以及中断调用、前往子程序的调用、前往以及中断调用、前往 用堆栈传送数据用堆栈传送数据 程序设计中引见程序设计中引见主程序主程序 子程序子程序:子程序:在一个实践程序中,有些操作要执子程序:在一个实践程序中,有些操

35、作要执行多次,行多次, 把要重把要重 复执行复执行subroutine操作编操作编为子程序。为子程序。 也常把一些常用的操作规范化、通也常把一些常用的操作规范化、通用化的子程序。用化的子程序。主程序主程序Main program往往要调用往往要调用子程序子程序 或处置中断或处置中断, 暂停主程序,执行子程序或中断效力暂停主程序,执行子程序或中断效力程序。程序。留意:留意:SP堆栈指针堆栈指针,一直指向栈顶。一直指向栈顶。SP初值用初值用MOV SP, data来设定。来设定。 下边详细阐明一下堆栈用途:下边详细阐明一下堆栈用途:q 存放存放CPU存放器或存储器中暂时不运用的数据存放器或存储器中

36、暂时不运用的数据,q 运用数据时将其弹出:运用数据时将其弹出:q PUSH AX; 将将(AX)入栈入栈.11112222(SP)-2(SP)-2(SP)-1(SP)-1(SP)(SP)堆堆栈栈段段PUSH AX前PUSH AX前(AX).22H22H11H11H.11H11H22H22H(SP)(SP)(SP)+1(SP)+1(SP)+2(SP)+2堆堆栈栈段段PUSH AX后PUSH AX后(AX)运用数据时将其弹出:运用数据时将其弹出:POP BX.22H22H11H11H.33H33H44H44HBXBX(SP)(SP)(SP)+1(SP)+1(SP)+2(SP)+2堆堆栈栈段段POP

37、 BX前POP BX前.22H22H11H11H.11H11H22H22HBXBX(SP)-2(SP)-2(SP)-1(SP)-1(SP)(SP)堆堆栈栈段段POP BX后POP BX后q 调用子程序或过程或发生中断时要维护断点的地址,调用子程序或过程或发生中断时要维护断点的地址,q 子程序或中断前往时恢复断点。子程序或中断前往时恢复断点。子程序嵌套子程序嵌套.断点2(L)断点2(L)断点2(H)断点2(H)断点1(L)断点1(L)断点1(H)断点1(H).(SP)(SP)先先压压入入后后压压入入先先弹弹出出后后弹弹出出堆堆栈栈段段断点地址压入和弹出情况断点地址压入和弹出情况主主程程序序子子程

38、程序序1 1子子程程序序2 2断点1断点1断点2断点2弹出弹出断点2断点2弹出弹出断点1断点1本卷须知本卷须知 堆栈是一重要数据构造,运用堆栈应有明确目的。堆栈是一重要数据构造,运用堆栈应有明确目的。 不乱用堆栈操作,不乱修正堆栈内容。不乱用堆栈操作,不乱修正堆栈内容。PUSH、POP、PUSHF、POPF、CALL、RET、INT、IRET 乱修正乱修正 SS 和和 SP 的内容的内容包括包括 乱用乱用BP参与的存储器操参与的存储器操作数作数 乱用指令乱用指令l PUSH和和POP 指令只能对字操作。指令只能对字操作。l PUSH AL l POP BYTE PTR BX l 可以对段存放器

39、操作可以对段存放器操作l 但但POP不能对不能对CS操作操作l PUSH DSl PUSH CSl POP ESl POP CS 自学堆栈运用:比较下边两个程序运转结果?自学堆栈运用:比较下边两个程序运转结果? 例:用例:用BP的基址指令的基址指令 替代替代POP指令指令MOV BP,SPPUSH AXPUSH BXPUSH CXMOV CX,BP-6 MOV BX,BP-4MOV AX,BP-2ADD SP, 6例例 : 压入堆栈的内容压入堆栈的内容与弹出内容顺序相反与弹出内容顺序相反PUSH AXPUSH BXPUSH CXPOP CXPOP BX POP AX3XCHG交换指令交换指令

40、格式格式 XCHG oprd1,oprd2 执行执行 (oprd1) (oprd2)reg regreg memmem reg 可实现可实现例例 XCHG AX, BX 字操作字操作 执行前执行前AX= 1122H BX= 3344H 执行后执行后AX= 3344H BX= 1122H 例例 XCHG AH, BL 字节操作字节操作 执行前执行前AX= 1122H BX= 3344H 执行后执行后AX= 4422H BX= 3311HXCHG oprd1,oprd2 本卷须知本卷须知: 双操作数指令双操作数指令可进展字或字节操作可进展字或字节操作,不影响标志位。不影响标志位。不允许对立刻数、段

41、存放器做操作数不允许对立刻数、段存放器做操作数 XCHG AX, 4 XCHG BX, DS 存储器之间不能交换,两个操作数中必需有一个在存存储器之间不能交换,两个操作数中必需有一个在存放器中;放器中; XCHG BX,DI(错错2. 累加器公用传送指令累加器公用传送指令每个外设要占几个端口:数据口,形状口和控制口。每个外设要占几个端口:数据口,形状口和控制口。CPUCPUI/OI/O设备设备译译码码数据端口数据端口DBDBABABCBCBI/O接口I/O接口状态端口状态端口控制端口控制端口其中:其中: A9=1,表示扩展槽上的口地址。,表示扩展槽上的口地址。入一个字入一个字必需经过累加器必需

42、经过累加器AX字或字或AL字节输入字节输入数据。数据。必需经过累加器必需经过累加器AX 字或字或AL 字节输出字节输出数据。数据。例例1:实现:实现(29H)28HDATA_WORD长格式长格式: IN AX,28H MOV DATA_WORD,AX例例2:从端口:从端口3FCH 送一个字到送一个字到AX存放器存放器短格式短格式: MOV DX,3FCH IN AX,DX ; AL3FCH, AH3FDH 例例3:实现将:实现将AL) (05H)长格式长格式: OUT 5,AL;05HALXLAT指令运用方法:指令运用方法: 先建立一个字节表格;先建立一个字节表格; 表格首偏移地址存入表格首偏

43、移地址存入BX; 需求转换代码的序号相对与表格首地址位移需求转换代码的序号相对与表格首地址位移量存入量存入AL; 表中第一个元素的序号为表中第一个元素的序号为0 执行执行XLAT指令后,表中指定序号的元素存于指令后,表中指定序号的元素存于AL中。中。 (AL)为转换的代码。为转换的代码。元素元素A)执行指令序列:执行指令序列:MOV BX,OFFSET Hex_tableMOV AL,0AH XLAT Hex_table假设:假设:DS=F000H, Hex_table=0040H AL=0AH执行执行XLAT以后:以后: AL=41H=F004AH,即即“A的的ASCII码。码。30H30H

44、31H31H32H32H.39H39H41H41H42H42H.46H46H.Hex_tableHex_tableHex_table+1Hex_table+1Hex_table+2Hex_table+2Hex_table+0AHHex_table+0AHHex_table+0BHHex_table+0BHHex_table+0FHHex_table+0FHFFBBAA9911220016进制数的进制数的ASCII码表码表(1) LEA有效地址传送有效地址传送格式格式 LEA reg, mem执行执行 reg mem的的EA 即即 存放器存放器 存储器操作数的偏移地址存储器操作数的偏移地址 执行

45、后执行后 ( BX ) = 1000H ( BX ) = 1000H留意:留意: OFFSET是汇编程序提供的一个操作符,不是是汇编程序提供的一个操作符,不是CPU的指令的指令.LEA BX, buffer例例 buffer是一个符号地址表示的内存操作数是一个符号地址表示的内存操作数(变量变量)。.12h34h56h.buffer内存内存DS: 1000h假设变量假设变量buffer的偏移地址的偏移地址= 1000H等价于等价于 MOV BX MOV BX ,OFFSET bufferOFFSET buffer LEA reg, mem特点及本卷须知:特点及本卷须知:目的操作数目的操作数reg

46、应是应是16位通用存放器位通用存放器 LEA ES, BX LEA AL, buffer LEA 6, BX+SI LEA DI, buffer 源操作数应是存储器操作数源操作数应是存储器操作数 LEA BX, AX 传送的是内存单元的有效地址,与其内容无关。传送的是内存单元的有效地址,与其内容无关。.12h34h56h.buffer内存内存用于写远地址指针。用于写远地址指针。例例: 假设:假设: (DS)=C 000H指令指令: LDS SI, 0010H执行指令后执行指令后: (SI)=0180H (DS)=2000H 80H80H01H01H00H00H20H20HC000H:0010H

47、C000H:0010H(DS)(DS)C0011HC0011HC0012HC0012HC0013HC0013H.存储器存储器用于写远地址指针。用于写远地址指针。例例: 假设:假设: (DS)=B 000H (BX)=080AH指令指令: LES DI, BX执行指令后执行指令后: (DI)=05A2H (ES)=4000HA2HA2H05H05H00H00H40H40HB000H:080AHB000H:080AH(DS)(DS)B080BHB080BHB080CHB080CHB080DHB080DH.存储器存储器(BX)(BX)格式:格式:LAHF ;AHPSW的低字节的低字节功能:标志存放器

48、低八位功能:标志存放器低八位 AH。SFSFZFZFAFAFPFPFCFCF0 01 12 23 34 45 56 67 7TFTFIFIFDFDFOFOF8 89 91010111112121313141415150 01 12 23 34 45 56 67 7FLAGSFLAGSAHAHLAHF指令操作图表示指令操作图表示(2)SAHFStore AH into flags格式:格式:SAHF ;PSW的低字节的低字节AH功能:功能:AH送标志存放器低八位。送标志存放器低八位。SFSF ZFZFAFAFPFPFCFCF0 01 12 23 34 45 56 67 7TFTFIFIFDFDF

49、OFOF8 89 91010111112121313141415150 01 12 23 34 45 56 67 7FLAGSFLAGSAHAHSS:SP SS:SP (PSW) (4). POPF标志出栈标志出栈格式格式 POPF执行执行 PSW SS:SP SP SP+ 2SS:SP SS:SP (PSW)(3). PUSHF标志入栈标志入栈格式格式 PUSHF执行执行 SP SP- 2 SS:SP PSW留意:留意:1 标志位的影响标志位的影响LAHF、PUSHF不影响标志位不影响标志位,SAHF、POPF由装入的值确定标志位的值,由装入的值确定标志位的值, 即影响标志位。即影响标志位。

50、2PUSH F、POPF用于维护调用过程前用于维护调用过程前PSW),过程前往后过程前往后恢复。恢复。例:例:PUSH AXPUSH CXPUSH FCALL TRANSPOPFPOP CXPOP AX二二. 算术运算指令算术运算指令二二进进制制运运算算十十进进制制调调整整加加 ADD, ADC, INC AAA, DAA减减 SUB, SBB, DEC, NEG, CMP AAS, DAS乘乘 MUL, IMUL AAM除除 DIV, IDIV AAD 符符号号扩扩展展指指令令: CBW、CWD指令分类:指令分类:特点:特点: 带符号数用补码表示带符号数用补码表示 如如 MOV AX, -1

51、 等价于等价于 MOV AX, 0FFFFh 对加、减运算,不区分无符号数、带符号数对加、减运算,不区分无符号数、带符号数 对乘、除运算,区分无符号数、带符号数对乘、除运算,区分无符号数、带符号数 可进展字节或字操作可进展字节或字操作 影响形状标志影响形状标志 十进制运算方法:十进制运算方法: 当数据用组合紧缩或分别非紧缩当数据用组合紧缩或分别非紧缩BCD码表示时,码表示时,为使运算的结果仍为为使运算的结果仍为BCD码表示,需对结果进展调整。码表示,需对结果进展调整。 十进制运算十进制运算 = 二进制运算二进制运算 + 十进制调整十进制调整 十进制数码十进制数码012348421 BCD 码码

52、00000001001000110100十进制数码十进制数码567898421 BCD 码码01010110011110001001BCD码码 Binary Coded Decimal 用二进制编码表示十进制数。用二进制编码表示十进制数。 常用常用8421 BCD码码, 与十进制数码对应关系:与十进制数码对应关系:例例 48的的BCD码为码为 0100 1000BCD 根据在内存的存放方式,分组合根据在内存的存放方式,分组合BCD码和分别码和分别 BCD码码 组合组合BCD码码(又称紧缩又称紧缩BCD码码Packed BCD format 用用4位二进制数表示一个十进制数位,一字节存放位二进制

53、数表示一个十进制数位,一字节存放2个个BCD码。码。 整个十进制数方式为一个顺序的整个十进制数方式为一个顺序的4位为一组的数串。位为一组的数串。例:例:9502d 的紧缩的紧缩BCD码应表示为:码应表示为: 9 5 0 2分别分别BCD码又称非紧缩码又称非紧缩BCD码码Unpacked BCD format 用用8位为一组表示一个十进制数位,一字节存放位为一组表示一个十进制数位,一字节存放1个个BCD码。码。 8位中的低位中的低4位表示位表示8421的的BCD码,而高码,而高4位没有意义。位没有意义。 例:例:9502d的非紧缩的非紧缩BCD码那么表示为:码那么表示为: 9 5 0 21 1

54、0 0 0 0 1 10 0 1 1 0 0 1 10 0 0 0 0 0 0 00 0 0 0 1 1 0 01 1 0 0 0 0 1 1 0 0 1 1 0 0 1 10 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0高高4位位0011无意义无意义0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0当数据用组合或分别当数据用组合或分别BCD码表示时,码表示时,为使运算的结果仍为为使运算的结果仍为BCD码表示,需对结果进展调整。码表示,需对结果进展调整。 十进制运算十进制运算 = 二进制运算二进制运算 + 十进制调整十进制调整例例(0000 1000 ) 紧缩紧缩BC

55、D + (0000 1001) 紧缩紧缩BCD = (0001 0111 ) 紧缩紧缩BCD计算机计算过程计算机计算过程 看作紧缩看作紧缩BCD 0000 1000 08 + 0000 1001 09 0001 0001 11 二进制运算二进制运算十进制调整十进制调整+ 0000 0110 + 0000 0110 0001 0111 17 0001 0111 171. 加法运算指令加法运算指令指指令令格格式式执执 行行 操操 作作 ADD dst, src (dst) (dst) + (src) ADC dst, src (dst) (dst) + (src) + CF INC oprd (o

56、prd) (oprd) + 1l ADD、ADC为双操作数指令为双操作数指令l INC为单操作数指令为单操作数指令l 除除INC指令不影响指令不影响CF外,其他指令外,其他指令6个形状标志均据结果个形状标志均据结果置位置位lADC带进位加法,实现字以上运算进位是上条指令运算的带进位加法,实现字以上运算进位是上条指令运算的进位进位OF DF IF TF SF ZFAFPFCF CFA1H 1100 1111 1010 0001 CFA1H 1100 1111 1010 0001 + 62A0H + 0110 0010 + 62A0H + 0110 0010 1010 0000 1010 0000

57、 111 1 1 1 1111 111 1 1 1 1111 1 1 3241H 0011 0010 3241H 0011 0010 0100 00010100 0001例例1 加法指令:加法指令: 编程完成编程完成 CFA1H + 62A0HMOV DX,0CFA1HADD DX,62A0H执行后执行后:DX=3241H CF=1,OF=0,SF=0, ZF=0留意:留意:CF和和OF的判别方法的判别方法)三组指令执行后的结果均为:三组指令执行后的结果均为:(AL)=0FDH, CF=0, OF=0, SF=1, ZF=0(AL)=0FDH, CF=0, OF=0, SF=1, ZF=0 M

58、OV AL, 0F1H ADD AL, 0CH MOV AL, 241 ADD AL, 12 MOV AL, -15 MOV AL, -15 ADD AL, 12 ADD AL, 12第一章中的例题第一章中的例题 F1 H F1 H+ + 0C H0C H FD HFD H二进制二进制运运 算算241241+ + 1212 253253看看 作作无符号数无符号数(-15)+ 12 (-3)看看 作作带符号数带符号数B0F1040C、第一条第一条指指 令令第二条第二条指指 令令三组机器码一样:三组机器码一样:对加、减运算,对加、减运算,CPU计算时不区分无符号数、带符号数计算时不区分无符号数、带

59、符号数例例2 加加1指令指令 : INC AL 执行前执行前 AL= FFH 执行后执行后: AL=00H CF=不变,不变,OF=0,ZF=1,SF=0 FFH FFH + 01H+ 01H 11 11 00H00H 01FFH 01FFH+ + 0001H0001H进位进位11 11 0200H 0200H 例例3 value 是一个字变量是一个字变量 OFFSET value = 1000H DS=2000H,21000H=01FFHvalue FF21000H 01执行前执行前value 0021000H 02执行后执行后执行后:执行后:21000H=0200H CF=不变,不变,OF

60、=0,ZF=0,SF=0留意:留意: INC value是内存单元内容加是内存单元内容加1,而非地址加,而非地址加1INC value或写成或写成:INC value例例4 将将buffer为首的为首的4个字节内存内容相加,存放在个字节内存内容相加,存放在AL中。中。 buffer 1AB7C5D6留意假设编程如下留意假设编程如下,MOV CX, 4MOV AL, 0 exit: ADD AL, buffer INC buffer DEC CXJNZ exit不能实现不能实现, 为什么?为什么? . MOV CX, 4 LEA BX, buffer MOV AL, 0exit: ADD AL, BX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论