最新微机原理第三章课件PPT课件.ppt

上传人:豆**** 文档编号:59520990 上传时间:2022-11-10 格式:PPT 页数:175 大小:1.75MB
返回 下载 相关 举报
最新微机原理第三章课件PPT课件.ppt_第1页
第1页 / 共175页
最新微机原理第三章课件PPT课件.ppt_第2页
第2页 / 共175页
点击查看更多>>
资源描述

《最新微机原理第三章课件PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新微机原理第三章课件PPT课件.ppt(175页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、微机原理第三章课件微机原理第三章课件3.1 3.1 指令系统的概述及寻址方式指令系统的概述及寻址方式 一条指令需要指出两部分内容:一条指令需要指出两部分内容:1 1、要进行什么操作(由操作码指出)、要进行什么操作(由操作码指出)2 2、指令所涉及的操作数和操作结果存放的位置、指令所涉及的操作数和操作结果存放的位置 1)161)16位寄存器为位寄存器为AX,BX,CX,DX,SI,DI,SP,BPAX,BX,CX,DX,SI,DI,SP,BP;2)8 2)8位寄存器为位寄存器为AH,AL,BH,BL,CH,CL,DH,DLAH,AL,BH,BL,CH,CL,DH,DL;3)3)源操作数,目的操作

2、数都(同时)可以使用源操作数,目的操作数都(同时)可以使用 寄存器寻址寄存器寻址说明:说明:例:例:MOV SS,AXMOV SS,AX指令执行前指令执行前(AX)=3064H(AX)=3064H (SS)=1234H (SS)=1234H指令执行后指令执行后(SS)=3064H(SS)=3064H (AX)(AX)保持不变保持不变3.3.存储器寻址方式存储器寻址方式1 1)直接寻址方式)直接寻址方式 操作数在存储器中,存储单元的地址由操作数在存储器中,存储单元的地址由指令直接给出指令直接给出格式:格式:操作码操作码 地址表达式或地址表达式或 地址表达式地址表达式 或或 数字表达式数字表达式

3、例:例:MOV AL,TABLEMOV AL,TABLE MOV AL,TABLE MOV AL,TABLE MOV AL,1000H MOV AL,1000HTABLE TABLE 是在数据段定义的一个字节数组的首地址标号是在数据段定义的一个字节数组的首地址标号(变量名),其偏移地址为(变量名),其偏移地址为1000H1000H例如:例如:MOV AX,1000HMOV AX,1000H指令执行前指令执行前:(DS)=3000H:(DS)=3000H,(31000)=12H,(31000)=12H,(31001)=34H (31001)=34H3412H3412H指令执行后指令执行后:(AX

4、)=?:(AX)=?31000H31000H31001H31001H12H12H34H34HAXAX 默认的段寄存器位默认的段寄存器位DSDS,如果不是,如果不是DSDS,则需要,则需要用前缀说明用前缀说明说明:说明:MOV AX,ES:1000HMOV AX,ES:1000H将将ESES段中段中1000H1000H和和1001H1001H两个单元的内容送到两个单元的内容送到BXBX中中MOV AX,1000HMOV AX,1000H 基址寄存器:基址寄存器:BX,BPBX,BP;变址寄存器:;变址寄存器:SI,DISI,DI操作数在存储器中,存储单元的有效地址在寄存器中。操作数在存储器中,存

5、储单元的有效地址在寄存器中。2 2)寄存器间接寻址方式)寄存器间接寻址方式格式:格式:操作码操作码 基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 例:例:MOV AX,BX MOV AX,BX MOV AX,SI MOV AX,SI例如:例如:MOV AX,BXMOV AX,BX假设指令执行前假设指令执行前:(DS)=3000H(DS)=3000H,(BX)=1010H,(BX)=1010H,(31010)=12H(31010)=12H(31011)=24H(31011)=24H2412H2412H指令执行后指令执行后:(AX)=?:(AX)=?AXAX31010H31010H31

6、011H31011H12H12H24H24H存储器存储器 若指令中指定的寄存器是若指令中指定的寄存器是BX,SI,DIBX,SI,DI,则操作数,则操作数默认在数据段中,即在默认在数据段中,即在DSDS中为段基址;中为段基址;若指令中指出寄存器为若指令中指出寄存器为BPBP,则操作数默认在堆栈段,则操作数默认在堆栈段,即在即在SSSS中为段基址中为段基址说明:说明:1)1)以以SI,DI,BXSI,DI,BX为寄存器间接寻址为寄存器间接寻址默认段寄存器为默认段寄存器为DSDS如使用其它段寄存器需要加前缀说明如使用其它段寄存器需要加前缀说明MOV AX,ES:BXMOV AX,ES:BX2)2)

