微机原理第3章指令系统课件.ppt

上传人(卖家):三亚风情 文档编号:3332356 上传时间:2022-08-20 格式:PPT 页数:239 大小:6.65MB
下载 相关 举报
微机原理第3章指令系统课件.ppt_第1页
第1页 / 共239页
微机原理第3章指令系统课件.ppt_第2页
第2页 / 共239页
微机原理第3章指令系统课件.ppt_第3页
第3页 / 共239页
微机原理第3章指令系统课件.ppt_第4页
第4页 / 共239页
微机原理第3章指令系统课件.ppt_第5页
第5页 / 共239页
点击查看更多>>
资源描述

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;

6、其中:;其中:AX、BX、CX、DX可分成两可分成两8位使用。位使用。例:例:MOV AX,CX ;(;(AX)(CX)INC CX ;(;(CX)(CX)1 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 将标号为将标号为LABL

8、E(存放操作数单元的符号地址存放操作数单元的符号地址),即,即 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 操作数的有效地址包含在基址寄存器操作数的有效地址包含在基址寄存器BX,基址

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

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

12、I 若若(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作为间接寻址允许段跨越作为间接寻址允许段跨越 指令中可以指定段跨越前缀来取得其他段中的数据。指令中可以指定段跨越前缀来取得其他段中的数据。例:例:MOV ES:DI,AX MOV DX,DS:BP这种寻址方法可以用于表格处理。这种寻址方法可

13、以用于表格处理。(2)寄存器相对寻址方式)寄存器相对寻址方式 操作数在存储器内,指令中寄存器内容与指令指定的位移操作数在存储器内,指令中寄存器内容与指令指定的位移量(量(DISP)之和作为操作数所在单元的有效地址。)之和作为操作数所在单元的有效地址。(BX)DISP8 (SI)(DI)(BP)DISP16有效地址有效地址=段寄存器为段寄存器为DS段寄存器为段寄存器为SS+物理地址物理地址=(DS)*16+(BX)+DISP8(SI)、()、(DI)、)、DISP16类同。类同。物理地址物理地址=(SS)*16+(BP)+DISP16操作数操作数 有效地址是一个基址或变址寄存器的内容和指令中指定

14、有效地址是一个基址或变址寄存器的内容和指令中指定的的8 8位或位或1616位位移量(位位移量(displacementdisplacement)之和。)之和。可可 用的寄存器有用的寄存器有 BXBX、DIDI、SISI、BP,BP,与寄存器间与寄存器间接寻址相同接寻址相同 如如:MOV AL,:MOV AL,BX+10H BX+10H MOV AH,MOV AH,DI+20H DI+20H MOV DL,MOV DL,30H SI 30H SI MOV DH,MOV DH,40H BP 40H BP 例例:MOV AX,BX+30H 若若(DS)=2000H (BX)=1000H 则内存操作数

15、的物理地址为:则内存操作数的物理地址为:PA=(DS)10H+(BX)+30H =21030H 指令执行后:指令执行后:(AX)=(21030H)=8976H 21030 76 3047指指 令令 898B(3 3)基址变址寻址方式:)基址变址寻址方式:操作数在存储器中,指令将基址寄存器(操作数在存储器中,指令将基址寄存器(BXBX或或BPBP)与变)与变址寄存器(址寄存器(SISI或或DIDI)内容之和作为操作数所在存储单元的有)内容之和作为操作数所在存储单元的有效地址。效地址。(BX)(SI)(BP)(DI)EA=+PA=(DS)*16 +(BX)+(SI)或()或(DI)PA=(SS)*

16、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 默认段寄存器由基址寄存器决定默认段寄存器由基址寄存器决定,允许段跨越。允许段跨越。基址寄存器为基址寄存器为BX,默认段寄存器为,默认段寄存器为DS (SI)PA=(DS)10H+(BX)+(DI)基址寄存器为基址寄存器为BP,默认段寄存器为,默认段寄存器为SS (SI)PA=(SS)10H+(BP)+

17、(DI)使用使用BX的基址加变址寻址,默认段寄存器为的基址加变址寻址,默认段寄存器为DSCPU 总线总线 内存内存DSESSSCSIP数据暂存器数据暂存器PSW标志标志寄存器寄存器执行部件控制电路执行部件控制电路指令译码器指令译码器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器组寄存器组指指令令队队列列总线总线接口接口控制控制电路电路运运算算器器地地址址加加法法器器、指令指令1指令指令2指令指令3指令指令4、数据数据1数据数据2数据数据3、地址总线地址总线AB数据总线数据总线DB控制总线控制总线CB地地址址译译码码器器例:例:MOV AX,BX+SI 若若(DS)=40

