第三章指令系统_第1页
第三章指令系统_第2页
第三章指令系统_第3页
第三章指令系统_第4页
第三章指令系统_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3章章 微型计算机指令系统微型计算机指令系统3.1 80X86/Pentium的寻址方式的寻址方式 立即寻址、寄存器寻址、直接寻址、寄存立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、基址寻址、基址器间接寻址、变址寻址、基址寻址、基址变址寻址变址寻址3.2 8086/8088指令系统指令系统数据传送指令、算术运算指令、逻辑运算数据传送指令、算术运算指令、逻辑运算和移位指令、串操作指令、控制转移指令、和移位指令、串操作指令、控制转移指令、处理器控制指令处理器控制指令*3.3 80X86/Pentium指令系统指令系统第第3章章 微型计算机指令系统微型计算机指令系统3.1 80X86

2、/Pentium的寻址方式的寻址方式立即寻址立即寻址寄存器寻址寄存器寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址基址寻址基址寻址变址寻址变址寻址基址加变址寻址基址加变址寻址*比例变址寻址比例变址寻址*基址加比例变址寻址基址加比例变址寻址*带偏移量的基址加比例变址寻址带偏移量的基址加比例变址寻址第第3章章 微型计算机指令系统微型计算机指令系统寻址方式寻址方式寻址方式寻址方式:指:指CPUCPU指令中规定的寻找操作数所在指令中规定的寻找操作数所在的地址的方式。的地址的方式。操作数操作数: MOV AL , 05H: MOV AL , 05H 操作码操作码 目的操作数目的操作数 , 源操作数源操

3、作数立即数:操作数包含在指令中立即数:操作数包含在指令中寄存器寻址:操作数包含在寄存器寻址:操作数包含在CPU的某个内部寄存器中的某个内部寄存器中存储器寻址:操作数包含在内存的数据区存储器寻址:操作数包含在内存的数据区操作数引用时的字节顺序操作数引用时的字节顺序: 若存放的信息是字节,则按顺序存放若存放的信息是字节,则按顺序存放 若存放的信息是字,则将字的低位字节存放在低地址,若存放的信息是字,则将字的低位字节存放在低地址,高位字节存放在高地高位字节存放在高地址址第第3章章 微型计算机指令系统微型计算机指令系统寻址方式之一:立即寻址寻址方式之一:立即寻址操作数作为立即数直接存在指令中,可为字节

4、或字。操作数作为立即数直接存在指令中,可为字节或字。MOV AX, 3100H低地址低地址高地址高地址CS段段操作码操作码00H31H34H12HAX00H31H第第3章章 微型计算机指令系统微型计算机指令系统寻址方式之二:寄存器寻址寻址方式之二:寄存器寻址操作数包含在指令规定的操作数包含在指令规定的8位、位、16位寄存器中。位寄存器中。寄存器寻址由于无需从存储器中取操作数,故执行寄存器寻址由于无需从存储器中取操作数,故执行速度快。速度快。 MOV SS ,AX34H12HSS34H12HAX第第3章章 微型计算机指令系统微型计算机指令系统寻址方式之三:直接寻址寻址方式之三:直接寻址在指令的操