7、以以BPBP为寄存器间接寻址为寄存器间接寻址默认段寄存器为默认段寄存器为SSSS如使用其它段寄存器需要加前缀说明如使用其它段寄存器需要加前缀说明MOV AX,ES:BPMOV AX,ES:BP3 3)寄存器相对寻址方式)寄存器相对寻址方式 操作数在存储器中,存储单元的有效地址是寄存器操作数在存储器中,存储单元的有效地址是寄存器的值与一个的值与一个整数整数之和。之和。格式:格式:操作码操作码 变量名变量名 基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 操作码操作码 变量名变量名+基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 操作码操作码 符号名符号名 基址寄存器名或者变址

8、寄存器名基址寄存器名或者变址寄存器名 操作码操作码 变量名变量名+基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 操作码操作码 数字表达式数字表达式基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 例:例:TABLE TABLE 是在数据段定义的一个字节数组的是在数据段定义的一个字节数组的首地址标号(也成变量名)则:首地址标号(也成变量名)则:MOV SI,5 MOV SI,5 MOV AL,TABLESI MOV AL,TABLESI或者或者 MOV AL,TABLE+SI MOV AL,TABLE+SI 若指令中指定的寄存器是若指令中指定的寄存器是BX,SI,DIBX,S

9、I,DI,则操作数,则操作数默认在数据段中,即在默认在数据段中,即在DSDS中为段基址;中为段基址;若指令中指出寄存器为若指令中指出寄存器为BPBP,则操作数默认在附加,则操作数默认在附加数据段中,即在数据段中,即在ESES中为段基址中为段基址说明:说明:4 4)基址变址寻址方式)基址变址寻址方式MOV AX,BXSIMOV AX,BXSI或或MOV AX,BX+SIMOV AX,BX+SI操作数的偏移地址是两个指定寄存器之和操作数的偏移地址是两个指定寄存器之和格式:格式:操作码操作码 基址寄存器名基址寄存器名变址寄存器名变址寄存器名 操作码操作码 基址寄存器名基址寄存器名+变址寄存器名变址寄

10、存器名 例:例:MOV AX,BXSIMOV AX,BXSI用途:用途:5 5)相对基址变址寻址方式)相对基址变址寻址方式 操作数偏移地址在指定寄存器的值和相对操作数偏移地址在指定寄存器的值和相对偏移量之和偏移量之和格式:格式:操作码操作码 变量名变量名 基址寄存器名基址寄存器名变址寄存器名变址寄存器名 操作码操作码 变量名变量名+基址寄存器名基址寄存器名+变址寄存器名变址寄存器名-MOV AX,MASKBXSIMOV AX,MASKBXSI或或MOV AX,MASKBX+SIMOV AX,MASKBX+SI或或MOV AX,MASK+BX+SIMOV AX,MASK+BX+SI例:例:MOV

11、 AX,MASKBXDIMOV AX,MASKBXDI 若指令中指定的基址寄存器是若指令中指定的基址寄存器是BXBX,则操作数,则操作数默认在数据段中,即在默认在数据段中,即在DSDS中为段基址;中为段基址;若指令中指定的基址寄存器为若指令中指定的基址寄存器为BPBP,则操作数默认在,则操作数默认在附加数据段中,即在附加数据段中,即在ESES中为段基址中为段基址说明:说明:用途:用途:小结小结综观综观8086/80888086/8088寻址方式,其操作数有三种类型:寻址方式,其操作数有三种类型:立即操作数立即操作数寄存器操作数寄存器操作数存储器操作数存储器操作数指令寻址有以下四种:指令寻址有以

12、下四种:1.1.段内直接寻址段内直接寻址2.2.段间寻址方式段间寻址方式3.3.段内间接寻址段内间接寻址4.4.段间间接寻址段间间接寻址确定下一条要执行指令的地址的方法确定下一条要执行指令的地址的方法1.1.段内直接寻址段内直接寻址格式:格式:指令名指令名 SHORT SHORT 转移目标地址标号转移目标地址标号指令名指令名 转移目标地址标号转移目标地址标号指令名指令名 NEAR PTR NEAR PTR转移目标地址标号转移目标地址标号JMP SHORT NEXTJMP SHORT NEXT这种指令只改变这种指令只改变IPIP寄存器的值,而不改变寄存器的值,而不改变CSCS的值的值位移量位移量

