8088指令系统比较指令(CMP)格式_第1页
8088指令系统比较指令(CMP)格式_第2页
8088指令系统比较指令(CMP)格式_第3页
8088指令系统比较指令(CMP)格式_第4页
8088指令系统比较指令(CMP)格式_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 2 2、比较指令(、比较指令(CMPCMP) 格式:格式:CMP DSTCMP DST,SRCSRC 功能:功能:(1)(DST) (SRC)(1)(DST) (SRC) (2) (2) 根据结果设置根据结果设置6 6个状态标志位个状态标志位 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 与减法指令不同的是所产生的与减法指令不同的是所产生的 两数之差并不取代目的操作数,因两数之差并不取代目的操作数,因 而指令执

2、行后,仅仅改变了标志寄而指令执行后,仅仅改变了标志寄 存器的内容,两操作数的值保持不存器的内容,两操作数的值保持不 变。变。 8088指令系统比较指令(CMP)格 式 当两个无符号数进行比较时, 如果CF=0,ZF=0, (DST)(SRC); 如果CF=1, (DST)(SRC); 如果OFSF=1,则表示(DST)28H,如果采用CMP BL,AL 语句,则CF=1,说明28H-113.若采用CMP BL,AL 语句,则OF=0,SF=1,说明-113-104. 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 两操作数参加

3、比较,根据比较结果确两操作数参加比较,根据比较结果确 定两操作数之间的关系(如等于、大于、小定两操作数之间的关系(如等于、大于、小 于等)于等) 在分支程序设计中,用来产生条件,在分支程序设计中,用来产生条件, 其后往往紧跟的是一条条件转移指令。其后往往紧跟的是一条条件转移指令。 应用场合:应用场合: 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 如:如: CMP DSTCMP DST,SRCSRC P2 P2 P1 P1 条件满足条件满足 吗?吗? 条件有条件有 ZFZF SFSF CFCF OFOF PFPF N N Y

4、 Y 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 CMP AL,0 CMP AL,0 JZ L1 JZ L1 L1: L1: 程序中的表现形式为:程序中的表现形式为: 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 增增1 1指令(指令(INCINC) 格式:格式:INC DSTINC DST 功能:功能: (1)DST (DST)+1,(1)DST (DST)+1,其中其中DST DST 不能为立即数寻址、段寄存器不能为立即数寻址、段寄存器 (2)(2)

5、根据结果设置除根据结果设置除CFCF以外的以外的5 5 个状态标志,对个状态标志,对CFCF无影响无影响 3 3、增量和减量指令、增量和减量指令 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 减减1 1指令(指令(DECDEC) 格式:格式:DEC DSTDEC DST 功能:功能: (1)DST (DST)-1(1)DST (DST)-1,其中,其中DST DST 不能为立即数寻址、段寄存器不能为立即数寻址、段寄存器 (2)(2)根据差设置除根据差设置除CFCF以外的以外的5 5 个状态标志,对个状态标志,对CFCF无影响

6、无影响 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 合法指令:合法指令: INC ALINC AL INC BXINC BX INC WORD PTR 4BXINC WORD PTR 4BX DEC CXDEC CX 主要用来计数或变址, 广泛应用于循环中 MOV CX,0 A: INC CX CMP CX,100 JNE A 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 4.4.乘法、除法指令乘法、除法指令 助记符格式功能说明 IMUL SRC字节运算

7、:(AX) (AL)*(SRC) 字运算:(DX:AX) (AX)*(SRC) MUL SRC同IMUL,但不带符号 IDIV SRC字节运算:(AL) (AX)/(SRC)的商 (AH) (AX)/(SRC)的余数 字运算:(AX) (DX:AX)/(SRC)的商 (DX) (DX:AX)/(SRC)的余数 DIV SRC同IDIV,但不带符号 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 格式:格式:MUL SRCMUL SRC 乘法指令分带符号运算和不带符号运算乘法指令分带符号运算和不带符号运算 两种。带符号运算时,操

8、作数和结果均以补码两种。带符号运算时,操作数和结果均以补码 表示,结果的符号按一般的运算规则确定。表示,结果的符号按一般的运算规则确定。 无符号数乘法指令(无符号数乘法指令(MULMUL) 乘法指令(乘法指令(MUL/IMULMUL/IMUL) 不能为立即数不能为立即数 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 功能:功能: AXAX (AL) (AL) * * (SRC) (SRC) 积积 字节乘:字节乘: DX:AXDX:AX (AX) (AX) * * (SRC) (SRC) 积积 字乘:字乘: SRC(SRC(乘

9、数乘数) )DST(DST(被乘数被乘数) ) 操作类型:用操作类型:用SRCSRC的类型确定。的类型确定。 乘法指令只影响乘法指令只影响CFCF和和OFOF标志,其余标志均无意义。标志,其余标志均无意义。 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 CF=0CF=0 OF=0OF=0 表明结果的高位字节(或字)为全表明结果的高位字节(或字)为全0 0。 其中,其中, CF=1CF=1 OF=1OF=1 表明结果的高位字节(或字)有有效积。表明结果的高位字节(或字)有有效积。 8088指令系统比较指令(CMP)格 式 4.

10、2 8086/8088 4.2 8086/8088 指令系统指令系统 格式:格式:IMUL SRCIMUL SRC 带符号数乘法指令(带符号数乘法指令(IMULIMUL) 不能为立即数不能为立即数 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 功能:功能: AXAX (AL) (AL) * * (SRC) (SRC) 积积 字节乘:字节乘: DX:AXDX:AX (AX) (AX) * * (SRC) (SRC) 积积 字乘:字乘: SRC(SRC(乘数乘数) )DST(DST(被乘数被乘数) ) 操作类型:用操作类型:用S

11、RCSRC的类型确定。的类型确定。 乘法指令只影响乘法指令只影响CFCF和和OFOF标志,其余标志均无意义。标志,其余标志均无意义。 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 CF=0CF=0 OF=0OF=0 表明结果的高位字节(或字)仅仅是表明结果的高位字节(或字)仅仅是 低位字节(或字)的符号扩展。低位字节(或字)的符号扩展。 其中,其中, CF=1CF=1 OF=1OF=1 表明结果的高位字节(或字)有有效积。表明结果的高位字节(或字)有有效积。 8088指令系统比较指令(CMP)格 式 4.2 8086/808

12、8 4.2 8086/8088 指令系统指令系统 总之,乘法指令中的目的操总之,乘法指令中的目的操 作数一定为作数一定为ALAL(8 8位数相乘)或位数相乘)或AXAX (1616位数相乘),源操作数不能位数相乘),源操作数不能 为立即数,但可采用其它寻址方为立即数,但可采用其它寻址方 式,指令对字节运算还是字运算式,指令对字节运算还是字运算 由源操作数的类型确定。由源操作数的类型确定。 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 为说明指令为说明指令MULMUL和和IMULIMUL执行后的不同结果,举例:执行后的不同结果

13、,举例: DAT1 DW 8004HDAT1 DW 8004H 1 1)MOV AXMOV AX,0505 MUL DAT1 MUL DAT1 2 2)MOV AXMOV AX,0505 MUL BYTE PTR DAT1 MUL BYTE PTR DAT1 3 3)MOV AXMOV AX,0505 IMUL BYTE PTR DAT1 IMUL BYTE PTR DAT1 4 4)MOV AXMOV AX,0505 IMUL WORD PTR DAT1 IMUL WORD PTR DAT1 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指