5、作码后面直接给出操作数的在指令的操作码后面直接给出操作数的16位偏移地位偏移地址。这个偏移地址也称为有效地址址。这个偏移地址也称为有效地址EA。操作数默操作数默认在认在DS段中。段中。MOV AX, 3000H低地址低地址高地址高地址CS段段操作码操作码00H30H34H12H34H12HAXDS段段5000053000DS5000 0300053000+第第3章章 微型计算机指令系统微型计算机指令系统寻址方式之三:直接寻址寻址方式之三:直接寻址如果操作数在如果操作数在DS以外的其他段(以外的其他段(CS,SS,ES)中,指中,指令中必须指明段寄存器(段超越)令中必须指明段寄存器(段超越)MO

6、V AX, ES:3000H低地址低地址高地址高地址CS段段操作码操作码00H30H34H12H34H12HAXES段段2000023000ES2000 0300023000+第第3章章 微型计算机指令系统微型计算机指令系统寻址方式之四:寄存器间接寻址寻址方式之四:寄存器间接寻址低地址低地址高地址高地址CS段段操作码操作码34H12H34H12HAXSS段段7000073000SS7000 0300073000+MOV AX, BPBP操作数地址的偏移量(有效地址操作数地址的偏移量(有效地址EA)存放在寄存器中。以存放在寄存器中。以SI,DI, BX间接寻址,默认操作数在间接寻址,默认操作数在

7、DS段中;以段中;以BP间接寻址,间接寻址,默认操作数在默认操作数在SS段中。段中。可以加段超越前缀的方法进行其他段进行寻址可以加段超越前缀的方法进行其他段进行寻址第第3章章 微型计算机指令系统微型计算机指令系统寻址方式之五:基址寻址寻址方式之五:基址寻址EA=基址寄存器基址寄存器+偏移量偏移量基址寄存器:基址寄存器:BX(默认默认DS)和和BP(默认默认SS)。低地址低地址高地址高地址CS段段操作码操作码00H15H34H12H34H12HAXDS段段7000073500BX150073500+ MOV DX, BX+1500H或或 MOV DX, 1500HBXDS7000 02000第第

8、3章章 微型计算机指令系统微型计算机指令系统寻址方式之六:变址寻址寻址方式之六:变址寻址EA=变址寄存器变址寄存器+偏移量偏移量变址寄存器:源变址寄存器变址寄存器:源变址寄存器SI、目的变址寄存器、目的变址寄存器DI(默认默认DS)。MOV AL,TABLESIMOV AL,SI+TABLEMOV AL,SI+TABLE第第3章章 微型计算机指令系统微型计算机指令系统寻址方式之七:基址变址寻址寻址方式之七:基址变址寻址基址加变址:基址加变址:EA=基址寄存器基址寄存器+变址寄存器变址寄存器带偏移量的基址加变址:带偏移量的基址加变址:EA=基址寄存器基址寄存器+变址寄存器变址寄存器+偏移量偏移量

9、低地址低地址高地址高地址CS段段操作码操作码50H02H34H12H34H12HDXDS段段3000033250BX025033250+MOV DX, BX+SI0250HDS3000 02000SI1000第第3章章 微型计算机指令系统微型计算机指令系统*寻址方式之八:寻址方式之八:32位机的寻址方式位机的寻址方式比例变址寻址比例变址寻址EA=变址寄存器变址寄存器*比例因子比例因子+偏移量偏移量MOV EAX,TABLEESI*4基址加比例变址寻址基址加比例变址寻址EA=基地址寄存器基地址寄存器+变址寄存器变址寄存器*比例因子比例因子+偏移量偏移量MOV ECX,EDX*4EAX带偏移量的基

10、址加比例变址寻址带偏移量的基址加比例变址寻址EA=基地址寄存器基地址寄存器+变址寄存器变址寄存器*比例因子比例因子+偏移量偏移量MOV AX,EDI*8+ECX+408个个32位通用寄存器均可作寄存器间接寻址、基址寄存器位通用寄存器均可作寄存器间接寻址、基址寄存器和变址寄存器和变址寄存器(除除ESP外外),EBP、ESP缺省为缺省为SS段,其段,其他缺省为他缺省为DS段段第第3章章 微型计算机指令系统微型计算机指令系统寻址方式总结寻址方式总结F寻址方式:寻址方式:1. 立即寻址立即寻址 MOV AX, 1234H2. 寄存器寻址寄存器寻址MOV AX, BX3. 直接寻址直接寻址MOV AX,

11、 1234H4. 寄存器间接寻址寄存器间接寻址MOV AX, BX 5. 基址寻址基址寻址MOV AX, BX+100H6. 变址寻址变址寻址MOV AX, SI+100H7. 基址加变址寻址基址加变址寻址MOV AX, BX+SI+100H8.比例变址寻址比例变址寻址 MOV EAX,TABLEESI*49.基址加比例变址寻址基址加比例变址寻址 MOV ECX,EDX*4EAX10.带偏移量的基址加比例变址寻址带偏移量的基址加比例变址寻址 MOV AX,EDI*8+ECX+40第第3章章 微型计算机指令系统微型计算机指令系统操作数的分类操作数的分类立即数操作数:绿立即数操作数:绿注注1:立即

12、数只能作为源操作数,不能作为目标操作数。:立即数只能作为源操作数,不能作为目标操作数。注注2:不能用一条指令简单地将立即数传送到段寄存器。:不能用一条指令简单地将立即数传送到段寄存器。寄存器操作数:红寄存器操作数:红注注3:有些指令没有指定使用的寄存器,但实际上隐含这特:有些指令没有指定使用的寄存器,但实际上隐含这特定的寄存器操作数。定的寄存器操作数。存储器操作数:黄存储器操作数:黄注注4:不允许源操作数和目标操作数同时为存储器操作数。:不允许源操作数和目标操作数同时为存储器操作数。注注5:存储器操作数的物理地址的计算是将段基地址左移四:存储器操作数的物理地址的计算是将段基地址左移四位加上有效

13、地址位加上有效地址EA(偏移地址)得到的。但是段寄存器偏移地址)得到的。但是段寄存器和有效地址的配对是有规定的,如表和有效地址的配对是有规定的,如表3-2(P99)注注6:执行速度:寄存器操作数:执行速度:寄存器操作数 立即数操作数立即数操作数 存储器操存储器操作数作数第第3章章 微型计算机指令系统微型计算机指令系统指令的机器码和执行时间指令的机器码和执行时间机器码机器码:任何一条指令都是以特定的若干个:任何一条指令都是以特定的若干个(16)字节的字节的代码形式存在存储器的码段中。同样的指令(如代码形式存在存储器的码段中。同样的指令(如MOV)由于寻址方式和操作数的不同,机器码的长度也不同。由

14、于寻址方式和操作数的不同,机器码的长度也不同。执行时间执行时间:指令的指令时间包括取址、译码和执行的时间,:指令的指令时间包括取址、译码和执行的时间,跟该指令的机器码的长短没有直接关系。跟该指令的机器码的长短没有直接关系。 指令指令机器码机器码 字节数字节数 时钟数时钟数MOV AL,15HB0H15H 2 4MOV AX,BX8BHC3H 2 2第第3章章 微型计算机指令系统微型计算机指令系统3.2 8086/8088指令系统指令系统数据传送指令数据传送指令算术运算指令算术运算指令逻辑运算和移位指令逻辑运算和移位指令串操作指令串操作指令控制转移指令控制转移指令处理器控制指令处理器控制指令第第

15、3章章 微型计算机指令系统微型计算机指令系统数据传送指令之一:通用传送指令数据传送指令之一:通用传送指令(1)MOV指令指令 MOV dest,src ;(dest)(src)1)源操作数可以是)源操作数可以是8/16/32位的立即数、寄存器操作数、位的立即数、寄存器操作数、内存操作数。目标操作数不允许为立即数,其余同源内存操作数。目标操作数不允许为立即数,其余同源操作数。操作数。2)源、目操作数类型必须匹配)源、目操作数类型必须匹配MOV BYTE PTR BX, 12H3) 不能向段寄存器写立即数不能向段寄存器写立即数MOV AX, 2000MOV DX, AX4) 以以CS为目标的一切传