13、指令指令IPIP寄存器寄存器IPIP寄存器寄存器段内寻址示意图段内寻址示意图2.2.段间直接寻址段间直接寻址格式:格式:指令名指令名 FAR PTR FAR PTR 转移目标地址标号转移目标地址标号指令名指令名 段地址段地址:段内偏移量段内偏移量JMP FAR PTR NEXT1JMP FAR PTR NEXT1这种指令不仅改变这种指令不仅改变IPIP寄存器的值,而且改变寄存器的值,而且改变CSCS的值的值地址地址指令指令段间寻址示意图段间寻址示意图段地址段地址IPIP寄存器寄存器CSCS寄存器寄存器3.3.段内间接寻址段内间接寻址格式:格式:指令名指令名 16 16寄存寄名寄存寄名指令名指令

14、名 WORD PTR WORD PTR 存储器寻址方式存储器寻址方式JMP WORD PTR TABLEBXJMP WORD PTR TABLEBX这种指令只改变这种指令只改变IPIP寄存器的值,而不改变寄存器的值,而不改变CSCS的值的值寄存器编号寄存器编号指令指令段内间接寻址示意图段内间接寻址示意图IPIP寄存器寄存器转移目标地址转移目标地址的偏移地址的偏移地址1616位寄位寄存器存器存储器寻址方存储器寻址方式式指令指令IPIP寄存器寄存器转移目标地址转移目标地址的偏移地址的偏移地址存储器存储器计算物理地址计算物理地址4.4.段间间接寻址段间间接寻址格式:格式:指令名指令名 DWORD P

15、TR DWORD PTR 存储器寻址方式存储器寻址方式JMP DWORD PTR TABLEBXJMP DWORD PTR TABLEBX这种指令不仅改变这种指令不仅改变IPIP寄存器的值,而且改变寄存器的值,而且改变CSCS的值的值段间间接寻址示意图段间间接寻址示意图存储器寻存储器寻址方式址方式指令指令IPIP寄存器寄存器转移目标地址转移目标地址的偏移地址的偏移地址存储器存储器计算物理地址计算物理地址CSCS寄存器寄存器3.2 8086/8088CPU3.2 8086/8088CPU的指令系统的指令系统3.2.1 3.2.1 数据传送指令数据传送指令3.2.2 3.2.2 算术运算指令算术运

16、算指令3.2.3 3.2.3 逻辑运算和移位指令逻辑运算和移位指令3.2.4 3.2.4 串操作指令串操作指令3.2.5 3.2.5 控制转移指令控制转移指令3.2.6 3.2.6 处理器控制指令处理器控制指令3.2.1 3.2.1 数据传送指令数据传送指令u通用传送指令通用传送指令u累加器传送指令累加器传送指令u地址传送指令地址传送指令u标志传送指令标志传送指令1.1.通用传送指令通用传送指令1)1)最基本的传送指令最基本的传送指令MOVMOV格式:格式:MOV MOV 目的操作数目的操作数 源操作数源操作数功能功能:将源操作数存入目的操作数的寄存器或存储单元:将源操作数存入目的操作数的寄存

17、器或存储单元 寄存器寄存器内存内存实现实现:寄存器:寄存器寄存器寄存器 内存内存/寄存器寄存器立即数立即数 寄存器寄存器段寄存器段寄存器 内存内存段寄存器段寄存器例:例:MOV AX,BX MOV AX,BX MOV AX,1010H MOV AX,1010H 说明:说明:1 1、目的操作数不能是立即数、目的操作数不能是立即数2 2、不能在两个内存单元之间直接传送数据、不能在两个内存单元之间直接传送数据3 3、不能将立即操作数送给段寄存器、不能将立即操作数送给段寄存器4 4、段寄存器之间不能相互传送数据、段寄存器之间不能相互传送数据5 5、CS,IP,PSWCS,IP,PSW不能作为目的操作数

18、,但可以作为不能作为目的操作数,但可以作为 源操作数源操作数6 6、源操作数和目的操作数字长必须相等、源操作数和目的操作数字长必须相等7 7、MOVMOV指令不影响标志位指令不影响标志位1.MOV MEM2,MEM11.MOV MEM2,MEM1修改为:修改为:MOV AX,MEM1 MOV AX,MEM1 MOV MEM2,AX MOV MEM2,AX2.MOV DS,2000H2.MOV DS,2000H修改为:修改为:MOV AX,2000H MOV AX,2000H MOV DS,AX MOV DS,AX3.MOV ES,DS3.MOV ES,DS修改为:修改为:MOV AX,DS M

