第3章 80x86的指令系统和寻址方式

上传人:cn****1 文档编号:568812246 上传时间:2024-07-27 格式:PPT 页数:161 大小:359.50KB
返回 下载 相关 举报
第3章 80x86的指令系统和寻址方式_第1页
第1页 / 共161页
第3章 80x86的指令系统和寻址方式_第2页
第2页 / 共161页
第3章 80x86的指令系统和寻址方式_第3页
第3页 / 共161页
第3章 80x86的指令系统和寻址方式_第4页
第4页 / 共161页
第3章 80x86的指令系统和寻址方式_第5页
第5页 / 共161页
点击查看更多>>
资源描述

《第3章 80x86的指令系统和寻址方式》由会员分享,可在线阅读,更多相关《第3章 80x86的指令系统和寻址方式(161页珍藏版)》请在金锄头文库上搜索。

1、 第第3 3章章 80X8680X86的指令系统和寻址方式的指令系统和寻址方式 指令的有关概念指令的有关概念(3(3月月14/15)14/15) 1. 1. 指令指令 计算机硬件能够识别并直执行计算机硬件能够识别并直执行 的各种操作命令。即机器指令。的各种操作命令。即机器指令。 2. 2. 指令的功能指令的功能:(:(5 5个功能)个功能) (1 1)指出指令的操作类型)指出指令的操作类型(加、减、移位、求反)(加、减、移位、求反) (2 2)参加操作的是什么数)参加操作的是什么数(数值、字符、逻辑数)(数值、字符、逻辑数) (3 3)操作数的存放位置)操作数的存放位置。(寄存器、存储器)。(

2、寄存器、存储器) (4 4)操作结果送何处)操作结果送何处?(存储单元、寄存器号)?(存储单元、寄存器号) (5 5)下一条指令从何处取)下一条指令从何处取? 1 13. 3. 指令格式指令格式 操作码(操作码(OPOP) 地址码(地址码(D D) 操作码:操作码:指定指令执行的操作类型和数指定指令执行的操作类型和数 据功能。(据功能。(反映操作的性质)反映操作的性质) 地址码地址码(或操作数):(或操作数):指定操作数是地指定操作数是地 址或数据址或数据。(反映操作的对象)。(反映操作的对象) 4.4.指令结构指令结构: 用用OPOP表示操作码,表示操作码,D D表示地址码,则指表示地址码,

3、则指 令的结构有令的结构有 2 23 3 (1)(1)四地址指令四地址指令 操作码操作码 第二操作数地址第二操作数地址 下一条指令地址下一条指令地址 OP DOP D1 1 D D2 2 D D3 3 D D4 4 第一操作数地址第一操作数地址 存放计算结果的目的地址存放计算结果的目的地址 指令功能指令功能 (D D1 1)OP OP (D D2 2) D D3 3 (2) (2)三地址结构:用三地址结构:用PCPC(或(或IPIP) 取代取代D D4 4 OP D OP D1 1 D D2 2 D D3 3 指令功能(指令功能(D D1 1) OP OP (D D2 2) D D3 3 4

4、4 (3)(3)二地址指令二地址指令 当指令执行后,第一操作数不用保留当指令执行后,第一操作数不用保留时,可用时,可用D D1 1替代替代D D3 3,省略,省略D D3 3 OP D OP D1 1 D D2 2 指令功能:(指令功能:(D D1 1)OPOP(D D2 2) D D1 1 (4). (4).单地址指令:指令进行单操作时,单地址指令:指令进行单操作时,只有一个地址只有一个地址 OP DOP D 指令功能:指令功能:OP OP (D D) D D 5 5(5).(5).零地址指令:只有操作码没有地址码的指令零地址指令:只有操作码没有地址码的指令 OP OP 例:例:NOP NO

5、P (不操作)(不操作) 注:关于不操作指令的说明注:关于不操作指令的说明 NOP NOP 不操作指令只执行不操作指令只执行PC+1 PCPC+1 PC,不执行其,不执行其它任何操作。它任何操作。 WAIT WAIT 等待指令,不执行实质性操作,也不停等待指令,不执行实质性操作,也不停机,而是重复执行机,而是重复执行WAITWAIT指令,当激活条件满足指令,当激活条件满足后继续执行后续指令。后继续执行后续指令。 HALT HALT 停机指令,例如封锁主脉冲,恢复工作停机指令,例如封锁主脉冲,恢复工作需要重新启动。需要重新启动。 3.1 80x863.1 80x86的寻址方式的寻址方式 本章内容

6、以本章内容以80868086的寻址方式为主要内容,在的寻址方式为主要内容,在80868086的基础上对的基础上对80X8680X86进行扩充讲解。进行扩充讲解。 3.1.1 3.1.1 与数据有关的寻址方式与数据有关的寻址方式 寻址方式:指令中确定操作数位置的方式。寻址方式:指令中确定操作数位置的方式。 3.1 .13.1 .1立即数型寻址方式立即数型寻址方式 立即寻址立即寻址 指令直接给出操作数指令直接给出操作数。即操。即操作数与操作码一起存放在代码段中,操作码作数与操作码一起存放在代码段中,操作码后面紧跟的是数据。操作数可以是后面紧跟的是数据。操作数可以是8 8位或位或1616位。位。6

7、6 例例3.13.1:指令:指令 MOV ALMOV AL,4EH4EH 指令功能:将立即数(常数)指令功能:将立即数(常数)4EH4EH送送到寄存器到寄存器ALAL中。指令执行后中。指令执行后 (AL)=4EH(AL)=4EH 例例3.23.2:指令:指令 MOV AXMOV AX,34EFH34EFH 指令功能:将立即数(常数)指令功能:将立即数(常数)34EFH34EFH送送到寄存器到寄存器AXAX中。指令执行后中。指令执行后 (AX)=34EFH(AX)=34EFH 例例3 3:80X8680X86的寻址中的寻址中 指令指令 MOV EAXMOV EAX,12345678H123456

8、78H 指令功能:将立即数(常数)指令功能:将立即数(常数)1234567812345678送送到寄存器到寄存器EAXEAX中。指令执行后中。指令执行后 (EAX)=12345678H(EAX)=12345678H7 78 82. 2. 寄存器寻址方式寄存器寻址方式指令中地址码部分给出某一通用寄存器的编号。指令中地址码部分给出某一通用寄存器的编号。 EA=EA=R Ri i操作数存放在操作数存放在CPUCPU的通用寄存器的通用寄存器 指令字指令字 通用寄存器通用寄存器 OP OP 寄存器寻址寄存器寻址 R Ri i . . 操作数操作数 . RiRi为寄存器编号或寄存器名。为寄存器编号或寄存器

9、名。通用寄存器:通用寄存器:AX,BX,CX,DX,SI,DI,BP,SPAX,BX,CX,DX,SI,DI,BP,SP 例例3.33.3: 80868086寄存器寻址举例寄存器寻址举例 指令指令 指令功能指令功能ADD CX,ADD CX,BX (CX)+(BX)CXBX (CX)+(BX)CXMOV DS, AX (AX) DSMOV DS, AX (AX) DS MOV BX, SI (SI) BX MOV BX, SI (SI) BX 例例3.4.80X863.4.80X86寄存器寻址举例寄存器寻址举例 MOV ECX,EDX (EDX) ECXMOV ECX,EDX (EDX) EC

10、X 注:源寄存器和目的寄存器的类型要注:源寄存器和目的寄存器的类型要 一致。一致。 9 9目的寄存器目的寄存器源寄存器源寄存器 寄存器使用说明寄存器使用说明 8086/80286 8086/80286 为为1616位寻址位寻址; 8038680386及后续微机为及后续微机为3232位寻址。位寻址。 位移量:位移量:形成有效地址时的地址修改值;形成有效地址时的地址修改值; 偏移地址:偏移地址:指偏移段首址的距离,是有效地指偏移段首址的距离,是有效地 址或形成有效地址时的基准地址值。址或形成有效地址时的基准地址值。1010 表表3.1 16/323.1 16/32位寻址时位寻址时有效地址有效地址4

11、 4种成分的组成种成分的组成 4 4种成分种成分 1616位寻址位寻址 3232位寻址位寻址 位移量位移量 0 0,8 8,1616 0 0,8 8,3232 基址寄存器基址寄存器 BXBX,BPBP 任何任何3232位通用寄存器位通用寄存器 变址寄存器变址寄存器 SISI,DIDI 除除ESPESP以外任何通用寄存以外任何通用寄存器器 比例因子比例因子 无无 1 1,2 2,4 4,8 8 表表3.13.1使用说明:使用说明: (1).(1).串指令的目的串必须用串指令的目的串必须用ESES段,源串用段,源串用DSDS段;段; (2).(2).堆栈指令(堆栈指令(PUSH/POPPUSH/P

12、OP) 必须用必须用SSSS段;段; (3).(3).指令必须用指令必须用CSCS段。段。 (4).(4).允许使用跨越段来改变默认段。允许使用跨越段来改变默认段。1111 表表3.2 3.2 默认默认段选择规则段选择规则 访问指令访问指令 所用段及寄存器所用段及寄存器 缺省选择规则缺省选择规则 指令指令 代码段代码段 CSCS寄存器寄存器 用于取指令用于取指令 所有堆栈指令的进所有堆栈指令的进/ /出栈出栈 堆栈堆栈 堆栈段堆栈段 SSSS寄存器寄存器 任何用任何用SP/BPSP/BP(ESP/EBPESP/EBP) 作为基址的访问作为基址的访问 除堆栈或串指令的除堆栈或串指令的目的目的 局

13、部数据局部数据 数据段数据段 DSDS寄存器寄存器 串串以外的所有数据访问以外的所有数据访问 目的串目的串 ESES寄存器寄存器 串处理指令的串处理指令的目的串目的串 1212 附加附加 数据段数据段13133.3.直接寻址直接寻址( (第第2 2节节) )指令的地址码部分直接给出操作数指令的地址码部分直接给出操作数在存储器中在存储器中的有效地址的有效地址A A(EAEA)。)。有效地址有效地址 EA=AEA=A直接寻址方式的特点直接寻址方式的特点简单直观,便于硬件实现;简单直观,便于硬件实现;要寻址大容量的主存空间,将造成指令长度加长。要寻址大容量的主存空间,将造成指令长度加长。 存储器存储

14、器 OP MOP M:直接寻址:直接寻址 A A A A 操作数操作数 1414 例例3.5 3.5 设设(ES)=(ES)=3000H3000H, ,有效地址有效地址EA=1000HEA=1000H,执行指令,执行指令 MOV AXMOV AX,ES:1000HES:1000H 解:解:(1).(1).寻址过程寻址过程ES10H: ES10H: 300030000 0 段地址段地址 地址地址 存储器存储器 + 1000 + 1000 有效地址有效地址 300030000H MOV0H MOV直直 31000 31000 物理地址物理地址 30001H 00H30001H 00H AXAX:

15、03H 05H03H 05H 30002H30002H 10H10H 31000H31000H 05H05H 31001H 31001H 03H 03H (2).(2).执行指令执行指令:(31000H) AX(31000H) AX (3).(3).执行结果执行结果:AX = 0305HAX = 0305H冒号是垮段冒号是垮段符符15154. 4. 寄存器间接寻址寄存器间接寻址 指指令令中中地地址址码码部部分分所所指指定定的的寄寄存存器器中中内内容容是是操操作数的有效地址(作数的有效地址(EAEA)。)。有效地址有效地址EA=(EA=(R Ri i) ) 通用寄存器通用寄存器 存储器存储器 O

16、POP 寄存器间址寄存器间址 RiRi 寄存器间接寻址方式的特点寄存器间接寻址方式的特点只需访问存储器一次即可得到操作数;只需访问存储器一次即可得到操作数;寄存器给出全字长的地址码,可寻址较大的存储寄存器给出全字长的地址码,可寻址较大的存储空间。空间。 EA EA 操作数操作数 1616 寄存器间接寻址举例寄存器间接寻址举例 例例3.63.6设设(DS)=3000H(DS)=3000H,(SI)=1000H,(31000H)=2042H(SI)=1000H,(31000H)=2042H 写出指令:写出指令:MOV AXMOV AX,SI SI 的执行过程。的执行过程。 解解: :( (1)1)

17、寻址:计算源操作数地址寻址:计算源操作数地址 EA=(SI)=1000HEA=(SI)=1000H, PA=(DS)10H+EAPA=(DS)10H+EA =30000H+1000H =30000H+1000H =31000H =31000H (2 2)执行指令)执行指令 (31000H31000H) AXAX (3 3)执行结果)执行结果 (AX)=2042H(AX)=2042H 间址寄存器使用说明间址寄存器使用说明 80868086系统中可作间址的寄存器有系统中可作间址的寄存器有 1616位寻址使用的间址的寄存器是位寻址使用的间址的寄存器是 BXBX、BPBP、SISI、DIDI。 80X

18、8680X86系统中可作间址的寄存器有系统中可作间址的寄存器有 3232位寻址使用的间址的寄存器是位寻址使用的间址的寄存器是 EAXEAX、EBXEBX、ECXECX、EDXEDX、 EBPEBP、ESPESP、ESIESI、EDIEDI。1717 5. 5. 寄存器相对寻址寄存器相对寻址(直接变址寻址)(直接变址寻址) EA=EA=基址寄存器(基址寄存器(BX/BPBX/BP)的内容)的内容+ +指令位移量指令位移量 或或 EA=EA=变址寄存器(变址寄存器(SI/DISI/DI)的内容)的内容+ +指令位移量指令位移量 使用说明:使用说明:其中其中 BXBX为访问主存储器使用的为访问主存储

19、器使用的基址基址寄存器;寄存器; BPBP为访问堆栈存储器使用的为访问堆栈存储器使用的基址基址寄存器。寄存器。 SISI为使用串指令时源地址为使用串指令时源地址变址变址寄存器;寄存器; DIDI 为为 使用串指令时使用串指令时 目的目的变址变址寄存器。寄存器。1818 例例3.73.7设设 (DS)=3000H,(BX)=2000H,(32500H)=1234H(DS)=3000H,(BX)=2000H,(32500H)=1234H;写出;写出指令:指令: MOV AX,500HBXMOV AX,500HBX的执行过程。的执行过程。 解解(1)(1)寻址:寻址:计算源操作数地址计算源操作数地址

20、 EA=(BX)+EA=(BX)+位移量位移量 =2000H+500H=2500H=2000H+500H=2500H PA=(DS)10H+EA=30000H+2500H=32500H PA=(DS)10H+EA=30000H+2500H=32500H (2)(2)执行指令执行指令 (32500H) AX(32500H) AX (3)(3)执行结果执行结果 (AX)=1234H(AX)=1234H19192020 例例3 3. 8 8 设设(DS)=3000H(DS)=3000H,(SI)=4000H, (SI)=4000H, 写出指令写出指令 MOV 100HSIMOV 100HSI,556

21、6H5566H的执行过程的执行过程 解:解:(1).(1).寻址:寻址:计算目的操作数地址计算目的操作数地址 EA=(SI)+ EA=(SI)+ 位移量位移量=4000H+100H=4100H=4000H+100H=4100H PA=(DS)10H+EA=30000H+4100H=34100H PA=(DS)10H+EA=30000H+4100H=34100H (2).(2).执行指令执行指令 5566H 34100H5566H 34100H单元单元 (3).(3).执行结果执行结果 (34100H34100H)=5566H=5566H 6. 6. 基址变址寻址基址变址寻址 EA= EA= 基

22、址基址寄存器内容寄存器内容+ +变址变址寄存器内容寄存器内容 例例3.93.9 已知已知(DS)=2100H,(BX)=0158H,(DI)=10A5H,(DS)=2100H,(BX)=0158H,(DI)=10A5H,(221FDH)=3456H,(221FDH)=3456H,写出指令写出指令 MOV CX,BXDIMOV CX,BXDI的的执行过程。执行过程。 解解: : (1).(1).寻址:寻址:计算源操作数地址计算源操作数地址 EA=(BX)+ (DI)=0518H+105AH=11FDHEA=(BX)+ (DI)=0518H+105AH=11FDH PA=(DS)10H+EA=21

23、000H+11FDH=221FDH PA=(DS)10H+EA=21000H+11FDH=221FDH (2).(2).执行指令执行指令 (221FDH221FDH)=3456H CX =3456H CX (3).(3).执行结果执行结果 (CXCX)= 3456H = 3456H 2121 例例3.10 3.10 设设(DS)=3000H,(BX)=2000H,(SI)=1000H,(DS)=3000H,(BX)=2000H,(SI)=1000H, MASK=0250H,(33250H)=1234H, MASK=0250H,(33250H)=1234H,写出指令写出指令 MOV AX, MA

24、SKBXSI MOV AX, MASKBXSI 的执行过程。的执行过程。 解解: :(1).(1).寻址:寻址:计算源操作数地址计算源操作数地址 EA=(BX)+(SI)+MASKEA=(BX)+(SI)+MASK =2000H+1000H+0250H =2000H+1000H+0250H =3250H =3250H PA=(DS) PA=(DS)10H+EA10H+EA =3000H=3000H10H+3250H=33250H10H+3250H=33250H2222 7.7.相对基址变址寻址方式相对基址变址寻址方式EA=EA=基址基址寄存器内容寄存器内容+ +变址变址寄存器内容寄存器内容+

25、+指令指令位移量位移量 (2).(2).执行指令执行指令: :(33250H33250H)=1234H AX=1234H AX (3). (3).执行结果执行结果: : (AX)=1234H(AX)=1234H 指令书写格式:指令书写格式: MOV AX, MASKBXSIMOV AX, MASKBXSI 可以写成可以写成 MOV AXMOV AX,MASKBX+SIMASKBX+SI 也可以写成也可以写成 MOV AXMOV AX, BX+SI+MASKBX+SI+MASK 在在80868086系统中都允许的。系统中都允许的。2323 8.8.比例变址寻址方式比例变址寻址方式(用于用于803

26、8680386及后续机型及后续机型, ,选讲选讲) EA=(EA=(变址寄存器变址寄存器) )指令比例因子指令比例因子+ +位移量位移量 例例3.11 3.11 MOV EAX, COUNTESI MOV EAX, COUNTESI44 EA= EA=(ESIESI)4 + COUNT4 + COUNT PA= PA=(DSDS)10H+EA 10H+EA (EAXEAX)= =(PAPA)2424位移量位移量变址寄存器变址寄存器比例因子比例因子 9.9.基址比例变址寻址方式基址比例变址寻址方式(用于(用于8038680386及后续机型,选讲)及后续机型,选讲) EA=EA=(变址寄存器)(变

27、址寄存器)比例因子比例因子+ +(基址寄存器)(基址寄存器)例例3.12 3.12 MOV EAX, EBXESI MOV EAX, EBXESI44 EA= EA=(ESIESI)4 + 4 + (EBXEBX) PA=PA=(DSDS)10H+EA 10H+EA (EAXEAX)= =(PAPA)2525基址寄存基址寄存器器变址寄存器变址寄存器比例因子比例因子10.10.相对基址比例变址寻址方式相对基址比例变址寻址方式(8038680386及后续机型,选讲)及后续机型,选讲) EA=EA=(变址寄存器)(变址寄存器)比例因子比例因子 + +(基址寄存器)(基址寄存器) + +指令位移量指令

28、位移量例例3.13 3.13 MOV EAX, COUNTEBXESI MOV EAX, COUNTEBXESI44 EA= EA=(ESIESI)4 + 4 + (EBXEBX)+COUNT+COUNT PA= PA=(DSDS)10H+EA 10H+EA (EAXEAX)= =(PAPA)2525基址寄存基址寄存器器变址寄存器变址寄存器位移量位移量比例因子比例因子2727综合举例综合举例( (第第3 3节节) ) 分别使用寄存器间址、寄存器相对寻分别使用寄存器间址、寄存器相对寻 1000H1000H3000H 3000H 地址单元中数据对应的地址单元中数据对应的传送到传送到6000H 60

29、00H 4000H 4000H 地址单元中去。地址单元中去。址(变址寻址)将址(变址寻址)将(1 1)采用寄存器间址方式编程()采用寄存器间址方式编程(9 9条指令)条指令) MOV SI, 1000HMOV SI, 1000H;给间寄赋初始值;给间寄赋初始值 MOV DI, 6000HMOV DI, 6000H;给间寄赋初始值;给间寄赋初始值 MOV CX, 2000HMOV CX, 2000H;给;给CX CX 赋初始值赋初始值2828NEXTNEXT: MOV AL, SI MOV AL, SI ;从源地址取数送;从源地址取数送ALAL MOV DI, AL MOV DI, AL ;数据

30、写入目的地址;数据写入目的地址INC SI INC SI ;源地址加;源地址加1 1 DEC DI DEC DI ;目的地址减;目的地址减1 1 DEC CX DEC CX ;计数次数减;计数次数减1 1 JNE NEXT JNE NEXT ;CX0CX0,转,转NEXTNEXT 2929(2 2)采用寄存器相对寻址方式编程()采用寄存器相对寻址方式编程(9 9条条指令)指令) MOV SI, 0FFFHMOV SI, 0FFFH;给变寄;给变寄SISI赋初值赋初值 MOV DI, 6001HMOV DI, 6001H;给变寄;给变寄DI DI 赋初值赋初值 MOV CX, 2000H MOV