16、送指令都是非法的为目标的一切传送指令都是非法的5) 段寄存器之间不能直接传送数据段寄存器之间不能直接传送数据第第3章章 微型计算机指令系统微型计算机指令系统数据传送指令之一:通用传送指令数据传送指令之一:通用传送指令例:合法指令例:合法指令 MOV AL,30H ;立即数传送到寄存器;立即数传送到寄存器 MOV AL, BL ;寄存器之间传送字节数据;寄存器之间传送字节数据 MOV SI, BX+62H ;寄存器和存储器之间传送数据;寄存器和存储器之间传送数据例:不合法的指令例:不合法的指令 MOV 6234H,AX ;立即数不能用于目的操作数;立即数不能用于目的操作数 MOV CS,AX ;

17、CS不能用于目的操作数不能用于目的操作数 MOV IP,AX ;IP不能用于目的操作数不能用于目的操作数 MOV DS,4234H ;立即数不能直接传送给段寄存器;立即数不能直接传送给段寄存器 MOV AL,BX ;源操作数与目的操作数的位数必须一致;源操作数与目的操作数的位数必须一致 MOV BUF1,BUF2 ;不能在两个存储器单元之间传送数据;不能在两个存储器单元之间传送数据 MOV DS,ES ;不能在两个段寄存器之间传送数据;不能在两个段寄存器之间传送数据第第3章章 微型计算机指令系统微型计算机指令系统数据传送指令之一:通用传送指令数据传送指令之一:通用传送指令(2)堆栈操作指令堆栈