19、OV AX,DS MOV ES,AX MOV ES,AX例题:例题:2)2)数据进栈指令数据进栈指令PUSHPUSH和出栈指令和出栈指令POPPOP 堆栈是一段内存区域,可以用于保护中间数据、堆栈是一段内存区域,可以用于保护中间数据、运算结果或某些寄存器的值,需要时可以从堆栈中运算结果或某些寄存器的值,需要时可以从堆栈中将数据取出来。将数据取出来。堆栈按照先进后出的原则来保存数据堆栈按照先进后出的原则来保存数据 微机一般把内存的一段区间作为堆栈使用,即微机一般把内存的一段区间作为堆栈使用,即堆栈段堆栈段SSSS。段内物理地址由。段内物理地址由SSSS和和SPSP决定,决定,SPSP始终指始终指

20、向栈顶。对于数据的的保存和恢复需要有由堆栈指向栈顶。对于数据的的保存和恢复需要有由堆栈指令来完成令来完成格式:格式:PUSH PUSH 操作数操作数 POP POP 操作数操作数假设假设(SSSS)=9000H=9000H,堆栈段位堆栈段位64KB64KB(SP)=0E200H(SP)=0E200H则:则:整个堆栈段的物理地址整个堆栈段的物理地址范围为:范围为:90000H9FFFFH堆栈物理地址为:堆栈物理地址为:9E200H9E200H举例:举例:PUSH AX;PUSH AX;将将AXAX内容压入堆栈内容压入堆栈POP BX;POP BX;将堆顶内容弹出到将堆顶内容弹出到BXBX(1)(

21、1)(2)(2)说明:说明:1 1、80868086的堆栈操作总是按字进行的;的堆栈操作总是按字进行的;2 2、每推入一个字,、每推入一个字,SPSP减减2 2,一个字的高字节放,一个字的高字节放在堆栈的较高地址,低字节放在较低地址;弹在堆栈的较高地址,低字节放在较低地址;弹出一个字,出一个字,SPSP加加2 2;3 3、堆栈的内容按先进后出的原则;、堆栈的内容按先进后出的原则;4 4、不能使用立即寻址方式;、不能使用立即寻址方式;5 5、PUSHPUSH和和POPPOP指令不影响标志位;指令不影响标志位;6 6、CSCS可以压入堆栈,但栈中的值出断点的之可以压入堆栈,但栈中的值出断点的之外外

22、 不能弹入到不能弹入到CSCS3)3)标志进栈指令标志进栈指令PUSHFPUSHF和出栈指令和出栈指令POPFPOPF将将1616位堆栈数据压入或弹出到位堆栈数据压入或弹出到标志寄存器标志寄存器(PSW)(PSW)中中PUSHPUSH执行的操作:执行的操作:(SP)(SP)(SP)-2(SP)-2(SP)+1,(SP)(SP)+1,(SP)PSWPSWPOPPOP执行的操作:执行的操作:(SP)+1,(SP)(SP)+1,(SP)PSWPSW(SP)+2(SP)+2(SP)(SP)设置设置TF=1TF=1则:则:PUSHFPUSHFPOP AXPOP AXOR AH,01HOR AH,01HP

23、USH AXPUSH AXPOPFPOPF4)4)数据交换指令数据交换指令XCHGXCHG格式:格式:XCHG XCHG 目的操作数,源操作数目的操作数,源操作数实现:实现:寄存器寄存器 寄存器,寄存器寄存器,寄存器 内存内存功能:功能:实现源和目的操作数的存放位置实现源和目的操作数的存放位置说明:说明:1 1、目的操作数和源操作数不能为立即数或段寄存器,、目的操作数和源操作数不能为立即数或段寄存器,并且不能同时为内存单元;并且不能同时为内存单元;2 2、CSCS和和IPIP不能为交换指令的源或目的操作数;不能为交换指令的源或目的操作数;3 3、目的和源操作数的取值范围应相同,即同为、目的和源

24、操作数的取值范围应相同,即同为8 8位位或同为或同为1616位;位;XCHG BL,DLXCHG BL,DLXCHG AX,SIXCHG AX,SIXCHG DI,ALXCHG DI,AL XCHG BX,DI XCHG BX,DI XCHG DS,AX XCHG DS,AX例题:例题:错错错错2.2.累加器专用指令累加器专用指令1)1)累加器输入累加器输入/输出指令输出指令ININ,OUTOUT输入指令用于输入指令用于CPUCPU从外设端口接收数据从外设端口接收数据输出指令用于输出指令用于CPUCPU从外设端口发送数据从外设端口发送数据实现:实现:AL 8 AL 8位位I/OI/O端口,端口