31、 CX, 2000H ;给;给 CX CX 赋初值赋初值NEXTNEXT:MOV AL, 1SIMOV AL, 1SI;从源地址取数送;从源地址取数送ALAL MOV -1DI, AL MOV -1DI, AL ;数据送目的地址;数据送目的地址 INS INS SI SI ;源地址加;源地址加1 1 DEC DI DEC DI ;目的地址减;目的地址减1 1 DEC CX DEC CX ;计数器减;计数器减1 1 JNE NEXT JNE NEXT ;CX0CX0,转,转NEXTNEXT 80868086寻址方式小结寻址方式小结(重点、必须掌握)(重点、必须掌握) 寻址方式名称寻址方式名称 指

32、令格式举例指令格式举例立即寻址立即寻址 MOV AXMOV AX,2000H2000H直接寻址直接寻址 MOV AXMOV AX,ESES:2000H2000H寄存器寻址寄存器寻址 MOV AXMOV AX,BXBX寄存器间址寄存器间址 MOV AXMOV AX,BXBX寄存器相对寻址寄存器相对寻址 MOV AXMOV AX,25HSI25HSI基址变址寻址基址变址寻址 MOV AXMOV AX,BX+DIBX+DI相对基址加变址相对基址加变址 MOV AXMOV AX,25HBXDI25HBXDI3030基址寄存基址寄存器器变址寄存器变址寄存器位移量位移量 3.1.2 3.1.2 与转移地址