18、00H (BX)=2000H (SI)=100H 则内存操作数的物理地址为:则内存操作数的物理地址为:PA=(DS)10H+(BX)+(SI)=42100H 指令执行后指令执行后 (AX)=(42100H)=2345H 42100 45 008B指指 令令 23(4)相对基址变址寻址方式)相对基址变址寻址方式 操作数在存储器内,指令将基址寄存器(操作数在存储器内,指令将基址寄存器(BX或或BP)与变址寄)与变址寄存器(存器(SI或或DI)的内容之和再加上位移量()的内容之和再加上位移量(8位或位或16位),得到位),得到操作数所在单元的有效地址。操作数所在单元的有效地址。(BX)(SI)DIS

19、P8 (BP)(DI)DISP16有效地址有效地址=+l 默认段寄存器由基址寄存器决定默认段寄存器由基址寄存器决定,与基址加变址寻址相同与基址加变址寻址相同.允许段跨越。允许段跨越。基址寄存器为基址寄存器为BX,默认段寄存器为,默认段寄存器为DS (SI)PA=(DS)10H+(BX)+偏移量偏移量 (DI)基址寄存器为基址寄存器为BP,默认段寄存器为,默认段寄存器为SS (SI)PA=(SS)10H+(BP)+偏移量偏移量 (DI)例:例:MOV AX,BX+SI+10H 若若(DS)=4000H (BX)=3000H (SI)=200H 则内存操作数的物理地址为:则内存操作数的物理地址为:

20、PA=(DS)10H+(BX)+(SI)+10H =43210H 指令执行后指令执行后 (AX)=(43210H)=8877H 43210 77 1040指指 令令 888B 8086的指令系统包含的指令系统包含133条基本指令,这条基本指令,这些指令功能可以分为些指令功能可以分为6类类:1.数据传送指令数据传送指令(Data transfer)2.算术运算指令算术运算指令(Arithmetic)3.逻辑指令与移位指令逻辑指令与移位指令(Logic&Shift)4.控制转移指令控制转移指令(Control transfer)5.处理机控制指令处理机控制指令(Processor Control)

21、6.串操作指令串操作指令(String manipulation)(String manipulation)一一.数据传送指令数据传送指令 数据传送指令是最简单、最常用的一类指令,它是数据传送指令是最简单、最常用的一类指令,它是负责把数据、地址、或立即数传送到寄存器或存储单元负责把数据、地址、或立即数传送到寄存器或存储单元中中。地址总线地址总线 AB存存储储器器I/O接接口口输输入入设设备备I/O接接口口数据总线数据总线 DB控制总线控制总线 CB输输出出设设备备CPU寄存器,存储器,寄存器,存储器,I/O端口端口 按传送内容,可分为四类:按传送内容,可分为四类:1。通用数据传送通用数据传送

22、MOV,PUSH,POP,XCHG2.累加器专用传送累加器专用传送 IN,OUT,XLAT 3.地址传送地址传送 LEA,LDS,LES4.标志传送标志传送 PUSHF,POPF,LAHF,SAHF 特点:特点:1.除除POPF、SAHF外,其他传送指令对标志位均无影响外,其他传送指令对标志位均无影响 2.唯一允许以段寄存器做操作数的指令唯一允许以段寄存器做操作数的指令 且只有且只有MOV、PUSH、POP这三条允许这三条允许1.通用传送指令通用传送指令 MOV、PUSH、POP、XCHGreg/mem/segreg regreg/segreg memreg/mem segregreg/mem

23、 data 可实现可实现(1)MOV传送指令传送指令 格式格式 MOV dst,src 执行执行 (dst)(src)例例 :reg/mem/segreg reg 通用寄存器通用寄存器/存储器存储器/段寄存器段寄存器通用寄存器通用寄存器 MOV AL,BL MOV BX ,AL MOV DS,AX reg/segreg mem 通用寄存器通用寄存器/段寄存器段寄存器 存储器存储器 MOV AL,BX MOV DS,BX+SI reg/mem segreg 通用寄存器通用寄存器/存储器存储器 段寄存器段寄存器 MOV BX,CS MOV BX ,DS reg/mem data 通用寄存器通用寄存