25、,AX 16AX 16位位I/OI/O端口端口端口:端口:端口端口:CPUCPU与外设之间通过接口进行数据交换,一个端口与外设之间通过接口进行数据交换,一个端口通常对应接口中的一个或一组寄存器。每个通常对应接口中的一个或一组寄存器。每个8 8位端口有一位端口有一个地址,叫端口号,两个相邻的个地址,叫端口号,两个相邻的8 8位端口可以组成一个位端口可以组成一个1616位地址位地址端口数端口数:外部设备最多可以有外部设备最多可以有6553665536个(个(64KB64KB)个)个 由由A A0 0A A1616译码形成译码形成端口号端口号:即:即外部设备端口地址,为外部设备端口地址,为00000

26、000FFFFHFFFFH。PC机仅使用机仅使用A0A9译码形成译码形成I/O端口地址,即端口地址,即1024H个个端口地址端口地址,因此端口号范围为,因此端口号范围为0000H03FFFH。其中:其中:A9=1表示扩充槽上的端口地址表示扩充槽上的端口地址80868086利用地址纵向的低利用地址纵向的低1616位对位对8 8位位I/OI/O端口的寻址号端口的寻址号u1)1)直接累加器输入直接累加器输入/输出指令输出指令ININ,OUTOUT格式:格式:IN IN 累加器,端口号累加器,端口号 OUT OUT 端口号,累加器端口号,累加器端口号中前端口号中前256个端口个端口(0FFH),可以使

27、用直接的输,可以使用直接的输入入/输出指令:指令中提供端口号输出指令:指令中提供端口号例如:例如:IN AL,50HIN AL,50H IN AX,70H IN AX,70H OUT 44H,AL OUT 44H,AL OUT 80H,AX OUT 80H,AXu2)2)间接累加器输入间接累加器输入/输出指令输出指令ININ,OUTOUT格式:格式:IN IN 累加器,累加器,DXDX OUT DX OUT DX,累加器,累加器所有的端口号所有的端口号(0FFFFH),都可以使用间接的输入,都可以使用间接的输入/输出指令:执行这些指令之前,已经将端口号送输出指令:执行这些指令之前,已经将端口号

28、送入到入到DX中中例如:例如:IN AL,DXIN AL,DX IN AX,DX IN AX,DX OUT DX,AL OUT DX,AL OUT DX,AX OUT DX,AX注:注:端口号端口号256256时只能时只能使用间接输入输出指令使用间接输入输出指令3)XLAT3)XLAT换码指令换码指令 使累加器的一个值转换为内存表格中对应的某一使累加器的一个值转换为内存表格中对应的某一个值。个值。换码指令用于编码制的转换换码指令用于编码制的转换格式:格式:XLAT XLAT或或XLAT XLAT 地址标号地址标号功能:功能:(AL)(BX)+(AL)(AL)(BX)+(AL)使用该指令前,内存

29、的表首地址赋给使用该指令前,内存的表首地址赋给BXBX,ALAL中存放中存放表格某一项与表格首地址的位移量,执行表格某一项与表格首地址的位移量,执行BX+ALBX+AL,得,得到该表格中的一个地址,再将此地址所对应单元中的到该表格中的一个地址,再将此地址所对应单元中的值送到值送到ALAL中。中。ALAL为为8 8位无符号数,表格最多为位无符号数,表格最多为256256个代码个代码例题:十进制数字例题:十进制数字0 09的的7段显示码表段显示码表例:求例:求5 5对应的显示码对应的显示码MOV AL,5MOV AL,5MOV BX,OFFSET DISP_TABLEMOV BX,OFFSET D

30、ISP_TABLEXLATXLAT或者或者XLAT XLAT DISP_TABLEDISP_TABLE结果结果(ALAL)=12H=12H3)XLAT3)XLAT换码指令换码指令格式:格式:XCHG XCHG 目的操作数,源操作数目的操作数,源操作数实现:实现:寄存器寄存器 寄存器,寄存器寄存器,寄存器 内存内存功能:功能:实现源和目的操作数的存放位置实现源和目的操作数的存放位置3.3.地址传送指令地址传送指令1)LEA1)LEA偏移地址送寄存器指令偏移地址送寄存器指令(Load(Load Effective Address)Effective Address)格式:格式:LEA 16 LEA

31、 16位寄存器名,存储器寻址方式位寄存器名,存储器寻址方式功能:功能:将源操作数的地址送到一个寄存器中将源操作数的地址送到一个寄存器中例如:例如:LEA AX,2782HLEA AX,2782HLEA BX,BP+SILEA BX,BP+SILEA SP,0482HLEA SP,0482HMOV AX,2782HMOV AX,2782H(2782H)=02H(2782H)=02H2)LDS(Load Pointer into register and 2)LDS(Load Pointer into register and DS)DS)指针送指定寄存器和指针送指定寄存器和DSDS寄存器指令寄存