33、有关的寻址方式与转移地址有关的寻址方式 1.1.段内直接寻址段内直接寻址 转移地址的转移地址的EA= (IP)+ EA= (IP)+ 指令位移量指令位移量(8/(8/1616) ) 例例3.14 3.14 段内直接转移指令举例段内直接转移指令举例 JMP NEAR PTR PROGAJMP NEAR PTR PROGA NEAR PTRNEAR PTR:操作符,表示操作符,表示符号地址符号地址PROGAPROGA是是8 8位位移量。位位移量。 转移地址的转移地址的EA= (IP)+ PROGA(8EA= (IP)+ PROGA(8位位) ) 3131 JMP SHOT QUESTJMP SHO

34、T QUEST SHOT SHOT:操作符,表示:操作符,表示符号地址符号地址QUESTQUEST是是1616位位位移量。位移量。 转移地址的转移地址的EA= (IP) + EA= (IP) + QUESTQUEST(16(16位位) ) 注:在注:在8038680386及后续机型中,指令偏移地址及后续机型中,指令偏移地址用用EIPEIP存放。存放。转移地址的转移地址的EA= (EIP)+ EA= (EIP)+ 指令位移量指令位移量(8/(8/3232) ) 当位移量为当位移量为8 8位时,称为短跳转移。跳转范位时,称为短跳转移。跳转范围在围在 -128 -128 +127+127 当位移量为

35、当位移量为3232位时,称为近跳转移。跳转范位时,称为近跳转移。跳转范围在围在 -2G -2G +2G+2G3232 2.2.段内间接寻址段内间接寻址 段内间接寻址的有效地址可以是段内间接寻址的有效地址可以是1 1个寄存器,个寄存器,也可以是也可以是1 1个存储器单元。个存储器单元。 例例3.15 3.15 求出指令求出指令 JMP BXJMP BX所转向的有效地址。所转向的有效地址。 解解 (1)(1)寻址:计算寻址:计算EAEA值值 EA=EA=(BXBX)=1256H=1256H (2) (2)执行指令:执行指令: (BXBX)=1256H IP =1256H IP (3) (3)执行结