18、操作指令 PUSH src ; (SP)(SP)-2 (SP)+1:(SP)(src)进栈指令,先调整堆栈指针,再把源操作数压栈进栈指令,先调整堆栈指针,再把源操作数压栈PUSH AX POP dest ;(dest)(SP)+1:(SP) (SP)(SP)-2出栈指令,先将栈顶出栈指令,先将栈顶2/4字节送目标操作数,再调整堆栈字节送目标操作数,再调整堆栈指针指针POP AX注:堆栈指令指对字或双字进行操作,不对字节进行操注:堆栈指令指对字或双字进行操作,不对字节进行操作,一般成对使用。操作数为作,一般成对使用。操作数为16位寄存器、段寄存器位寄存器、段寄存器或存储单元或存储单元第第3章章

19、微型计算机指令系统微型计算机指令系统数据传送指令之一:通用传送指令数据传送指令之一:通用传送指令PUSH AX低地址低地址高地址高地址12H34H34H12HAX堆栈段SSSP指向栈顶SP1SP1第第3章章 微型计算机指令系统微型计算机指令系统数据传送指令之一:通用传送指令数据传送指令之一:通用传送指令POP AX低地址低地址高地址高地址12H34H34H12HAX堆栈段SSSP指向栈顶SP+1SP+1第第3章章 微型计算机指令系统微型计算机指令系统数据传送指令之一:通用传送指令数据传送指令之一:通用传送指令(3)交换指令)交换指令 XCHG dest,src;(dest)(src) 交换指令

20、,源、目不能同为内存操作数交换指令,源、目不能同为内存操作数,只能在寄存器之只能在寄存器之间、寄存器和存储器之间交换,段寄存器不能作为一个操间、寄存器和存储器之间交换,段寄存器不能作为一个操作数进行交换。作数进行交换。合法交换指令合法交换指令 XCHG AL,CL ;字节交换;字节交换 XCHG BX,SI ;字交换;字交换 XCHG AX,BX+SI ;寄存器和存储器之间交换数据;寄存器和存储器之间交换数据非法的交换指令非法的交换指令 XCHG AX,6234H ;寄存器与立即数之间不能交换;寄存器与立即数之间不能交换 XCHG BUF1,BUF2 ;存储器单元与存储器单元之间不能交换;存储

21、器单元与存储器单元之间不能交换 XCHG ADDR,4234H ;存储器单元与立即数之间不能交换;存储器单元与立即数之间不能交换 XCHG CS,DATBX ;不能与;不能与CS(或(或IP)寄存器进行交换)寄存器进行交换第第3章章 微型计算机指令系统微型计算机指令系统数据传送指令之一:通用传送指令数据传送指令之一:通用传送指令(4)XLAT 查表指令查表指令 XLAT src_table;(AL)(BX)+(AL)查表指令,用来取表中某指定数的值查表指令,用来取表中某指定数的值执行指令前:序号执行指令前:序号 AL 表首址表首址 BX执行指令后:执行指令后:AL 表中序号对应的字节内容表中序