32、器指令格式:格式:LDS16 LDS16位寄存器名,存储器寻址方式位寄存器名,存储器寻址方式功能:功能:将寻址到的存储单元的第一个源操作数将寻址到的存储单元的第一个源操作数(字字)送送1616位寄存器,第二个源操作数送位寄存器,第二个源操作数送DSDS寄存器寄存器例如:例如:LDS DI,2140HLDS DI,2140HDS:2134HDS:2134HDS:2135HDS:2135HDS:2136HDS:2136HDS:2137HDS:2137H01H01H02H02H05H05H06H06H(DI)=0201H(DI)=0201H(DS)=0605H(DS)=0605H3)LES(Load

33、 pointer into register and 3)LES(Load pointer into register and ES)ES)指针送指定寄存器和指针送指定寄存器和ESES寄存器指令寄存器指令格式:格式:LEA 16 LEA 16位寄存器名,存储器寻址方式位寄存器名,存储器寻址方式功能:功能:将寻址到的存储单元的第一个与源操作数将寻址到的存储单元的第一个与源操作数(字字)送送1616位寄存器,第二个源操作数送位寄存器,第二个源操作数送ESES寄存器寄存器例如:例如:LES DI,2140HLES DI,2140H三类地址传送指令中三类地址传送指令中1616位寄存器不包括段寄存器位寄

34、存器不包括段寄存器说明:说明:DS:2134HDS:2134HDS:2135HDS:2135HDS:2136HDS:2136HDS:2137HDS:2137H01H01H02H02H05H05H06H06H例如:例如:LES DI,2140HLES DI,2140H(DI)=0201H(DI)=0201H(ES)=0605H(ES)=0605H4.4.标志传送指令标志传送指令读取标志位,对标志位进行设置:读取标志位,对标志位进行设置:1 1)读取标志指令)读取标志指令LAHFLAHF2)2)设置标志指令设置标志指令SAHFSAHF格式:格式:LAHF LAHF 或或SAHF SAHF 功能:功

35、能:将标志寄存器中的低将标志寄存器中的低8 8位传送给位传送给AHAH;将将AHAH值传送给标志寄存器值传送给标志寄存器3.2.2 3.2.2 算术运算指令算术运算指令u无符号数和有符号数是否能使用同一套加、无符号数和有符号数是否能使用同一套加、减、乘、除指令?减、乘、除指令?u无符号数和有符号数使用同一套加、减,无符号数和有符号数使用同一套加、减,要求参与运算的两个数必须同为无符号数或要求参与运算的两个数必须同为无符号数或同为有符号数;另外,要用不同的方法判断同为有符号数;另外,要用不同的方法判断运算结果是否溢出。采用什么方法?运算结果是否溢出。采用什么方法?结论:结论:1.1.无符号数和有

36、符号数加法、减法可以使用同一无符号数和有符号数加法、减法可以使用同一套指令系统;无符号数有符号数乘法、除法不套指令系统;无符号数有符号数乘法、除法不可以使用同一套指令系统;可以使用同一套指令系统;2.2.参与运算的必须同是无符号数和有符号数;参与运算的必须同是无符号数和有符号数;3.3.溢出判断:溢出判断:无符号数运算产生溢出时无符号数运算产生溢出时CF=1;CF=1;有符号数运算产生溢出时:有符号数运算产生溢出时:OF=1OF=14.4.无符号数运算产生溢出会设置进位位,对于多字节无符号数运算产生溢出会设置进位位,对于多字节运算,要利用到进位;有符号数运算产生溢出则表示运算,要利用到进位;有

37、符号数运算产生溢出则表示出现错误出现错误3.2.2 3.2.2 算术运算指令算术运算指令1.1.加法指令加法指令格式:格式:ADDADD 目的操作数,源操作数目的操作数,源操作数 ADCADC 目的操作数,源操作数目的操作数,源操作数 INCINC 操作数操作数以上三条指令都可作字节或字操作运算,除以上三条指令都可作字节或字操作运算,除INCINC指令指令不影响标志位不影响标志位CFCF外,其他标志位都受指令结果的影响外,其他标志位都受指令结果的影响PSWPSW中最主要的是中最主要的是ZF,SF,CF,OFZF,SF,CF,OF四位四位uADCADC用于多字节的减法指令中用于多字节的减法指令中