36、果执行结果: (: (IP)=1256HIP)=1256H 3333 例例3.15 (DS)=2000H,(BX)=1256H,(SI)=528FH,3.15 (DS)=2000H,(BX)=1256H,(SI)=528FH,位移量位移量=21A1H,(232F7H)=3280H,(264E5H)=2450H=21A1H,(232F7H)=3280H,(264E5H)=2450H求出指令求出指令 1.JMP TABLEBX 1.JMP TABLEBX 所转向的有效地址的计算所转向的有效地址的计算 2.JMP BXSI 2.JMP BXSI 解解1. (1)1. (1)寻址:计算寻址:计算EAE

37、A值值 EA =(BX)+EA =(BX)+位移量位移量 PA=(DS)PA=(DS)10H + EA10H + EA = 1256H+21A1H =200010H+20A1H= 1256H+21A1H =200010H+20A1H =32F7H =232F7H =32F7H =232F7H (2) (2)执行指令执行指令 (PA)=(PA)=(232F7H)=3280H IP232F7H)=3280H IP (3) (3)执行结果执行结果: (: (IP)=3280HIP)=3280H3434 解解2. (1)2. (1)寻址:计算寻址:计算EAEA值值 EA=(BX)+(SI) PA=(D

38、S)10H + EAEA=(BX)+(SI) PA=(DS)10H + EA = 1256H+528FH =200010H+64E5H = 1256H+528FH =200010H+64E5H =64E5H =226415H =64E5H =226415H (2) (2)执行指令执行指令 (PA)=(PA)=(264E5H)=2450H IP264E5H)=2450H IP (3) (3)执行结果执行结果: (: (IP)=2450HIP)=2450H 对于对于8038680386或后续机型的段内间接转移,其或后续机型的段内间接转移,其使用使用3232位寻址方式。方法与位寻址方式。方法与808

39、68086寻址是一致的。寻址是一致的。 例例3.16 JMP ECX3.16 JMP ECX 例例3.173.17 JMP WORD PTR TABLEESIJMP WORD PTR TABLEESI 3535 3.3.段间直接寻址段间直接寻址 段间直接寻址段间直接寻址由指令提供转向地址和偏移地址。由指令提供转向地址和偏移地址。偏移地址直接偏移地址直接IPIP,转向地址直接送,转向地址直接送CSCS。 例例3.18 JMP FAR PTR NEXTROUTINT3.18 JMP FAR PTR NEXTROUTINT指令的转向过程。指令的转向过程。 FAR PTRFAR PTR 属性操作符。属

40、性操作符。FAR(FAR(远远) )表示段间表示段间转移。转移。 NEXTROUTINTNEXTROUTINT是转向的符号地址是转向的符号地址( (用偏移地址表示用偏移地址表示) )。 指令的执行过程:指令的执行过程: NEXTROUTINTNEXTROUTINT的的偏移地址偏移地址直接送直接送IPIP NEXTROUTINT NEXTROUTINT的的段地址段地址直接送直接送CSCS3636 4. 4. 段间间接寻址段间间接寻址 用存储器中的连续两个字的内容来取代用存储器中的连续两个字的内容来取代IP IP 和和CSCS中的内容。以达到转向的目的。存储器地中的内容。以达到转向的目的。存储器地

41、址是由指令指定的址是由指令指定的( (立即寻址和寄存器寻址除外立即寻址和寄存器寻址除外) )。 例例3.19 JMP DWORD PTR INTERS+BX3.19 JMP DWORD PTR INTERS+BX DWORD PTRDWORD PTR 双字操作符,表示双字操作符,表示段间间接段间间接寻址。寻址。 INTERS+BXINTERS+BX说明数据寻址方式为说明数据寻址方式为直接变址直接变址方式。方式。 3737(INTERS+BXINTERS+BX)= =偏移地址偏移地址 IPIP(INTERS+BX+2INTERS+BX+2)= =段地址段地址 CSCS 对于对于803868038

42、6或后续机型的段间间接转移方或后续机型的段间间接转移方法与法与80868086寻址是一致的。寻址是一致的。3838 3.2 3.2 程序占有空间和执行情况程序占有空间和执行情况(选讲)(选讲) 8086/802868086/80286是是1616位机器,位机器,1 1条条1616位格式的指位格式的指令长度可为令长度可为1 16 6个字节。个字节。 8086CPU8086CPU主频为主频为5MHz5MHz。 8038680386及后续机器为及后续机器为3232位机器,位机器,1 1条条3232位格式位格式的指令长度可为的指令长度可为1414个字节。个字节。 Pentium CPUPentium

43、CPU主频主频提高的提高的300MHz300MHz。 1 1个程序装入计算机,它占一定的存储空间,个程序装入计算机,它占一定的存储空间,程序大占空间大,对于所占空间和速度要求很程序大占空间大,对于所占空间和速度要求很高时,应仔细程序的算法、数据的结构、指令高时,应仔细程序的算法、数据的结构、指令的寻址方法选用,只有这样,才能编制出符合的寻址方法选用,只有这样,才能编制出符合要求的程序。要求的程序。3939 作业作业 P P107107 3.4 3.4,3.83.8 课堂练习课堂练习 P P107107 3.1 3.1 4040 1.1.解:给定解:给定(BX)=637DH, (SI)=2A98

44、H,(BX)=637DH, (SI)=2A98H,位移位移量量D=7237H,D=7237H,试确定以下各寻址方式下的有效试确定以下各寻址方式下的有效地址是什么?地址是什么? 答案答案 (1)(1)立即寻址立即寻址 没有没有 (2)(2)直接寻址直接寻址 7237H7237H (3) (3)使用使用BXBX的寄存器寻址的寄存器寻址 没有没有 (4)(4)使用使用BXBX的间接寻址的间接寻址 637DH637DH (5) (5)使用使用BXBX的寄存器相对寻址的寄存器相对寻址 0D5F0H0D5F0H (6) (6) 基址变址寻址基址变址寻址 8E18H8E18H (7) (7)相对基址变址相对

45、基址变址 004FH004FH4141 3.3 808X863.3 808X86的指令系统的指令系统(3(3月月1919日第日第3 3周周) ) 指令类型指令类型42421.1.数据传送指令数据传送指令 2.2.算术指令算术指令3. 3. 逻辑指令逻辑指令 4.4.串处理指令串处理指令5. 5. 控制转移指令控制转移指令 6.6.处理机控制与复杂操作指令处理机控制与复杂操作指令 80868086汇编指令格式汇编指令格式 格式格式1 1:OP DST (OP DST (单地址指令单地址指令) ) 格式格式2 2:OP DSTOP DST,SRC (SRC (双地址指令双地址指令) ) 其中:其中

46、:OP OP 操作码,指出执行的操作操作码,指出执行的操作 DST DST 目的操作数地址,存放运行结果目的操作数地址,存放运行结果 SRC SRC 源操作数地址源操作数地址4343 指令的语法规则:指令的语法规则: 1 1单地址(或单操作)指令:单地址(或单操作)指令: (1)(1) DSTDST不允许是立即数。不允许是立即数。 (2)(2)操作对象是操作对象是DSTDST中操作数,操作结果放中操作数,操作结果放DSTDST 2. 2.双地址(或双操作)指令:双地址(或双操作)指令: . DST. DST和和SRCSRC必须是数据类型相同。必须是数据类型相同。 . DST . DST 不允许

47、是立即数。不允许是立即数。 . . 操作结果送操作结果送DSTDST中,中,SRCSRC中内容保持不变。中内容保持不变。 . DST,SRC. DST,SRC不能同时为存储器操作数。不能同时为存储器操作数。4444 3.3.1 3.3.1 数据传送指令数据传送指令 数据传送指令的类型数据传送指令的类型 1.1.通用数据传送指令通用数据传送指令 2.2.累加器专用传送指令累加器专用传送指令 3.3.地址传送指令地址传送指令 4.4.标志寄存器传送指令标志寄存器传送指令 5.5.类型转换指令类型转换指令 数据传送指令介绍数据传送指令介绍4545 1. 1. 通用数据传送指令通用数据传送指令 指令表

48、指令表 指令指令 含义含义 MOV MOV 传送传送 MOVSX MOVSX 带符号扩展传送带符号扩展传送(386(386及后续机型及后续机型) ) MOVZX MOVZX 带带0 0扩展传送扩展传送(386(386及后续机型及后续机型) ) PUSH PUSH 进栈进栈 POP POP 出栈出栈 PUSHA/PUSHAD PUSHA/PUSHAD 所有寄存器进栈所有寄存器进栈(386(386及后续机型及后续机型) ) POPA/POPAD POPA/POPAD 所有寄存器进栈所有寄存器进栈(386(386及后续机型及后续机型) ) XCHG XCHG 交换交换4646 (1). MOV(1)