24、器/存储器存储器 立即数立即数 MOV Al,9 MOV BX,OFFSET buffer MOV BYTE PTR value ,0 MOV WORD PTR BX ,1MOV指令特点及注意事项指令特点及注意事项:l 双操作数指令双操作数指令(注意双操作指令的特点)注意双操作指令的特点)l 可进行字节或字传送可进行字节或字传送l 不允许存储器传送到存储器不允许存储器传送到存储器MOV BX ,value MOV DI,SI MOV AX,value MOV BX ,AXMOV AL,SI MOV DI ,ALl 可对可对 DS、ES、SS 赋值赋值 但不允许立即数直接传送给段寄存器但不允许立

25、即数直接传送给段寄存器MOV DS,AX MOV ES,BX MOV DS,1000H MOV AX,1000HMOV DS,AXl CS不能做目的操作数不能做目的操作数,不能通过传送指令改变不能通过传送指令改变CS的值的值 MOV CS,AX MOV AX,CS l 不允许段寄存器传送到段寄存器不允许段寄存器传送到段寄存器 MOV ES,DS MOV AX,DS MOV ES,AXD:MASMDEBUG-A1693:0100 MOV ES,DS Error1693:0100 MOV AX,DS1693:0102 MOV ES,AX1693:0104-例:例:实现将实现将AREA1开始的开始的

26、100个数据传送到个数据传送到AREA2开始的单元。开始的单元。AREA1:AREA2:100个数据个数据分析题意:分析题意:可以用可以用200条条MOV指令来完成指令来完成100个数据传送,个数据传送,指令操作重复,每个数据传送后的地址是变化的。指令操作重复,每个数据传送后的地址是变化的。可以利用循环,可以利用循环,但每循环一次要修改地址(源地址和目的地址),但每循环一次要修改地址(源地址和目的地址),必须把地址放在寄存器当中,用寄存器间接寻址来寻找操作数必须把地址放在寄存器当中,用寄存器间接寻址来寻找操作数.得到如下程序:得到如下程序:MOV SI,AREA1 MOV DI,AREA2 M

27、OV CX,100AGAIN:MOV AL,SIMOV DI,AL JNZ AGAIN(2)PUSH (Push word onto stack)POP (Pop word off stack)这是两条堆栈操作指令。这是两条堆栈操作指令。l 堆栈是按照堆栈是按照先进后出先进后出原则组织的一段内存区域。原则组织的一段内存区域。通常用于存放一些重要数据通常用于存放一些重要数据,如:程序的地址、或是需要恢复的数据。如:程序的地址、或是需要恢复的数据。l为方便数据的存放和恢复,为方便数据的存放和恢复,设置专门的指针,指向堆栈中要操作的单元。设置专门的指针,指向堆栈中要操作的单元。段值由段值由 SS 给

28、出,偏移地址由给出,偏移地址由 SP 给出给出 SS 堆栈段寄存器堆栈段寄存器 (stack segment)SP 堆栈指针寄存器堆栈指针寄存器(stack point)SS:SP 下推式的(规定堆栈设置在堆栈段内)改变下推式的(规定堆栈设置在堆栈段内)改变SP的内容,的内容,随着推入堆栈内容增加,随着推入堆栈内容增加,SP的值减少。的值减少。先进后出工作原则(先进后出工作原则(Last In First Out 简称简称LIFO)堆栈在内存中的情况:堆栈在内存中的情况:可以用一条立即数传送指令给可以用一条立即数传送指令给SP赋值,确定赋值,确定SP在在SS段段中的初始位置。中的初始位置。例:

29、例:设:设:(SS)=9000H,堆栈段为堆栈段为64KB MOV SP,0E200H;(SP)=0E200H则:则:整个堆栈段的物理地址范围为:整个堆栈段的物理地址范围为:堆栈在内存中的情况如右图所示:堆栈在内存中的情况如右图所示:.偏移地址偏移地址物理地址物理地址00000H(低地址)00000H(低地址)90000H90000H9E200H9E200H9FFFFH9FFFFHFFFFHFFFFH(SP)=E200H(SP)=E200H0000H0000H堆堆栈栈段段堆栈在内存中的情况堆栈在内存中的情况 (堆栈操作指令有两条堆栈操作指令有两条):格式:格式:PUSH src;(SP)(SP

30、)-2 (SP)+1,(SP)(src)格式:格式:POP dest;(dest)(SP)+1,(SP)(SP)(SP)+2SS:SP SS:SP(src)SS:SP SS:SP(dst)PUSH 入栈操作入栈操作格式格式 PUSH src 执行执行 (SP)(SP)-2 (SS:SP)(src)特点特点:l 单操作数指令单操作数指令l 操作数为操作数为16位位,可以是,可以是reg/segreg/mem,不可以是不可以是datareg :AX,BX,CX,DX,SI,DI,BP,BXsegreg :CS,DS,ES,SSmem :字类型字类型SS:SP SS:SP(src)例:例:PUSH

31、AX若执行前:若执行前:(SS)=2000H(SP)=1002H(SS:SP)=2010H (AX)=1234H3B2A10低低高高20地址地址SS:SP2000:1002指令执行前指令执行前(AX)=1234h则执行则执行PUSH AX后:后:(SS)=2000H(SP)=1000H(SS:SP)=1234H(AX)=1234H123410低低高高20地址地址SS:SP2000:1000指令执行后指令执行后(AX)=1234h不变不变 减减2 2 变变不变不变 特点特点:l单操作数指令单操作数指令l操作数为操作数为16位,可以是位,可以是reg/segreg/mem,不可以是不可以是data

32、reg :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)=2000H(SP)=1000H(SS:SP)=1234H (BX)=5678H123410低低高高20SS:SP2000:1000指令执行前指令执行前地址地址(BX)=5678h例:例:POP BX123410低低高高20SS:SP2000:1002指令执行后指令执行后地址地址(BX)=1234h则