14、令系统指令系统 05H05H作为有符号数或无符号数都是作为有符号数或无符号数都是5 5 8004H8004H作为无符号数为作为无符号数为3277232772,作为有符号数为,作为有符号数为-32764-32764 1 1)为无符号字运算)为无符号字运算 0505* *8004H8004H(DXDX:AXAX),结果为),结果为163860163860 0000 0000 0000 0010 1000 0000 0010 0100 0000 0000 0000 0010 1000 0000 0010 0100 (DXDX)=0002H =0002H (AXAX)=8014H CF=1 OF=1=

15、8014H CF=1 OF=1 2 2)为无符号字节运算)为无符号字节运算 0505* *0404(AXAX) (AXAX)=0014H CF=0 OF=0=0014H CF=0 OF=0 3 3)为有符号字节运算,结果同上)为有符号字节运算,结果同上 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 4 4)为有符号字运算)为有符号字运算 0505* *8004H=058004H=05* *(-32764-32764)=-163820 =-163820 (DXDX:AXAX) -163820=1000 0000 0000 00

16、10 0111 1111 1110 1100-163820=1000 0000 0000 0010 0111 1111 1110 1100(原码)(原码) =1111 1111 1111 1101 1000 0000 0001 0100=1111 1111 1111 1101 1000 0000 0001 0100(补码)(补码) (DXDX)=0FFFDH =0FFFDH (AXAX)=8014H CF=1 OF=1=8014H CF=1 OF=1 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 例例1.1.下列指令是合法的