49、. MOV传送指令传送指令 传送指令指令格式传送指令指令格式 MOV DSTMOV DST, SRCSRC 操作码操作码 目的地址,目的地址, 源地址源地址 指令功能指令功能 (DST) (SRC)(DST) (SRC) 47474848 为了叙述方便,定义下列符号为了叙述方便,定义下列符号 符号符号 含含 义义 regreg 通用寄存器通用寄存器 sregsreg 段寄存器段寄存器 r r 寄存器寄存器 memmem 存储单元存储单元 data data 立即数立即数 ac ac 累加器累加器 传传 送送 指指 令令 功功 能能 表表 传送方式传送方式 指令格式指令格式 指令功指令功 能能

50、movmov reg1,reg2 reg2 reg1 reg1,reg2 reg2 reg1 寄存器寄存器 movmov reg,sregreg,sreg sregsreg regreg movmov sreg,regsreg,reg regreg sregsreg 立即数立即数 movmov reg,datareg,data data data regreg movmov mem,datamem,data data data memmem 直接地址直接地址 movmov reg,memreg,mem memmem regreg movmov reg,regreg,reg regreg reg

51、reg sreg/memsreg/mem movmov mem,sregmem,sreg sregsreg memmem 4949 使用使用MOVMOV指令的注意事项指令的注意事项( (语法规则语法规则) ): 目的地址不允许是立即寻址方式。目的地址不允许是立即寻址方式。 目的地址不允许用目的地址不允许用CSCS寄存器。寄存器。 不允许在两个存储单元之间传送信息。不允许在两个存储单元之间传送信息。 不允许在两个段寄存器之间传送信息。不允许在两个段寄存器之间传送信息。 MOV MOV 指令不影响指令不影响Flags(Flags(标志寄存器标志寄存器) )。 除源操作数为立即数外,两操作数中除源操

52、作数为立即数外,两操作数中必须有一个是寄存器。必须有一个是寄存器。 注:注:MOVMOV指令的注意事项实际上也是双操作指令的注意事项实际上也是双操作指令的语法规则。指令的语法规则。5050例例1. 1. 指出下列各指令中的错误指出下列各指令中的错误 指指 令令 错误原因错误原因MOV MOV SI,SI,34H DST34H DST类型不明确类型不明确MOV MOV CL,105HCL,105H DST DST、SRC SRC 类型不配类型不配MOV MOV CSCS,BX CS,BX CS为为DSTDSTMOV MOV DS,CSDS,CS 段寄存器之间直接传送数据段寄存器之间直接传送数据M

53、OV MOV SI,DZSI,DZ2 2 DST,SRC DST,SRC同时为存储器地址同时为存储器地址MOV MOV 1245H1245H,AX DST,AX DST为立即数为立即数 MOV DXMOV DX,SIDI,SIDI SRC SRC无基址寄存器无基址寄存器MOV MOV BPBX,BPBX,1245H DST1245H DST无变址寄存器无变址寄存器5151 5252(2). (2). 堆栈及堆栈操作指令堆栈及堆栈操作指令 堆栈是以堆栈是以“先进后出先进后出”(FILOFILO)方式工作)方式工作的的一个存储区。一个存储区。 堆栈只有一个出口,即当前栈顶;用堆栈指堆栈只有一个出口

54、,即当前栈顶;用堆栈指针寄存器针寄存器SPSP指定。指定。 .PUSH .PUSH 进栈指令进栈指令 指令格式:指令格式: PUSH SRC PUSH SRC 指令功能:指令功能: (SP) (SP)-2 (SP) (SP)-2 移动指针移动指针 (SP)+1,(SP) (SRC) (SP)+1,(SP) (SRC) 数据进栈数据进栈 SRCSRC取值:取值:regreg、memmem、segregsegreg、 注:注:80868086中中SRCSRC不允许为不允许为datadata5353 压栈操作举例:压栈操作举例:PUSH AXPUSH AX 34H 12 34 AX 34H 12 3

55、4 AX 12H 12H 65H 65H 56H 56H 43H 43H 栈底栈底 进进栈栈方方向向操作过程:操作过程:.(sp)-1 .(sp)-1 sp,AHsp,AH 进栈进栈.(sp)-1 .(sp)-1 sp,ALsp,AL 进栈进栈操作前操作前栈顶(执行后)栈顶(执行后) .POP .POP 出栈指令出栈指令指令格式:指令格式: POP DST POP DST 指令功能:指令功能:(SP),(SP)+1) DST (SP),(SP)+1) DST 数据出栈数据出栈 (SP) (SP)+2 (SP) (SP)+2 移动指针移动指针DSTDST取值:取值:regreg、memmem、s

56、egregsegreg 注:注:80868086中中DSTDST不允许为不允许为datadata、CSCS54545555 出栈的操作举例:出栈的操作举例: POP BXPOP BX 34H 34H 12H 12 34 BX 12H 12 34 BX 65H 65H 56H 56H 43H 43H 栈底栈底 出出栈栈方方向向 操作过程:操作过程:.(SP) BL .(SP) BL 数据出栈数据出栈 (SP)+1 SP (SP)+1 SP 移动指针移动指针.(SP) BH .(SP) BH 数据出栈数据出栈 (SP)+1 SP (SP)+1 SP 移动指针移动指针操作前操作前操作后操作后5656

57、 堆栈的两种生成方式介绍堆栈的两种生成方式介绍 I. I. 自底向上生成方式(向低地址生长)自底向上生成方式(向低地址生长) 指令:指令:PUSH APUSH A 压栈压栈操作:操作:(SP)-2 SP(SP)-2 SP,(A) (SP)(A) (SP) 移动指针,移动指针, 数据进栈数据进栈 指令:指令: POP APOP A 出栈操作出栈操作: (SP) A(SP) A, (SP)+2 SP (SP)+2 SP 数据出栈,数据出栈, 移动指针移动指针 5757 堆栈的两种生成方式介绍(续)堆栈的两种生成方式介绍(续) . . 自顶向下生成方式(向高地址生长)自顶向下生成方式(向高地址生长)

58、 指令:指令:PUSH A PUSH A 压栈操作:压栈操作: (SP)+2 SP(SP)+2 SP,(A) (SP)(A) (SP) 移动指针,移动指针, 数据进栈数据进栈 指令:指令:POP A POP A 出栈操作:出栈操作:(SP) A(SP) A,(SP)-2 SP(SP)-2 SP 数据出栈,数据出栈, 移动指针移动指针 注意注意:(1).:(1).堆栈操作为字操作。堆栈操作为字操作。 (2). PUSH(2). PUSH、POPPOP指令不影响标志位。指令不影响标志位。 (3).XCHG(3).XCHG交换指令交换指令 指令格式:指令格式:XCHG DSTXCHG DST,SRC

59、SRC 指令功能指令功能:(DST) (SRC):(DST) (SRC) 操作规则:操作规则: .DST.DST,SRCSRC表示操作数,至少有表示操作数,至少有1 1个为寄个为寄存器;存器; . .在寄存器与寄存器之间交换数据;在寄存器与寄存器之间交换数据; . .在寄存器与存储器之间交换数据;在寄存器与存储器之间交换数据; . .不允许存储器与存储器之间交换数据;不允许存储器与存储器之间交换数据; . .操作数不允许是段寄存器、立即数。操作数不允许是段寄存器、立即数。 . .指令可以是字或字节操作,不影响标志位。指令可以是字或字节操作,不影响标志位。5858 例例2.2. 设设(BX)=6

60、F30H,(BP)=0200H.(SI)=0046H,(BX)=6F30H,(BP)=0200H.(SI)=0046H,(SS)=2F00H,(2F246H)=4154H,(SS)=2F00H,(2F246H)=4154H,说明说明 XCHG BXXCHG BX,BP+SIBP+SI指令执行过程。指令执行过程。 解解:(1).(1).源操作数寻址源操作数寻址 EA=(BP)+(SI)=0200H+0046H=0246HEA=(BP)+(SI)=0200H+0046H=0246H PA=(SS)PA=(SS)10H+EA10H+EA =2F00H =2F00H10H+0246H=2F246H10

61、H+0246H=2F246H (2). (2).执行指令执行指令(BX) (2F246H)(BX) (2F246H) (3). (3).执行结果执行结果:(BX)= :(BX)= 4154H,4154H, (2F246H)=6F30H (2F246H)=6F30H5959 2.2.累加器专用传送指令累加器专用传送指令( (第第2 2节节) ) 累加器专用传送指令有累加器专用传送指令有 IN(IN(输入输入) )指令指令,OUT,OUT( (输出输出) )指令和指令和XLAT(XLAT(换码换码) )指令指令. . (1). IN (1). IN 输入指令输入指令 长格式指令:长格式指令: IN