33、执行则执行POP BX后:后:(SS)=2000H(SP)=1002H (SS:SP)=2010H (BX)=1234H 不变不变 加加2 变变 变变 堆栈使用的场合堆栈使用的场合l 用堆栈保存恢复信息用堆栈保存恢复信息 l 子程序的调用、返回以及中断调用、返回子程序的调用、返回以及中断调用、返回 l 用堆栈传送数据用堆栈传送数据 (程序设计中介绍)(程序设计中介绍)主程序主程序 子程序子程序:子程序:在一个实际程序中,有些操作要执行多次,子程序:在一个实际程序中,有些操作要执行多次,把要重把要重 复执行(复执行(subroutine)操作编为子程序。)操作编为子程序。也常把一些常用的操作标准

34、化、通用化的子程序。也常把一些常用的操作标准化、通用化的子程序。主程序(主程序(Main program)往往要调用子程序往往要调用子程序 或处理中断或处理中断,暂停主程序,执行子程序或中断服务程序。暂停主程序,执行子程序或中断服务程序。(8088中码段寄存器中码段寄存器CS和指令指针和指令指针IP),),才能才能,通常用到内部寄存器,执行结果会影响标志位,通常用到内部寄存器,执行结果会影响标志位,必须在调用子程序之前将必须在调用子程序之前将。子程序嵌套或子程序递归(自调自)子程序嵌套或子程序递归(自调自)保留许多信息,而且保证正确返回(且后进先出)。保留许多信息,而且保证正确返回(且后进先出

35、)。后保留先取出原则(即后保留先取出原则(即LIFO-LAST In First out)。)。注意:注意:SP堆栈指针堆栈指针,始终指向栈顶。始终指向栈顶。SP初值用初值用MOV SP,data来设定。来设定。q 存放存放CPU寄存器或存储器中暂时不使用的数据寄存器或存储器中暂时不使用的数据,使用数据时将其弹出:使用数据时将其弹出: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(

36、SP)+2(SP)+2堆堆栈栈段段PUSH AX后PUSH AX后(AX)使用数据时将其弹出:使用数据时将其弹出:POP BX.22H22H11H11H.33H33H44H44HBXBX(SP)(SP)(SP)+1(SP)+1(SP)+2(SP)+2堆堆栈栈段段POP BX前POP BX前.22H22H11H11H.11H11H22H22HBXBX(SP)-2(SP)-2(SP)-1(SP)-1(SP)(SP)堆堆栈栈段段POP BX后POP BX后q 调用子程序(或过程)或发生中断时要保护断点的地址,调用子程序(或过程)或发生中断时要保护断点的地址,子程序或中断返回时恢复断点。子程序或中断返