38、ADD ALADD AL,50H50HADD CXADD CX,1000H1000HADD BC+DIADD BC+DI,AXAXADD AXADD AX,BX+2000HBX+2000HADC AXADC AX,SISIADD DXADD DX,SISIADC BXADC BX,2000H2000HADC ALADC AL,5 5例:例:设两个四字节数(设两个四字节数(DX,CXDX,CX)=12345678H=12345678H,(BX,AXBX,AX)=9ABCDEF0H=9ABCDEF0HADD CX,AXADD CX,AXADC DX,BXADC DX,BX例:利用例:利用ADCAD

39、C指令实现多字节加法指令实现多字节加法MOV SI,2000HMOV SI,2000HMOV AX,SIMOV AX,SIMOV DI,3000HMOV DI,3000HADD AX,DIADD AX,DIMOV SI,AXMOV SI,AXMOX AX,SI+2MOX AX,SI+2ADC AX,DI+2ADC AX,DI+2MOV SI+2,AXMOV SI+2,AXMOV AX,0000HMOV AX,0000HADC AX,0000HADC AX,0000HMOV SI+4,AXMOV SI+4,AX2.2.减法指令减法指令格式:格式:SUB SUB 目的操作数,源操作数目的操作数,源

40、操作数 SBB SBB 目的操作数,源操作数目的操作数,源操作数 DEC DEC 操作数操作数 NEG NEG 求补指令求补指令求补指令,即各位取反后末位加求补指令,即各位取反后末位加1 1,结果送回操作数,结果送回操作数通常通常CF=1CF=1uSBBSBB用于多字节的减法指令中用于多字节的减法指令中SUB BXSUB BX,CXCXSUB BP+2SUB BP+2,CLCLSUB ALSUB AL,2020SUB WORD PTRDI,1000HSUB WORD PTRDI,1000HSBB AXSBB AX,2030H2030HSUB WORD PTRDI+2,1000HSUB WORD

41、 PTRDI+2,1000HDEC AXDEC AXDEC ALDEC AL3.3.比较指令比较指令格式:格式:CMP CMP 目的操作数,源操作数目的操作数,源操作数结果不送回,两操作数保持原值,但影响结果不送回,两操作数保持原值,但影响标志位不保存结果标志位不保存结果例如:例如:CMP AX,2000HCMP AX,2000H CMP AL,50H CMP AL,50H CMP AX,BX+DI+100 CMP AX,BX+DI+100 CMP DX,DI CMP DX,DI标志位的状态判断比较结果:标志位的状态判断比较结果:1.ZF=11.ZF=1,则两个操作数相等,则两个操作数相等2.

42、2.对于两个无符号数,对于两个无符号数,CF=0,CF=0,则则OPRD1OPRD2;OPRD1OPRD2;CF=1,CF=1,则则OPRD1OPRD2OPRD1OPRD2;SF=1,OPRD1OPRD2;SF=1,则则OPRD1OPRD2OPRD1OPRD2u两个数一正一负时,则如果两个数一正一负时,则如果OF=SF,OF=SF,则则OPRD1OPRD2;OPRD1OPRD2OPRD1OPRD24.4.乘法指令乘法指令格式:格式:MUL MUL 源操作数源操作数 (无符号数无符号数)若为字节操作若为字节操作(AX)(AL)(AX)(AL)源操作数;源操作数;若为字操作若为字操作(DX),(A

43、X)(AX)(DX),(AX)(AX)源操作数源操作数格式:格式:IMUL IMUL 源操作数源操作数(有符号数)(有符号数)IMULIMUL/MUL BL/MUL BLIMULIMUL/MUL CX/MUL CXIMULIMUL/MUL BYTE PTRDI/MUL BYTE PTRDIIMULIMUL/MUL WORD PTRDI/MUL WORD PTRDI注意:注意:1 1)不允许使用立即数为操作数)不允许使用立即数为操作数2 2)乘法指令只影响)乘法指令只影响CF,OFCF,OF,若,若MULMUL执行后高执行后高字节部分为字节部分为0 0,则,则CF=OF=0,CF=OF=0,否则

44、否则CF=OF=1,CF=OF=1,若若IMULIMUL执行后高字节是低字节部分的扩展,则执行后高字节是低字节部分的扩展,则CF=OF=0,CF=OF=0,否则否则CF=OF=1,CF=OF=1,5.5.除法指令除法指令u除数为被除数的一半长;除数为被除数的一半长;u被除数放在被除数放在AXAX中或中或AX,DXAX,DX中中;u被除数为被除数为1616位时,位时,8 8位商放在位商放在ALAL中,中,8 8位余数在位余数在AHAH;u被除数为被除数为3232位时,位时,1616商放在商放在AXAX中,中,1616位余数在位余数在DXDXu80868086规定余数的符号与被除数相同规定余数的符