62、 ALIN AL,PORTPORT(字节)(字节) IN AXIN AX,PORTPORT(字)(字) 指令功能指令功能: (AL) (PORT): (AL) (PORT)(字节)(字节) (AX) (PORT)(AX) (PORT)(字)(字) 其中其中PORTPORT是外部设备的端口号,取值为是外部设备的端口号,取值为00H00H0FFH0FFH. .( (该外设在主机板上该外设在主机板上,CPU,CPU可以直接访问可以直接访问.).)6060短格式指令:短格式指令: IN ALIN AL,DXDX(字节)(字节) IN AXIN AX,DXDX(字)(字) 指令功能指令功能: (AL)

63、(DX): (AL) (DX)(字节)(字节) (AX) (DX)(AX) (DX)(字)(字) 其中其中DXDX是外部设备间址寄存器是外部设备间址寄存器. .存放外部存放外部设备的端口地址设备的端口地址. .当端口地址值大于当端口地址值大于0FFH0FFH时时, ,必必须经过须经过DXDX间址间址( (该外设在不在主机内该外设在不在主机内,CPU,CPU通过适配通过适配器器( (接口卡接口卡) )访问这些外设访问这些外设).).6161(2). OUT (2). OUT 输出指令输出指令 长格式指令:长格式指令: OUT PORTOUT PORT,AL AL (字节)(字节) OUT POR

64、TOUT PORT,AX AX (字)(字) 指令功能指令功能: (PORT) (AL) : (PORT) (AL) (字节)(字节) (PORT) (AX) (PORT) (AX) (字)(字) 其中其中PORTPORT是外部设备的端口号,取值为是外部设备的端口号,取值为00H00H0FFH0FFH. .( (该外设在主机板上该外设在主机板上,CPU,CPU可以直接访问可以直接访问.).)6262 短格式指令:短格式指令: OUT DXOUT DX,AL AL (字节)(字节) OUT DXOUT DX,AX AX (字)(字) 指令功能指令功能: (DX) (AL) : (DX) (AL)

65、 (字节)(字节) (DX) (AX) (DX) (AX) (字)(字) 其中其中DXDX是外部设备间址寄存器是外部设备间址寄存器. .存放外部存放外部设备的端口地址设备的端口地址. .当端口地址值大于当端口地址值大于0FFH0FFH时时, ,必必须经过须经过DXDX间址间址( (该外设在不在主机内该外设在不在主机内,CPU,CPU通过适配通过适配器器( (接口卡接口卡) )访问这些外设访问这些外设).). 注注: :输入输入/ /输出输出 指令不影响标志位指令不影响标志位. .6363 例例3.3.分析下列程序段的功能分析下列程序段的功能 IN AX,28HIN AX,28H OUT 56H

66、,AX OUT 56H,AX MOV DX,346H MOV DX,346H IN AL,DX IN AL,DX MOV DX,256H MOV DX,256H OUT DX,AL OUT DX,AL 解解: :从从28H28H号端口输入号端口输入1 1个字数据到累加器个字数据到累加器AX,AX,并将数据输出到并将数据输出到56H56H号端口中号端口中. .从从346346号端口输入号端口输入1 1个字节数据到累加器个字节数据到累加器AL,AL,并将数据输出到并将数据输出到256H256H号号端口中端口中. .6464 (3).XLAT (3).XLAT 换码指令换码指令 指令格式:指令格式:

67、XLATXLAT或或XLAT OPRXLAT OPR;执行操作:执行操作:ALAL(BX+ALBX+AL) 指令功能:从一种代码转换为另一种代码指令功能:从一种代码转换为另一种代码, ,例如:例如: . .扫描码扫描码 ASCIIASCII码码 , .16.16进制数码进制数码 数码管代码数码管代码 以以1616进制数码进制数码0 0F F 转换为其段数码管的显转换为其段数码管的显示代码为例,说明示代码为例,说明XLAT XLAT 的功能,用的功能,用BXBX为存放数为存放数码管显示代码表头,码管显示代码表头,DSDS为段基址,为段基址,ALAL存放要转换存放要转换的的1616进制数码进制数码

68、 。设。设BX=200HBX=200H,DS=4000HDS=4000H,AL=05HAL=05H执行指令:执行指令:XLATXLAT6565 主存主存 PA PA 主存主存 PA PA DS 40000H 78 7 40207HDS 40000H 78 7 40207H 00 8 40208H 00 8 40208HBX 40 0 40200H 18 9 40209H BX 40 0 40200H 18 9 40209H 79 1 40201H 79 1 40201H 08 A08 A 4020AH 4020AH 24 2 40202H 03 B 4020BH 24 2 40202H 03

69、B 4020BH 30 3 40203H 46 C 4020CH 30 3 40203H 46 C 4020CH 19 4 40204H 21 D 4020DH 19 4 40204H 21 D 4020DH 12 512 5 40205H 06 E 4020EH 40205H 06 E 4020EH 02 602 6 40206H 40206H 0E F0E F 4020FH 4020FH显示代码显示代码1616进制数进制数6666 数码管显示代码表数码管显示代码表 7 7段数码显示代码表段数码显示代码表(16(16进制进制) ) a b c d e f g a b c d e f g 代码

70、代码 显示数码显示数码 0 00 0 1 1 0 00 0 1 1 0 0 12 12 5 5 0 0 0 0 00 0 0 0 0 1 1 0 0 02 02 6 6 0 0 00 0 0 1 1 0 0 00 0 0 08 08 A A 0 0表示亮表示亮 1 1表示灭表示灭 0 0 00 0 0 1 1 1 1 1 1 0 0 0E 0E F F 6767 1616进制数码管进制数码管 a a b f b f c e c e d d g g XLAT XLAT 命令的执行过程:命令的执行过程: . .寻址寻址 EA= (BX)+(AL) = 0200H+0005H=0205 EA= (B

71、X)+(AL) = 0200H+0005H=0205 PA= (DS)10H + EA PA= (DS)10H + EA = 4000H10H +0205H = 4000H10H +0205H =40205H =40205H . .执行指令执行指令 (40205H) AL (40205H) AL . .执行结果:执行结果:(AL)=12H (AL)=12H 数码管显示数码管显示 5 5 6868 3.3.地址传送指令地址传送指令 地址传送指令指令表地址传送指令指令表 指令格式指令格式 指令功能指令功能 LEA REGLEA REG,SRC REG SRC REG EAsrcEAsrc LDS

72、REG LDS REG,SRC REG SRC REG EAsrcEAsrc,DS DS (SRC+2SRC+2) LES REGLES REG,SRC REG SRC REG EAsrcEAsrc,ES ES (SRC+2SRC+2) LFSLFS REGREG,SRC REG SRC REG EAsrcEAsrc,FS FS (SRC+2SRC+2) LGS REGLGS REG,SRC REG SRC REG EAsrcEAsrc,GS GS (SRC+2SRC+2) LSS REGLSS REG,SRC REG SRC REG EAsrcEAsrc,SS SS (SRC+2SRC+2)

73、 注:注:LFSLFS、LGSLGS、LSSLSS为为8038680386及后续机型使用及后续机型使用 6969 说明:说明: . REG 16 . REG 16 位通用寄存器位通用寄存器(AX(AX,BXBX,CXCX,DXDX,SISI,DIDI,SPSP,BP)BP) . SRC . SRC 源操作数地址,是各种寻址方式的源操作数地址,是各种寻址方式的存储器地址。存储器地址。不允许是不允许是REGREG和和SEGREGSEGREG。 . .EAsrcEAsrc 源操作数地址偏移地址源操作数地址偏移地址 .LDS.LDS、LES LES 是传送是传送EAEA和段首址指令,用于程和段首址指令

74、,用于程序转移序转移. . 7070 例例1.1.设设BX=1248HBX=1248H,执行指令:,执行指令: LEA DXLEA DX,20HBX20HBX解:解: 求求EA = 20H + (BX) EA = 20H + (BX) = 20H + 1248H = 20H + 1248H = 1268H = 1268H 执行操作:执行操作:EA DXEA DX 执行结果:执行结果:DX = 1268H DX = 1268H 7171 例例2.2.设设(DS)=2000H(DS)=2000H,(BX)=1000H(BX)=1000H,ADDR= 0020HADDR= 0020H,(SI)= 6