37、回时恢复断点。子程序嵌套子程序嵌套.断点2(L)断点2(L)断点2(H)断点2(H)断点1(L)断点1(L)断点1(H)断点1(H).(SP)(SP)先先压压入入后后压压入入先先弹弹出出后后弹弹出出堆堆栈栈段段断点地址压入和弹出情况断点地址压入和弹出情况主主程程序序子子程程序序1 1子子程程序序2 2断点1断点1断点2断点2弹出弹出断点2断点2弹出弹出断点1断点1注意事项注意事项l 堆栈是一重要数据结构,使用堆栈应有明确目的。堆栈是一重要数据结构,使用堆栈应有明确目的。不乱用堆栈操作,不乱修改堆栈内容。不乱用堆栈操作,不乱修改堆栈内容。PUSH、POP、PUSHF、POPF、CALL、RET、

38、INT、IRET 乱修改乱修改 SS 和和 SP 的内容的内容包括包括 乱用乱用BP参与的存储器操作数参与的存储器操作数 乱用指令乱用指令l PUSH和和POP 指令只能对字操作指令只能对字操作。PUSH AL POP BYTE PTR BX l 可以对段寄存器操作可以对段寄存器操作 但但POP不能对不能对CS操作操作 PUSH DS PUSH CS POP ES POP CS 自学堆栈应用:比较下边两个程序运行结果?自学堆栈应用:比较下边两个程序运行结果?例:例:MOV BP,SPPUSH AXPUSH BXPUSH CXMOV CX,BP-6 MOV BX,BP-4MOV AX,BP-2A

39、DD SP,6例例 :PUSH AXPUSH BXPUSH CXPOP CXPOP BX POP AX(3)XCHG交换指令交换指令 格式格式 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

40、oprd1,oprd2 注意事项注意事项:l 双操作数指令双操作数指令l可可进行进行字或字节操作字或字节操作,不影响标志位。不影响标志位。l不允许对立即数、段寄存器做操作数不允许对立即数、段寄存器做操作数 XCHG AX,4 XCHG BX,DS 存储器之间不能交换,存储器之间不能交换,两个操作数中必须有一个在寄存器中;两个操作数中必须有一个在寄存器中;XCHG BX,DIXCHG BX,DI(错)错)(Input and Output)输入输出指令共两种:输入输出指令共两种:(Input byte or word)(Output byte or word)输入指令用于输入指令用于CPU从外设

41、端口接受数据,从外设端口接受数据,输出指令输出指令用于用于CPU向外设端口发送数据。向外设端口发送数据。无论接受还是发送数据,必须通过累加器无论接受还是发送数据,必须通过累加器AX(字)或字)或AL(字字节),节),又称累加器专用传送指令又称累加器专用传送指令。2.累加器专用传送指令累加器专用传送指令每个外设要占几个端口:数据口,状态口和控制口。每个外设要占几个端口:数据口,状态口和控制口。CPUCPUI/OI/O设备设备译译码码数据端口数据端口DBDBABABCBCBI/O接口I/O接口状态端口状态端口控制端口控制端口 在在IBMPC机里,可以配接许多外部设备,机里,可以配接许多外部设备,每

42、个外设与每个外设与CPU之间交换数据,状态信息和控制命令,之间交换数据,状态信息和控制命令,每一种信息交换都要通过一个端口来进行。每一种信息交换都要通过一个端口来进行。端口数:外部设备最多有端口数:外部设备最多有65536个个I/O端口。端口。A0A15译码形成。译码形成。端口号:端口号(即外设端口地址)为端口号:端口号(即外设端口地址)为0000HFFFFH。PC机端口数:仅使用机端口数:仅使用A0A9译码形成译码形成I/O口地址,口地址,即即1024H个口地址个口地址PC机端口号:机端口号:0000H03FFH 其中:其中:A9=1,表示扩充槽上的,表示扩充槽上的口地址。口地址。,可以直接

43、写在指,可以直接写在指令中,令中,端口号代替指令中的端口号代替指令中的PORT,机器指令用二字节表示,第二字节就是端口号。机器指令用二字节表示,第二字节就是端口号。,必须先把端口号放到必须先把端口号放到DX寄存器中。寄存器中。不需要用任何段寄存器来修改它的值。不需要用任何段寄存器来修改它的值。格式:格式:IN acc,port ;(acc)(port)具体形式有四种:具体形式有四种:IN AL,data8 ;端口地址端口地址8位,输入一个字节位,输入一个字节 IN AX,data8 ;端口地址;端口地址8位,输入一个字位,输入一个字IN AL,DX ;端口地址;端口地址16位,输入一个字节位,