17、。下列指令是合法的。 MUL CX ;(DX:AX) (AX)MUL CX ;(DX:AX) (AX)* *(CX)(CX),为字操作,为字操作 IMUL CL ;(AX) (AL)IMUL CL ;(AX) (AL)* *(CL)(CL),为字节操作,为字节操作 下列指令是非法的。下列指令是非法的。 MUL AL,BL MUL AL,BL DST(DST(被乘数被乘数) )应为隐含寻址应为隐含寻址 IMUL 05H IMUL 05H SRC(SRC(乘数乘数) )不能为立即数寻址不能为立即数寻址 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088

18、 指令系统指令系统 例例2.2.若(若(ALAL)=05H,(BL)=0FDH=05H,(BL)=0FDH 则则CPUCPU执行:执行: MUL BL ; MUL BL ; 无符号数乘法无符号数乘法 ;(;(ALAL)* *(BLBL) AXAX ; (AXAX)=04F1H =04F1H 积积 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 IMUL BL ;IMUL BL ;带符号数乘法带符号数乘法 ;(;(ALAL)* *(BLBL) AXAX ; 05H05H* *0FDH=0FFF1H0FDH=0FFF1H ; (A

19、XAX)=0FFF1H=0FFF1H (即(即-15 -15 ) 积积 补补 -3 -3补 补 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 格式:格式:DIV SRCDIV SRC 除法指令和乘法指令一样,分无符号除除法指令和乘法指令一样,分无符号除 法和带符号除法。操作类型有字节除法和字法和带符号除法。操作类型有字节除法和字 除法,其操作类型取决于除法,其操作类型取决于SRC(SRC(除数除数) )的类型。的类型。 无符号数除法指令(无符号数除法指令(DIVDIV) 4.4.除法指令(除法指令(DIV/IDIVDIV/I

20、DIV) 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 格式:格式:IDIV SRCIDIV SRC 带符号数除法指令(带符号数除法指令(IDIVIDIV) 其中,其中,DSTDST为隐含寻址(作被除数)为隐含寻址(作被除数) 字节除时,被除数一定在字节除时,被除数一定在AXAX中中 字除时,被除数一定在字除时,被除数一定在DX:AXDX:AX中中 SRCSRC(除数)不能为立即数(除数)不能为立即数 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 功能:功

21、能: (AX)/(SRC)AX)/(SRC) ALAL 商商 字节除法:字节除法: (DX:AX)/(SRC)(DX:AX)/(SRC) AXAX 余数余数 字除法:字除法: AHAH DXDX 商商 余数余数 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 除法运算后,标志位没有意义。除法运算后,标志位没有意义。 除法不允许出现除数为除法不允许出现除数为0 0或商溢出,或商溢出, 若发生除数为若发生除数为0 0或商溢出则其结果没或商溢出则其结果没 有意义,并引起中断有意义,并引起中断( (关于中断的概关于中断的概 念以后再作

22、介绍)。念以后再作介绍)。 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 例:假定(例:假定(AXAX)=0400H =0400H (BLBL)=0B4H=0B4H IDIV BL IDIV BL ;1024/-761024/-76 (ALAL)=-13=0F3H=-13=0F3H(商)(商) (AHAH)=36=24H=36=24H(余数)(余数) DIV BL DIV BL ;1024/1801024/180 (AHAH)=124=7CH=124=7CH(商)(商) (ALAL)=5=05H=5=05H(余数)(余数)

23、8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 例:双字除字的除法运算,设要完成除法运算例:双字除字的除法运算,设要完成除法运算 28901240H/(-6528H)28901240H/(-6528H)。 MOV AXMOV AX,1240H1240H MOV DX MOV DX,2890H2890H MOV BX MOV BX,-6528H-6528H IDIV BX IDIV BX 执行结果商(执行结果商(AXAX)=9959H=9959H,余数(,余数(DXDX)=2528H=2528H。 8088指令系统比较指令(CM

24、P)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 例:双字除字节的除法运算。要完成无符号除法运算例:双字除字节的除法运算。要完成无符号除法运算 00011240H/0A0H00011240H/0A0H。 MOV AXMOV AX,1240H1240H MOV DX MOV DX,0001H0001H MOV BL MOV BL,0A0H0A0H MOV BH MOV BH,0 0 DIV BX DIV BX 执行结果商(执行结果商(AXAX)=01B6H=01B6H,余数(,余数(DXDX)=0080H=0080H。 8088指令系统比较指令(CMP)格 式

25、 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 例例1.1.下列指令是合法的。下列指令是合法的。 DIV BLDIV BL IDIV CX IDIV CX DIV WORD PTR BXSI DIV WORD PTR BXSI 下列指令是非法的。下列指令是非法的。 DIV 12 DIV 12 SRC(SRC(除数除数) )不能为立即数寻址不能为立即数寻址 DIV SI+02H DIV SI+02H SRCSRC类型不明确类型不明确 IDIV AX,BL IDIV AX,BL DST(DST(被除数被除数) )应为隐含寻址应为隐含寻址 8088指令系统比较指令(CMP

26、)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 例例2.2. 在存储器在存储器HEXHEX单元存放着一个单元存放着一个 字节的无符号二进制数,试将其转字节的无符号二进制数,试将其转 换成十进制数以分离换成十进制数以分离BCDBCD数形式存数形式存 到到BCD1BCD1以下存储单元。(设个位存以下存储单元。(设个位存 在低地址单元)在低地址单元) 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 个位个位 分析题目分析题目 HEXHEX 十位十位 百位百位 BCD1BCD1 66H66H ? ?

27、 ? ? ? ? 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 确定算法:确定算法: 用除用除1010取余法。即用被转换的取余法。即用被转换的 数除以数除以1010,第一次得到的余数为转,第一次得到的余数为转 换后的十进制数的个位数,用中间换后的十进制数的个位数,用中间 商再除以商再除以1010,得到的余数为转换后,得到的余数为转换后 十进制数的十位数,最后的商为十十进制数的十位数,最后的商为十 进制数的百位数。进制数的百位数。 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088

28、 指令系统指令系统 流程图:流程图: AL (HEX) AL (HEX) AH 0 AH 0 BL 10 BL 10 SI OFFSET BCD1SI OFFSET BCD1 (AXAX)/ /(BLBL) (SI) AH(SI) AH AH 0AH 0 (AXAX)/ /(BLBL) (SI)+1) (AH)(SI)+1) (AH) (SI)+2) (AL)(SI)+2) (AL) 结束结束 STARTSTART 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 程序:程序: ;在数据段定义变量如下:;在数据段定义变量如下:

29、HEX DB 66HHEX DB 66H BCD1 DB 3 DUP (?) BCD1 DB 3 DUP (?) ;在代码段编写程序;在代码段编写程序 MOV AH,0MOV AH,0 MOV AL,HEX MOV AL,HEX MOV BL,10 MOV BL,10 MOV SI,OFFSET BCD1 MOV SI,OFFSET BCD1 DIV BL DIV BL MOV SI,AH MOV SI,AH MOV AH,0 MOV AH,0 DIV BL DIV BL MOV SI+1,AH MOV SI+1,AH MOV SI+2,AL MOV SI+2,AL . . . . . . 8

30、088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 个位个位 HEXHEX 十位十位 百位百位 BCD1BCD1 66H66H 01H01H 00H00H 02H02H 程序执行后存储器示意图程序执行后存储器示意图 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 5.5.符号扩展指令(符号扩展指令(CBW/CWDCBW/CWD) 格式:格式: CBWCBW 功能:将功能:将ALAL中的符号扩展到中的符号扩展到AHAH中,中, 即将一个字节的带符号数即将一个字节的带符号数 扩展成一个字。扩展成一个字。 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 8086/8088 指令系统指令系统 格式:格式: CWDCWD 功能:将功能:将AXAX中的符号扩展到中的符号扩展到DXDX中,中, 将一个字的带符号数扩展将一个字的带符号数扩展 成双字。成双字。 8088指令系统比较指令(CMP)格 式 4.2 8086/8088 4.2 808

温馨提示

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

评论

0/150

提交评论