75、D50H, (21020H)=1080H,(SI)= 6D50H, (21020H)=1080H,(21022H)=4000H.(21022H)=4000H.执行指令:执行指令:LDS SI,ADDRBXLDS SI,ADDRBX解:解:. .求求PA=(DS)10H+ADDR+(BX)PA=(DS)10H+ADDR+(BX) =200000+0020H+1000H =200000+0020H+1000H = 21020H = 21020H . .执行操作:(执行操作:(21020H21020H) SISI, (21022H21022H) DS DS . . 执行结果:执行结果:(SI)=10

76、80H,(DS)=4000H(SI)=1080H,(DS)=4000H 由此可见,执行前由此可见,执行前(DS)=2000H(DS)=2000H,执行指令后,执行指令后(DS)=4000H(DS)=4000H,说明是数据段转移。,说明是数据段转移。7272 4.4.标志寄存器传送指令标志寄存器传送指令指令格式指令格式 指令功能指令功能 LAHF LAHF FlagslsbAHFlagslsbAH ( (标志寄存器低字节送标志寄存器低字节送AH)AH) SAHF SAHF AHFlagslsbAHFlagslsb (AH(AH送标志寄存器低字节送标志寄存器低字节) ) PUSHF SPSP-1,

77、(SP)Flagsmsb PUSHF SPSP-1,(SP)Flagsmsb( (标志高字节进栈标志高字节进栈) ) SPSP-1,(SP)Fllagslsb SPSP-1,(SP)Fllagslsb( (标志低字节进栈标志低字节进栈) ) POPF Flagslsb(SP),SPSP+1 POPF Flagslsb(SP),SPSP+1( (标志低字节出栈标志低字节出栈) ) Fllagsmsb(SP),SPSP+1 Fllagsmsb(SP),SPSP+1( (标志高字节出栈标志高字节出栈) ) 说明:说明:FlagslsbFlagslsb表示表示PSW PSW 的低字节,的低字节,Fla

78、gsmsbFlagsmsb表示表示Flags Flags 的高字节。的高字节。7373 例例1.1.执行指令:执行指令:LAHFLAHF 设设PSWPSW为:为:D D15 15 D D14 14 D D13 13 D D12 12 OFOF DF IFDF IF TFTF SFSF ZFZF D D5 5 AFAF D D3 3 PFPF D D1 1 CFCF0 0 0 0 10 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 1 即:即:PSW = 0895HPSW = 0895H 执行指令执行指令: (AH) : (AH) PSWls

79、bPSWlsb 执行结果:执行结果: (AH)=95H(AH)=95H7474例例2 2设设PSW= 0885HPSW= 0885H,SS= 4000HSS= 4000H,SP=1000HSP=1000H,执行指令:执行指令:PUSHF(PUSHF(标志进栈标志进栈) ) 求求PA=(SS)PA=(SS)10H+(SP)=40000+1000=41000H 10H+(SP)=40000+1000=41000H 执行过程执行过程PSWPSW:08 85 MEM PA08 85 MEM PA 40000H SS 40000H SS 85H 40FFEH SPSP-1,(SP)PSWlsb 85H

80、40FFEH SPSP-1,(SP)PSWlsb 08H 40FFFH SPSP-1,(SP)PSWmsb 08H 40FFFH SPSP-1,(SP)PSWmsb 23H 41000H SP 23H 41000H SP 执行命令前执行命令前7575 5.5.类型转换指令类型转换指令(第(第3 3节)节)指令格式指令格式 指令功能指令功能 CBW (AL)CBW (AL)符号扩展到符号扩展到AH,AH,形成形成AX AX CWD (AX)CWD (AX)符号扩展到符号扩展到DX,DX,形成形成DX:AX DX:AX 双字双字 CDQ (EAX)CDQ (EAX)符号扩展到符号扩展到EDX,ED

81、X,形成形成EDX,EAX 4EDX,EAX 4字字 BSWAP BSWAP 字节交换字节交换 (1). CBW (1). CBW 字节转字指令字节转字指令 指令格式:指令格式: CBWCBW 执行操作:执行操作:ALAL的内容符号扩展到的内容符号扩展到AHAH,形成,形成AXAX。7676 例例1 1:设:设(AX)=6756H= 0110011101010110B(AX)=6756H= 0110011101010110B 写出指令写出指令 CBW CBW 的执行过程的执行过程 解:解: AH ALAH AL 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0101011

82、0 1010110 执行指令前执行指令前 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 01010110 1010110 执行指令后执行指令后 即指令执行前即指令执行前 (AX)=6756H(AX)=6756H 执行指令后执行指令后 (AX)=0056H(AX)=0056H7777例例2 2:设:设(AX)= 8696H=1000011010010110B(AX)= 8696H=1000011010010110B 写出指令写出指令 CBW CBW 的执行过程的执行过程 解:解: AH ALAH AL 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 100

83、10110 0010110 执行指令前执行指令前 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 10010110 0010110 执行指令后执行指令后 即指令执行前即指令执行前 (AX)=8696H(AX)=8696H 执行指令后执行指令后 (AX)=0FF96H(AX)=0FF96H7878 (2). CWD (2). CWD 字转双字指令字转双字指令 指令格式:指令格式: CWDCWD 执行操作:执行操作:AXAX的内容符号扩展到的内容符号扩展到DXDX,形成,形成DX:AX DX:AX 组成的双字。组成的双字。例例1 1:设:设(DX:AX)=1234H:6756H

84、(DX:AX)=1234H:6756H 写出指令写出指令 CWD CWD 的执行过程的执行过程解:解: DX AX DX AX 执行前执行前 0001001000110100 0001001000110100 0 0110011101010110110011101010110执行后执行后 00000000000000000000000000000000 0 0110011101010110110011101010110 即即 执行指令后执行指令后 (DX:AX)=(DX:AX)=0000H0000H:6756H:6756H7979例例3 3:设:设(DX:AX)=1234H:8756H (DX

85、:AX)=1234H:8756H 写出指令写出指令 CWD CWD 的执行过程的执行过程解:解: DX AX DX AX 执行前执行前 00010001001000100011001101000100 1 1000000011101110101010101100110执行后执行后 11111111111111111111111111111111 1 1000000011101110100101011010110 即即 执行指令后执行指令后 (DX:AX)=(DX:AX)=0FFFFH0FFFFH: :8 87 75 56 6H H8080 以下指令均为以下指令均为8038680386或后续机器

86、中使用或后续机器中使用,P,P5858有例,本课程作一般了解,同学们可自学。有例,本课程作一般了解,同学们可自学。 (3).CWDE (3).CWDE 字转双字指令字转双字指令(AXAX符号扩展到符号扩展到EAXEAX) (4).CDQ(4).CDQ双双 字转字转4 4字指令字指令(EAXEAX符号扩展到符号扩展到EDXEDX) (5).BSWAP (5).BSWAP 字节交换指令字节交换指令8181 作业作业判断下列指令的正确与错误,改正错误指令判断下列指令的正确与错误,改正错误指令 MOV AXMOV AX,2300H 2300H LEA BXLEA BX,AX AX LEA DXLEA

87、DX,4000H 4000H LEA BXLEA BX,CS CS PUSH BX PUSH BX PUSH 1000H PUSH 1000H PUSH AH PUSH AH 8282 PUSH 25HDXPUSH 25HDX POP AL POP AL POP 60IP POP 60IP POP 3000H POP 3000H POP 50HBX POP 50HBX POP CS POP CS:1000H1000H XCHG CX XCHG CX,AXAX8383 课堂练习课堂练习请指出下列指令哪些是错误的,并说明原因。请指出下列指令哪些是错误的,并说明原因。 指令指令 错误原因错误原因MO

88、V AXMOV AX,BX+SI BX+SI ADD AXADD AX, SI+DISI+DIADD AXADD AX,-3-3BLBL LEA SILEA SI, BX+DIBX+DIJMP CXJMP CXMOV ESMOV ES,DSDSMOV ALMOV AL,3003008484 课堂练习解答课堂练习解答请指出下列指令哪些是错误的,并说明原因。请指出下列指令哪些是错误的,并说明原因。 指令指令 错误原因错误原因MOV AXMOV AX,BX+SI BX+SI 源操作数缺中括号源操作数缺中括号 ADD AXADD AX,SI+DI SI+DI 源操作数缺基址寄存器源操作数缺基址寄存器A

89、DD AXADD AX,-3BL -3BL 源操作数中源操作数中BLBL没有间址功能没有间址功能LEA SILEA SI,BX+DI BX+DI 正确正确JMP CX JMP CX CXCX不允许存转移地址不允许存转移地址MOV ESMOV ES,DS DS 不允许两段寄存器之间传送数据不允许两段寄存器之间传送数据MOV ALMOV AL,300 DST300 DST、SRC SRC 数据类型不匹配数据类型不匹配8585 3.3.2 3.3.2 算术指令算术指令 (3 3月月21/2221/22日)日) 1.1.加法指令加法指令 指令格式指令格式 执行操作执行操作 ADD DSTADD DST