44、输入一个字节 IN AX,DX ;端口地址;端口地址16位,输入一个字位,输入一个字 必须通过累加器必须通过累加器AX(字)或(字)或AL(字节)输入(字节)输入数据。数据。(Output byte or word)格式:格式:OUT port,acc;(port)(acc)具体形式有四种:具体形式有四种:OUT data8 ,AL;端口地址端口地址8位,输出一个字节位,输出一个字节 OUT data8,AX;端口地址;端口地址8位,输出一个字位,输出一个字 OUT DX,AL ;端口地址;端口地址16位,输出一个字节位,输出一个字节 OUT DX,AX ;端口地址;端口地址16位,输出一个字

45、位,输出一个字 必须通过累加器必须通过累加器AX(字)或(字)或AL(字节)输出(字节)输出数据。数据。例例1:实现:实现(29H)(28H)(DATA_WORD)IN AX,28H MOV DATA_WORD,AX例例2:从端口:从端口3FCH 送一个字到送一个字到AX寄存器寄存器 MOV DX,3FCH IN AX,DX;(AL)(3FCH),),(AH)(3FDH)例例3:实现将(:实现将(AL)(05H)OUT 5,AL;(;(05H)(AL)该指令不影响标志位。该指令不影响标志位。格式:格式:XLAT str_table;(;(AL)(BX)+(AL)或或 XLAT str_tabl

46、e表格符号地址(首地址),表格符号地址(首地址),只是为了提高可读性而设置,汇编时仍用只是为了提高可读性而设置,汇编时仍用BX。XLAT指令使用方法指令使用方法:v 先建立一个字节表格;先建立一个字节表格;(相对与表格首地址位移量)(相对与表格首地址位移量);(表中第一个元素的序号为(表中第一个元素的序号为0)。(AL)为转换的代码。为转换的代码。若把字符的若把字符的扫描码扫描码转换成转换成ASCII码码;或或数字数字09转换成转换成7段数码所需要的相应代码(段数码所需要的相应代码(字形码字形码)等)等 就要用就要用XLAT指令。指令。例:内存的数据段中有一张十六进制数字的例:内存的数据段中有

47、一张十六进制数字的ASCII码表。码表。首地址为:首地址为:Hex_table,欲查出表中第欲查出表中第10个元素(个元素(A)执行指令序列执行指令序列:MOV BX,OFFSET Hex_tableMOV AL,0AH XLAT Hex_table假设:假设:(DS)=F000H,Hex_table=0040H (AL)=0AH执行执行XLAT以后:以后:(AL)=41H=(F004AH),),即即“A”的的ASCII码码。30H30H31H31H32H32H.39H39H41H41H42H42H.46H46H.Hex_tableHex_tableHex_table+1Hex_table+1

48、Hex_table+2Hex_table+2Hex_table+0AHHex_table+0AHHex_table+0BHHex_table+0BHHex_table+0FHHex_table+0FHFFBBAA9911220016进制数的进制数的ASCII码表码表(Address-object transfer)8086/8088 提供三条提供三条:地址指针写入指定寄存器或寄存器对指令。地址指针写入指定寄存器或寄存器对指令。(1)LEA(Load Effective Address)(2)LDS(Load pointer using DS)(3)LES(Load pointer using

49、ES)(1)LEA有效地址传送有效地址传送格式格式 LEA reg,mem执行执行 (reg)mem的的EA 即即 寄存器寄存器 存储器操作数的偏移地址存储器操作数的偏移地址 执行后执行后 (BX)=1000H注意:注意:OFFSET是汇编程序提供的一个操作符,不是是汇编程序提供的一个操作符,不是CPU的指令的指令.LEA BX,buffer例例 buffer是一个符号地址表示的内存操作数是一个符号地址表示的内存操作数(变量变量)。.12h34h56h.buffer内存内存DS:1000h若变量若变量buffer的偏移地址的偏移地址=1000H等价于等价于 MOV BX,OFFSET buff

50、er LEA reg,mem特点及注意事项:特点及注意事项:l目的操作数目的操作数reg应是应是16位通用寄存器位通用寄存器 LEA ES,BX LEA AL,buffer LEA 6,BX+SI LEA DI,buffer l 源操作数应是存储器操作数源操作数应是存储器操作数 LEA BX,AX l 传送的是内存单元的有效地址,与其内容无关。传送的是内存单元的有效地址,与其内容无关。.12h34h56h.buffer内存内存(Load pointer using DS)格式:格式:LDS reg16,mem32 ;(;(reg16)(EA)(DS)(EA)+2)功能功能:前两个单元内容前两个

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(微机原理第3章指令系统课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|