22、号对应的字节内容TABLE DB 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 MOV BX, OFFSET TABLE MOV AL, 5 XLAT (或(或XLAT TABLE)执行后执行后AL=53第第3章章 微型计算机指令系统微型计算机指令系统数据传送指令之二:地址传送指令数据传送指令之二:地址传送指令LEA reg16,mem16有效地址传送指令,源操作数为内存操作数有效地址传送指令,源操作数为内存操作数内存单元的有效地址内存单元的有效地址目标寄存器目标寄存器 LEA SI, AREA1= MOV SI,OFFSET AREA1LDS/LES reg1

23、6,mem32地址指针传送指令地址指针传送指令,EAreg16, EA+2DS/ES例:例:TABLE DD 12345678HLDS BX,TBALE5678BX, 1234HDS第第3章章 微型计算机指令系统微型计算机指令系统数据传送指令之三:标志传送指令数据传送指令之三:标志传送指令LAHF 标志寄存器低字节标志寄存器低字节AH,不影响标志位不影响标志位 SAHF AH 标志寄存器低字节标志寄存器低字节,影响标志寄存器低影响标志寄存器低8位位PUSHF:16位标志寄存器内容入栈位标志寄存器内容入栈POPF:16位标志寄存器出栈位标志寄存器出栈S ZAPCO D I TAHFLAGLAHF

24、SAHF第第3章章 微型计算机指令系统微型计算机指令系统数据传送指令之四:输入输出指令数据传送指令之四:输入输出指令完成累加器完成累加器AL/AX和和I/O端口之间的数据传送端口之间的数据传送IN acc,port;(acc)(port)当端口地址小于当端口地址小于256时,直接寻址时,直接寻址,最多可访问最多可访问256个端口个端口例:例:IN AL,60H(将将60H口地址的字节送给口地址的字节送给AL) IN AX,60H(将将60H口地址的字送给口地址的字送给AX)端口地址大于或等于端口地址大于或等于256时,间接寻址,端口地址必须放时,间接寻址,端口地址必须放在在DX寄存器中,最多可

25、访问寄存器中,最多可访问65536个端口个端口例:例:MOV DX,3DAH IN AL,DX(将将3DAH口地址的字节送给口地址的字节送给AL)OUT port,acc ;(port)(acc)例:例:MOV DX,3DAH OUT DX,AX第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之一:加法运算指令算术运算指令之一:加法运算指令ADD dest,src;(dest)(dest)+(src)加法指令加法指令例例 不带进位加法指令不带进位加法指令ADD CL,20H ;(CL)(CL)+20HADD AX,SI ;(AX)(AX)+(SI)ADD DATA BX,AL ;(

26、BX)+DATA)(BX)+DATA)+(AL)ADD DX,BX+SI ;(DX)(DX)+(BX)+(SI)ADC dest,src;(dest)(dest)+(src)+(CF)带进位位加法带进位位加法例例 带进位加法指令带进位加法指令 ADC AX,SI ;(AX)(AX)+(SI)+CFADC BX,3000H ;(BX)(BX)+3000H+CFADC AX,DATSI ;(AX)(AX)+(SI+DAT)+CF 以上两条指令影响以上两条指令影响A,C,O,P,S,Z 6个标志位。注意带进位位个标志位。注意带进位位加法中的进位位的值是上一条运算指令产生的结果加法中的进位位的值是上一

27、条运算指令产生的结果(P105)第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之一:加法运算指令算术运算指令之一:加法运算指令ADC指令用于多字节加法运算指令用于多字节加法运算例例: :有两个有两个4 4字节的无符号数相加:字节的无符号数相加: 2C56F8AC+309E47BE=2C56F8AC+309E47BE=?设被加数、加数分别存放在设被加数、加数分别存放在DS:0000DS:0000及及DS:0004DS:0004开始的两个开始的两个存储区内,结果放回存储区内,结果放回DS:0000DS:0000 MOV AXMOV AX,00040004 ADD 0000 ADD 0