90、,SRC (DST)+(SRC)DST SRC (DST)+(SRC)DST 加法加法 ADC DSTADC DST,SRC (DST)+(SRC)+CFDST SRC (DST)+(SRC)+CFDST 带进位加带进位加INC DST (DST)+1DST INC DST (DST)+1DST 加加1 1指令指令 注意事项:注意事项: (1).(1).加法指令影响标志位加法指令影响标志位:CF,OF,PF,SF,ZF,AF:CF,OF,PF,SF,ZF,AF (2).DST (2).DST取值为:取值为:AX,REG/MEMAX,REG/MEM。 SRCSRC取值为:取值为:AX,REG/M

91、EM,DATAAX,REG/MEM,DATA8686 例例1.1.试编写双字相加试编写双字相加的指令段的指令段,实现,实现 23451234H + 56782356H23451234H + 56782356H(双字)(双字)的加法运算。的加法运算。 解:设第一个双字由解:设第一个双字由DX:AXDX:AX组成组成,第第2 2个双字个双字CX:BXCX:BX组成,相加结果存放在组成,相加结果存放在DX:AXDX:AX中,指令段中,指令段如下:如下: MOV DXMOV DX,2345H2345H MOV AX MOV AX,1234H1234H MOV CX MOV CX,5678H5678H

92、MOV BX MOV BX,2356H2356H8787 ADD AXADD AX,BX BX ;低字相加;低字相加 ADC DXADC DX,CX CX ;高字带进位相加;高字带进位相加 2.2.减法指令减法指令 指令格式指令格式 执行操作执行操作 说说 明明SUB DST,SRC (DST)-(SRC)DST SUB DST,SRC (DST)-(SRC)DST 减法减法 SBB DST,SRC (DST)-(SRC)-CFDST SBB DST,SRC (DST)-(SRC)-CFDST 带进位减法带进位减法DEC DST (DST)-1STD DEC DST (DST)-1STD 减减

93、1 1指令指令 NEG DST 0(DST)DST NEG DST 0(DST)DST 变补变补 CMP DST,SRC (DST)-(SRC),CMP DST,SRC (DST)-(SRC),置标志位置标志位: :置条件标志置条件标志 8888 注意事项:注意事项: (1).(1).减法指令影响标志位:减法指令影响标志位:CF,OF,PF,SF,ZF,AFCF,OF,PF,SF,ZF,AF (2).DST (2).DST 取值为:取值为:AX,REG/MEMAX,REG/MEM。 SRC SRC 取值为:取值为:AX,REG/MEM,DATAAX,REG/MEM,DATA 例例2 2写出下列

94、各指令的执行结果写出下列各指令的执行结果 MOV BXMOV BX,1H 1H SUB AX SUB AX,AX AX SUB AX SUB AX,BX BX DEC AX DEC AX MOV AL MOV AL,0AH 0AH NEG AL NEG AL 8989 解:解: 指令指令 执行结果执行结果MOV BXMOV BX,1H 1H (BX)=1H(BX)=1HSUB AXSUB AX,AX AX (AX)=0H(AX)=0HSUB AXSUB AX,BX BX (AX)=0-1H=0FFFFH(AX)=0-1H=0FFFFHDEC AX DEC AX (AX)=(AX)-1=0FFF

95、EH(AX)=(AX)-1=0FFFEHMOV ALMOV AL,0AH 0AH (AL)=0AH(AL)=0AHNEG AL NEG AL (AL)=0(AL)=0-0AH=0F6H(AL)=0(AL)=0-0AH=0F6H9090 对对 CMP CMP 指令执行结果作如下说明:指令执行结果作如下说明: 序号序号 所给条件所给条件 执行结果执行结果 1 DST0,SRC0 DSTSRC,1 DST0,SRC0 DSTSRC,则则SF=0,OF=0 SF=0,OF=0 DSTSRC, DST0,SRC0,SRCSRC DSTSRC SF=1, SF=1,则则DSTSRC DSTSRC OF=1

96、:SF=0, OF=1:SF=0,则则DSTSRC DSTSRC DSTSRC 3 DST0 OF=0:SF=0, 3 DST0 OF=0:SF=0,则则DSTSRC DSTSRC SF=1, SF=1,则则DSTSRC DSTSRC OF=1:SF=0, OF=1:SF=0,则则DSTSRC DSTSRC DSTSRC 4 DST0,SRC0, 4 DST0,SRCbab转转 且且ZF=0ZF=0高于等于高于等于/ /不低于不低于 JAE/JNB CF=0 JAE/JNB CF=0 前次结果前次结果abab转转 或或ZF=1ZF=1低于低于/ /不高于不高于 JB/JNAE CF=1 JB/

97、JNAE CF=1 前次结果前次结果a baa转转 且不等于且不等于 且且ZF=0ZF=0大于等于大于等于 JGE/JNL SF=OF JGE/JNL SF=OF 前次结果转前次结果转 不小于不小于 或或ZF=1 ZF=1 小于不大于小于不大于 JL/JNGE SF=OF JL/JNGE SF=OF 前次结果前次结果 NUM2NUM1NUM2时时,(DL)= “G”, ,(DL)= “G”, 当当NUM1=NUM2NUM1=NUM2时时, (DL)=“E”, , (DL)=“E”, 否否则则 (DL)=“L”(DL)=“L” 3.3.条件设置指令条件设置指令 条件设置指令是条件设置指令是803

98、8680386及后续机型使用的及后续机型使用的1 1组指组指令,此类指令可作为一般了解,学生自学。令,此类指令可作为一般了解,学生自学。 4.4.循环指令在第循环指令在第5 5章介绍。章介绍。 5.5.子程序调用指令放在第子程序调用指令放在第6 6章介绍。章介绍。 6.6.中断指令放在第中断指令放在第6 6章介绍章介绍155155 3.3.6. 3.3.6. 处理机控制与杂项操作指令处理机控制与杂项操作指令 表表1. 1. 标志位操作指令表标志位操作指令表指令格式指令格式 执行操作执行操作 说说 明明 CLC CF 0 CLC CF 0 进位位置进位位置 0 0 CMC CF CMC CF求反

99、求反 进位位求反进位位求反 STC CF 1 STC CF 1 进位位置进位位置1 1 CLD DF 0 CLD DF 0 方向标志位置方向标志位置0 0 STD DF 1 STD DF 1 方向标志位置方向标志位置1 1 CLI IF 0 CLI IF 0 中断标志位置中断标志位置0 0 STI IF 0 STI IF 0 中断标志位置中断标志位置1 1 156156 表表2.2.其它处理机控制指令其它处理机控制指令指令格式指令格式 执行操作执行操作 说说 明明 NOP NOP 无操作无操作 HLT HLT 停机停机 CPU CPU 进入暂停状态进入暂停状态 WAIT WAIT 等待等待 检

100、测检测CPUCPU的的TESTTEST是否低电是否低电 平平, ,当当TESTTEST为低电平退出。为低电平退出。 ESC ESC 换码换码 LOCK LOCK 总线锁定总线锁定 封锁封锁CPUCPU以外的控制器使以外的控制器使 用总线用总线 157157 表表3. 3. 杂项操作指令杂项操作指令(80286(80286及后续机型用)及后续机型用) 指令格式指令格式 执行操作执行操作 BOUND BOUND Reg,memReg,mem RegReg存放当前数组下标存放当前数组下标 memmem存放数组上下界存放数组上下界 ENTER imm16,imm8 imm16ENTER imm16,imm8 imm16定义堆栈帧大小定义堆栈帧大小 imm8 imm8 定义过程嵌套数定义过程嵌套数 LEAVE LEAVE 释放堆栈帧空间释放堆栈帧空间 (SP) (BP)(SP) (BP) (BP) Pop() (BP) Pop()158158 作业作业 P P116116 3.51 3.51159159160160161161

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号