45、号与被除数相同uAF,CF,OF,PF,ZF,SFAF,CF,OF,PF,ZF,SF不确定不确定u当被除数不够除数的当被除数不够除数的2 2倍时,应对被除数进行扩展倍时,应对被除数进行扩展格式:格式:DIV DIV 源操作数源操作数 (无符号数无符号数)若为若为字节字节操作操作(AL)(AX)/(AL)(AX)/源操作数的商,源操作数的商,(AH)(AX)/(AH)(AX)/源操作数的余数源操作数的余数;若为若为字字操作操作(AX)(DX),(AX)/(AX)(DX),(AX)/源操作数的商,源操作数的商,(DX)(DX),(AX)/(DX)(DX),(AX)/源操作数的余数源操作数的余数格式

46、:格式:IDIV IDIV 源操作数源操作数(有符号数)(有符号数)DIV CL DIV CL 5.5.符号扩展指令符号扩展指令例除数为一例除数为一8 8位数,被除数位于位数,被除数位于ALAL中的值为中的值为1100001111000011,则将其扩展为,则将其扩展为11111111 1100001111111111 11000011,其高八位置于其高八位置于AHAH中中u 对于无符号数的除法,被除数的扩展是将对于无符号数的除法,被除数的扩展是将AHAH或或DXDX清清0 0u对于有符号数的除法,被除数的扩展是将对于有符号数的除法,被除数的扩展是将AHAH或或DXDX进行低位字节或低位字的符

47、号扩展进行低位字节或低位字的符号扩展格式:格式:CBW CBW字节转化为字(将字节转化为字(将ALAL中的值扩展到中的值扩展到AXAX值)值)格式:格式:CBD CBD字转化为双字(将字转化为双字(将AXAX中的值扩展到中的值扩展到DX,AXDX,AX值)值)3.2.3 3.2.3 逻辑运算和移位指令逻辑运算和移位指令逻辑运算指令逻辑运算指令移位指令移位指令TESTTEST与与ANDAND指令执行的操作相同,但不改变原操作数指令执行的操作相同,但不改变原操作数的值,也不送回结果,只是根据结果设置相应的标的值,也不送回结果,只是根据结果设置相应的标志位。志位。TESTTEST指令一般用来检测测试

48、位是指令一般用来检测测试位是“1”“1”还是还是“0”“0”1.1.逻辑运算指令逻辑运算指令NOTNOT指令不影响标志位,其它指令会使指令不影响标志位,其它指令会使CFCF和和OFOF清零,清零,AFAF不定,并根据一般规则设置不定,并根据一般规则设置SF,ZF,PFSF,ZF,PF逻辑指令功能:逻辑指令功能:u逻辑指令主要用于根据源操作数中数据位的逻辑指令主要用于根据源操作数中数据位的组合格式有选择的使目的操作数某些位改变,组合格式有选择的使目的操作数某些位改变,清零或对它进行测试清零或对它进行测试uTESTTEST指令后面可能跟一条指令后面可能跟一条JNZJNZ或或JZJZ指令,指令,从而

49、根据从而根据Z Z结果判断进行转移结果判断进行转移1)AND1)AND逻辑与运算指令逻辑与运算指令格式:格式:AND AND 目的操作数,源操作数目的操作数,源操作数例如:例如:AND AL,00001111B AND AL,00001111B功能:功能:用来完成使某一个操作数清用来完成使某一个操作数清0 0,而保留其,而保留其它位不变,即将需清它位不变,即将需清0 0的位与的位与“0”“0”相与,要保留的相与,要保留的位与位与“1”“1”相与相与2)OR2)OR逻辑或运算指令逻辑或运算指令格式:格式:OR OR 目的操作数,源操作数目的操作数,源操作数例如:例如:OR AL,1000000B

50、 OR AL,1000000B功能:功能:用来完成使一个操作数的某些位为用来完成使一个操作数的某些位为1 1,而,而保留其它位不变,即将需置保留其它位不变,即将需置1 1的位与的位与“1”“1”相或,相或,要保留的位与要保留的位与“0”“0”相或相或3)XOR3)XOR异或指令异或指令格式:格式:XOR XOR 目的操作数,源操作数目的操作数,源操作数例如:例如:XOR AL,AL XOR AL,AL实现:实现:完成使某一操作数的某些位取反,而保留完成使某一操作数的某些位取反,而保留其余位不变。即将要取反的威位与其余位不变。即将要取反的威位与“1”“1”异或,保异或,保留的位与留的位与“0”“

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