28、000,AX ;AX ;低字相加低字相加 MOV AXMOV AX,00060006 ADC 0002 ADC 0002,AX ;AX ;高字相加,包括低字的进位高字相加,包括低字的进位第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之一:加法运算指令算术运算指令之一:加法运算指令INC dest;(dest)(dest)+1加加1指令指令例例 加加1指令指令INC BX ;(BX)(BX)+1INC BYTE PTR DI+100H ;将(;将(DI)100H所指的所指的;字节单元内容加;字节单元内容加1 影响影响A,O,P,S,Z 5个标志位,对个标志位,对CF无影响无影响操作

29、数为寄存器或内存操作数为寄存器或内存第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之一:加法运算指令算术运算指令之一:加法运算指令AAA加法的加法的ASCII调整指令调整指令对在对在AL中的由两个非压缩的中的由两个非压缩的BCD码相加的码相加的结果进行校正,结果仍以非压缩结果进行校正,结果仍以非压缩BCD码的码的形式存放,各位在形式存放,各位在AL,十位在十位在AH。DAA 加法的十进制调整指令加法的十进制调整指令对在对在AL中的由两个压缩的中的由两个压缩的BCD码相加的结码相加的结果进行校正,产生一个正确的果进行校正,产生一个正确的BCD码的和。码的和。第第3章章 微型计算机指

30、令系统微型计算机指令系统算术运算指令之一:加法运算指令算术运算指令之一:加法运算指令例例 两个非压缩两个非压缩BCD码的加法运算,设码的加法运算,设(AH)=0MOV AL,08 ;(AL) 08 (AL)=00001000ADD AL,09 ;(AL) 08+09 (AL)=00010001=11HAAA ;AF=1,(,(AH)(AH)+01, ;AL(AL+6)& 0FH(AL高高4位清位清0);(;(AL)=00000111,结果(,结果(AX)=0107 AF=1 CF=1例例 两个压缩两个压缩BCD码的加法运算码的加法运算MOV AL,37 ;(AL)37MOV BL,35

31、 ;(BL)35ADD AL,BL ;(AL)=6CH,AF=0,CF=0DAA ;因为;因为AL中的低中的低4位大于位大于9, ;所以(;所以(AL)(AL)+06, ; 结果(结果(AL)=72,AF=1,CF=0第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之二:减法运算指令算术运算指令之二:减法运算指令SUB dest,src;(dest)(dest)-(src) 减法指令减法指令例例 不带借位的减法指令不带借位的减法指令SUB AX,3000H ;(AX)(AX)-3000HSUB BX,SI+100H ;(BX)(BX)-SI+100HSBB dest,src;(de

32、st)(dest)-(src)-(CF) 带借位位减法带借位位减法例例 带借位的减法指令带借位的减法指令SBB AX,BX ;(AX)(AX)-(BX)-CFSBB WORD PTR SI,1068H ;(SI)(SI)-1068H-CF 以上两条指令影响以上两条指令影响A,C,O,P,S,Z 6个标志位个标志位第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之二:减法运算指令算术运算指令之二:减法运算指令例:例:x、y、z均为均为32位数,分别存放在地址为位数,分别存放在地址为X, X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现的存储单元中,用指令序列实现wx+y+2

33、4-z,结,结果放在果放在W, W+2单元中。单元中。 MOV AX, X MOV DX, X+2 ADD AX, Y ADC DX, Y+2 ; x+y ADD AX, 24 ADC DX, 0 ; x+y+24 SUB AX, Z SBB DX, Z+2 ; x+y+24-z MOV W, AX MOV W+2, DX ; 结果存入结果存入W, W+2单元单元第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之二:减法运算指令算术运算指令之二:减法运算指令DEC dest;(dest)(dest)-1减减1指令指令 影响影响A,O,P,S,Z 5个标志位,操作数为寄存器或内存个标

34、志位,操作数为寄存器或内存例例 减减1指令指令DEC BL ;(BL)(BL)-1DEC BYTE PTRDI+2 ;DI+2DI+2-1NEG dest;(dest)0-(dest) 求补指令求补指令操作数可以是内存或寄存器,影响所有标志位操作数可以是内存或寄存器,影响所有标志位例例 设(设(AL)=02H,(BX)2212HNEG AL ;(AL)0-(AL),结果(,结果(AL)=0FEHNEG BX ;(BX)0-(BX),结果(,结果(BX)=DDEEH第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之二:减法运算指令算术运算指令之二:减法运算指令AAS 减法的减法的AS

35、CII调整指令调整指令对在对在AL中的由两个非压缩的中的由两个非压缩的BCD码相减的结果进码相减的结果进行校正,结果仍以非压缩行校正,结果仍以非压缩BCD码的形式存放,各码的形式存放,各位在位在AL,十位在十位在AH 。DAS 减法的十进制调整指令减法的十进制调整指令对在对在AL中的由两个压缩的中的由两个压缩的BCD码相减的结果进行码相减的结果进行校正,产生一个正确的校正,产生一个正确的BCD码的差。码的差。第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之二:减法运算指令算术运算指令之二:减法运算指令例例 两个未组合两个未组合BCD码的减法运算码的减法运算MOV AX,0608H

36、 ;AX0608HSUB AL, 09H ;AL0FFHAAS ;AL09H,AH05H例:两个组合例:两个组合BCD码的减法运算码的减法运算MOV AL,73H ;AL73HSUB AL,27H ;AL4CHDAS ;AL46H第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之二:减法运算指令算术运算指令之二:减法运算指令CMP dest,src; (dest)-(src) 比较指令。完成两个操作数相减,结果反映在标志位上,比较指令。完成两个操作数相减,结果反映在标志位上,但不送回结果。用于比较两个操作数的大小关系。但不送回结果。用于比较两个操作数的大小关系。CMP A,B(1)

37、若任意两个数)若任意两个数 ZF=0 AB (JNZ 不等转移)不等转移) ZF=1 AB (JZ 相等转移)相等转移)(2)若两个数都是无符号数)若两个数都是无符号数 CF=0 AB (JNC) CF=1 AB (JC)(3)若两个数都是带符号数正数)若两个数都是带符号数正数 SF=0 AB (JNS) SF=1 AB (JS)(4)若两个数是任意带符号数)若两个数是任意带符号数 SF OF=0 AB (JNL) SF OF=1 A(BX),则则RESULT1;如果如果(AX) (BX), 则则RESULT-1. CMPAX,BXJZEQUAL ;=JL LESS_THAN ; JMPSTO

38、P EQUAL:MOVRESULT,00HJMPSTOP LESS_THAN: MOVRESULT,FFH STOP:HLT 第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之三:乘法运算指令算术运算指令之三:乘法运算指令MUL src;字节乘法字节乘法 (AX)(src)(AL) ;字乘法字乘法 (DX:AX) (src)(AX)无符号数乘法指令无符号数乘法指令例例 无符号数乘法指令无符号数乘法指令MUL DL ;AXAX*DLMUL CX ;DX:AXAX*CXMUL BYTE PTR SI+8 ;AXAL*SI+8IMUL src ;字节乘法字节乘法 (AX)(src)(AL

39、) 字乘法字乘法 (DX:AX) (src)(AX) 带符号数乘法指令带符号数乘法指令例例 两个有符号数的乘法两个有符号数的乘法MOV AL,FEH ;ALFEH,FEH看作有符号数看作有符号数-2MOV CL,11H ;CL11H,11H看作有符号数看作有符号数17IMUL CL ;AXFFDEH,执行,执行02H*11H, 将乘积结果取补码得将乘积结果取补码得FFDEH=-34 第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之三:乘法运算指令算术运算指令之三:乘法运算指令AAM 乘法的乘法的ASCII码调整指令(非压缩码调整指令(非压缩BCD数)数)例例 两个非压缩两个非压缩

40、BCD码的乘法运算。码的乘法运算。MOV AL,,06H ;AL06HMOV BL,07H ;BL07HMUL BL ;AX002AHAAM ;AX0402H第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之四:除法运算指令算术运算指令之四:除法运算指令DIV src;字节除法字节除法 (AL)(AX)/(src) (AH)(AX)(src) 字除法字除法 (AX)(DX:AX)/ (src) (DX)(DX:AX)(src)无符号数除法指令无符号数除法指令例例 无符号数除法指令无符号数除法指令DIV CL ;AX中的中的16位数除以位数除以CL中的中的8位数,位数, 商送商送AL

41、,余数送,余数送AHDIV CX ;DX和和AX中的中的32位数除以位数除以CX中的中的16位数,位数, 商送商送AX,余数送,余数送DX IDIV src ;字节除法字节除法 (AL)(AX)/(src) (AH)(AX)(src) 字除法字除法 (AX)(DX:AX)/ (src) (DX)(DX:AX)(src) 带符号数除法指令带符号数除法指令 第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之四:除法运算指令算术运算指令之四:除法运算指令AAD 除法的除法的ASCII码调整指令(非压缩码调整指令(非压缩BCD码)码)例例 两个非压缩两个非压缩BCD码的除法运算。码的除法运

42、算。MOV AX, 0605H ;AX0605HMOV BL,07H ;BL07HAAD ;AX0041HDIV BL ;商值;商值AL09,余数,余数AH02H第第3章章 微型计算机指令系统微型计算机指令系统算术运算指令之五:符号扩展指令算术运算指令之五:符号扩展指令CBW ;如果如果(AL)80H,则则(AH)0 否则否则(AH)FFH 将一个字节转换为字将一个字节转换为字CWD ;如果如果(AX)JAE /JNB=JB/JNAEJBE /JNAJGE /JNL=JL/JNGEJLE /JNG05H,则转向,则转向ABC第第3章章 微型计算机指令系统微型计算机指令系统控制转移指令之二:循环控制指令控制转移指令之二:循环控制指令LOOP short_lable 将将CX的内容减的内容减1,如果不为,如果不为0,则,则 循环到短标号处循环到短标号处LOOPE/LOOPZ short_lable 相等或等于相等或等于0循环循环 将将CX的内容减的内容减1,如果结果不为,如果结果不为0,且,且ZF1,则循环至短则循环至短标号处。标号处。LOOPNE/LOOPNZ short_lable 不相等或不等于不相等或不等于0循环循环 将将CX的内容减的内容减1,如果结果不为,如果结果不为0,且,且ZF0,则循环至短则循环至短标号处。标号处。JCXZ OPRD 当当CX=0时转移至标号处,

温馨提示

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

评论

0/150

提交评论