《微机原理第02章微处理器指令系统.ppt》由会员分享,可在线阅读,更多相关《微机原理第02章微处理器指令系统.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2 2章章第第2章:章:2.4 算术运算类指令算术运算类指令算算术术运运算算类类指指令令用用来来执执行行二二进进制制的的算算术术运运算:算:加减乘除加减乘除。这这类类指指令令会会根根据据运运算算结结果果影影响响状状态态标标志志,有有时时要要利利用用某某些些标标志志才才能能得得到到正正确确的的结结果果;使用他们时请留心有关状态标志使用他们时请留心有关状态标志重点掌握重点掌握加法指令:加法指令:ADD、ADC、INC 减法指令:减法指令:SUB、SBB、DEC、CMP、NEG第第2章:章:2.4.1 加法和减法指令加法和减法指令加法指令加法指令:ADD,ADC和和INC减法指令减法指令:SUB
2、,SBB,DEC,NEG和和CMP他他们们分分别别执执行行字字或或字字节节的的加加法法和和减减法法运运算算,除除INC和和DEC不不影影响响CF标标志志外外,其其他他按按定定义影响全部状态标志位义影响全部状态标志位操作数组合:操作数组合:运算指令助记符运算指令助记符 reg,imm/reg/mem运算指令助记符运算指令助记符 mem,imm/reg第第2章:章:1.加和减指令加和减指令 ADD dest,src;加法:加法:destdestsrc;ADD指指令令使使目目的的操操作作数数加加上上源源操操作作数数,和和的结果送到目的操作数的结果送到目的操作数SUB dest,src;减法:减法:d
3、estdestsrc;SUB指指令令使使目目的的操操作作数数减减去去源源操操作作数数,差差的结果送到目的操作数的结果送到目的操作数第第2章:例题章:例题2.7 加法加法mov ax,7348h;AX7348Hadd al,27h;AL48H27H6FH,AX736FH;OF0,SF0,ZF0,PF1,CF0add ax,3fffh;AX736FH3FFFHB36EH;OF1,SF1,ZF0,PF0,CF0第第2章:例题章:例题2.7 减法减法sub ah,0f0h;AHB3HF0HC3H,AXC36EH;OF0,SF1,ZF0,PF1,CF1mov word ptr200h,0ef00h;20
4、0HEF00H,标志不变,标志不变sub 200h,ax;200HEF00HC36EH2B92H;OF0,SF0,ZF0,PF0,CF0sub si,si;SI0;OF0,SF0,ZF1,PF1,CF0第第2章:章:2.带进位加和减指令带进位加和减指令 ADC dest,src;加法:;加法:destdestsrcCF;ADC指指令令除除完完成成ADD加加法法运运算算外外,还还要要加加上进位上进位CF,结果送到目的操作数,结果送到目的操作数SBB dest,src;减法:减法:destdestsrcCF;SBB指指令令除除完完成成SUB减减法法运运算算外外,还还要要减减去借位去借位CF,结果送
5、到目的操作数,结果送到目的操作数第第2章:例章:例2.8 无符号双字加法和减法无符号双字加法和减法mov ax,7856h;AX7856Hmov dx,8234h;DX8234Hadd ax,8998h;AX01EEH,CF1adc dx,1234h;DX9469H,CF0sub ax,4491h;AXBD5DH,CF1sbb dx,8000h;DX1468H,CF0DX.AX8234 7856H1234 8998H8000 4491H1468 BD5DH第第2章:章:3.比较指令比较指令CMP(compare)CMP dest,src;做减法运算:;做减法运算:destsrc;CMP指指令令
6、将将目目的的操操作作数数减减去去源源操操作作数数,但但差值差值不回送不回送目的操作数目的操作数比比较较指指令令通通过过减减法法运运算算影影响响状状态态标标志志,用用于比较两个操作数的大小关系于比较两个操作数的大小关系cmp ax,bxcmp al,100第第2章:章:4.增量和减量指令增量和减量指令INC reg/mem;增量(加;增量(加1):):reg/memreg/mem1DEC reg/mem;减量(减;减量(减1):):reg/memreg/mem1INC指令和指令和DEC指令是单操作数指令指令是单操作数指令与与加加法法和和减减法法指指令令实实现现的的加加1和和减减1不不同同的的是是
7、:INC和和DEC不影响不影响CF标志标志inc si;sisi1dec byte ptr si;sisi1第第2章:章:5.求补指令求补指令NEG(negtive)NEG reg/mem;reg/mem0reg/memNEG指指令令对对操操作作数数执执行行求求补补运运算算,即即用用零零减去操作数,然后结果返回操作数减去操作数,然后结果返回操作数求求补补运运算算也也可可以以表表达达成成:将将操操作作数数按按位位取取反后加反后加1NEG指指令令对对标标志志的的影影响响与与用用零零作作减减法法的的SUB指令一样指令一样NEG指令也是一个单操作数指令指令也是一个单操作数指令第第2章:例题章:例题2.
8、9 求补运算求补运算mov ax,0ff64hneg al;AL064H9CH,AXFF9CH;OF0SF1,ZF0,PF1,CF1sub al,9dh;AL9CH9DHFFH,AXFFFFH;OF0,SF1,ZF0,PF1,CF1neg ax;AX0FFFFH0001H;OF0,SF0,ZF0,PF0,CF1dec al;AL01H10,AX0000H;OF0,SF0,ZF1,PF1,CF1neg ax;AX000;OF0,SF0,ZF1,PF1,CF0第第2章:章:2.4.2 符号扩展指令符号扩展指令符符号号扩扩展展是是指指用用一一个个操操作作数数的的符符号号位位(最最高高位位)形形成成另
9、另一一个个操操作作数数,后后一一个个操操作作数数的的高高位位是是全全0(正数)或全(正数)或全1(负数)(负数)符符号号扩扩展展虽虽然然使使数数据据位位数数加加长长,但但数数据据大大小小并并没没有改变,扩展的高部分仅是低部分的符号扩展有改变,扩展的高部分仅是低部分的符号扩展符符号号扩扩展展指指令令有有两两条条,用用来来将将字字节节转转换换为为字字,字字转换为双字转换为双字CBW;AL符号扩展成符号扩展成AXCWD;AX符号扩展成符号扩展成DX第第2章:例题章:例题2.10 符号扩展符号扩展mov al,64h;AL64H(机器数)(机器数),表示,表示10进制数进制数100(真值)(真值)cb
10、w;将符号将符号0扩展,扩展,AX0064H,仍然表示,仍然表示100mov ax,0ff00h;AXFF00H,表示有符号,表示有符号10进制数进制数256cwd;将符号位将符号位“1”扩展,扩展,DX.AXFFFFFF00H;仍然表示;仍然表示256第第2章:章:2.4.3 乘法和除法指令乘法和除法指令乘法指令分乘法指令分无符号无符号和和有符号有符号乘法指令乘法指令MUL reg/mem;无符号乘法;无符号乘法IMUL reg/mem;有符号乘法;有符号乘法除法指令分除法指令分无符号无符号和和有符号有符号除法指令除法指令DIV reg/mem;无符号除法;无符号除法IDIV reg/mem
11、;有符号;有符号除法除法第第2章:章:2.4.4 十进制调整指令十进制调整指令 十十进进制制数数调调整整指指令令对对二二进进制制运运算算的的结结果果进进行行十十进进制制调调整整,以以得得到到十十进进制制的的运运算算结结果果,以此实现十进制以此实现十进制BCDBCD码运算码运算80888088指令系统支持两种指令系统支持两种BCDBCD码调整运算码调整运算q压压缩缩BCD码码就就是是通通常常的的8421码码;它它用用4个个二二进进制制位位表表示示一一个个十十进进制制位位,一一个个字字节节可可以以表表示示两两个十进制位,即个十进制位,即0099q非非压压缩缩BCD码码用用8个个二二进进制制位位表表
12、示示一一个个十十进进制制位位,只只用用低低4个个二二进进制制位位表表示示一一个个十十进进制制位位09,高,高4位任意,通常默认为位任意,通常默认为0第第2章:编码的比较章:编码的比较真值(十进制)真值(十进制)864二进制编码二进制编码08H 40H压缩压缩BCD码码08H 64H非压缩非压缩BCD码码 08H 0604HASCII码码38H 3634H压缩压缩BCD码加减法调整指令码加减法调整指令DAA DAS非压缩非压缩BCD码加减乘除法调整指令码加减乘除法调整指令AAA AAS AAM AAD第第2章:章:2.5 位操作类指令位操作类指令 位位操操作作类类指指令令以以二二进进制制位位为为
13、基基本本单单位位进进行行数数据据的的操作操作当当需需要要对对字字节节或或字字数数据据中中的的各各个个二二进进制制位位操操作作时时,可以考虑采用位操作类指令可以考虑采用位操作类指令注意这些指令对标志位的影响注意这些指令对标志位的影响1.逻辑运算指令逻辑运算指令AND OR XOR NOT TEST2.移位指令移位指令SHL SHR SAR3.循环移位指令循环移位指令ROL ROR RCL RCR第第2章:章:2.5.1 逻辑运算指令逻辑运算指令双双操操作作数数逻逻辑辑指指令令AND、OR、XOR和和TEST设设置置CFOF0,根根据据结结果果设设置置SF、ZF和和PF状状态态,而而对对AF未未定
14、定义义;它它们们的的操操作作数组合与数组合与ADD、SUB等一样:等一样:运算指令助记符运算指令助记符 reg,imm/reg/mem运算指令助记符运算指令助记符 mem,imm/reg 单单操操作作数数逻逻辑辑指指令令NOT不不影影响响标标志志位位,操操作数与作数与INC、DEC和和NEG一样:一样:NOT reg/mem第第2章:逻辑与指令章:逻辑与指令AND对两个操作数执行逻辑与运算,结果送目的操作数对两个操作数执行逻辑与运算,结果送目的操作数AND dest,srcAND dest,src;destdestdestdestsrcsrc 只只有有相相“与与”的的两两位位都都是是1,结结果
15、果才才是是1;否否则,则,“与与”的结果为的结果为0第第2章:逻辑或指令章:逻辑或指令OR对两个操作数执行逻辑或运算,结果送目的操作数对两个操作数执行逻辑或运算,结果送目的操作数OR dest,srcOR dest,src;destdestdestdestsrcsrc只只要要相相“或或”的的两两位位有有一一位位是是1,结结果果就就是是1;否则,结果为;否则,结果为0第第2章:逻辑异或指令章:逻辑异或指令XOR对两个操作数执行逻辑异或运算,结果送目的操作数对两个操作数执行逻辑异或运算,结果送目的操作数XOR dest,srcXOR dest,src;destdestdestdestsrcsrc只
16、只有有相相“异异或或”的的两两位位不不相相同同,结结果果才才是是1;否则,结果为;否则,结果为0第第2章:测试指令章:测试指令TEST对对两两个个操操作作数数执执行行逻逻辑辑与与运运算算,结结果果并并不不送送目的操作数,仅按目的操作数,仅按AND指令影响标志指令影响标志TEST dest,srcTEST dest,src;destdestsrcsrc AND与与TEST指令的关系,指令的关系,同同SUB与与CMP指令的关系一样指令的关系一样第第2章:逻辑非指令章:逻辑非指令NOT对一个操作数执行逻辑非运算对一个操作数执行逻辑非运算NOT reg/memNOT reg/mem;reg/memre
17、g/memreg/memreg/mem 按按位位取取反反,原原来来是是“0”的的 位位 变变 为为“1”;原原 来来 是是“1”的的 位位 变变 为为“0”第第2章:例章:例2.6 逻辑运算逻辑运算mov al,75h;AL75Hand al,32h;AL30H;CFOF0,SF0,ZF0,PF1or al,71h;AL71H;CFOF0,SF0,ZF0,PF1xor al,0f1h;AL80H;CFOF0,SF1,ZF0,PF0not al;AL7FH,标志不变,标志不变第第2章:章:例例2.17 逻辑运算指令的应用逻辑运算指令的应用and bl,11110110b;BL中中D0和和D3清清
18、0,其余位不变,其余位不变or bl,00001001b;BL中中D0和和D3置置1,其余位不变,其余位不变xor bl,00001001b;BL中中D0和和D3求反,其余位不变求反,其余位不变 AND指令可用于复位某些位(同指令可用于复位某些位(同0相与),不影响其他位相与),不影响其他位 OR指令可用于置位某些位(同指令可用于置位某些位(同1相或),不影响其他位相或),不影响其他位 XOR指令可用于求反某些位(同指令可用于求反某些位(同1相异或),不影响其他位相异或),不影响其他位第第2章:章:2.5.2 移位指令移位指令将将操操作作数数移移动动一一位位或或多多位位,分分成成逻逻辑辑移移位
19、位和算术移位,分别具有左移或右移操作和算术移位,分别具有左移或右移操作移移位位指指令令的的第第一一个个操操作作数数是是指指定定的的被被移移位位的的操操作作数数,可可以以是是寄寄存存器器或或存存储储单单元元;后后一个操作数一个操作数表示移位位数:表示移位位数:该操作数该操作数为为1,表示移动一位,表示移动一位该该操操作作数数为为CL,CL寄寄存存器器值值表表示示移移位位位位数数(移位位数(移位位数大于大于1只能只能CL表示表示)按按照照移移入入的的位位设设置置进进位位标标志志CF,根根据据移移位位后的结果影响后的结果影响SF、ZF、PF第第2章:逻辑左移指令章:逻辑左移指令SHLSHL reg/
20、mem,1/CL;reg/mem左移左移1或或CL位位;最低位补;最低位补0,最高位进入,最高位进入CF演示演示第第2章:逻辑右移指令章:逻辑右移指令SHRSHR reg/mem,1/CL;reg/mem右移右移1/CL位位;最高位补;最高位补0,最低位进入,最低位进入CF演示演示第第2章:算术左移指令章:算术左移指令SALSAL reg/mem,1/CL;与;与SHL是同一条指令是同一条指令演示演示第第2章:算术右移指令章:算术右移指令SARSAR reg/mem,1/CL;reg/mem右移右移1/CL位位;最高位不变,最低位进入;最高位不变,最低位进入CF演示演示第第2章:例章:例2.1
21、8 数据移位数据移位mov dx,6075h;DX01100000 01110101Bshl dx,1;DX11000000 11101010B;CF0,SF1、ZF0、PF0sar dx,1;DX11100000 01110101B;CF0,SF1、ZF0、PF0shr dx,1;DX01110000 00111010B;CF1,SF0、ZF0、PF1mov cl,4;CL4,标志不变,标志不变sar dx,cl;DX00000111 00000011B;CF1,SF0、ZF0、PF1第第2章:例章:例2.19 将将AL寄存器中的无符号数乘以寄存器中的无符号数乘以10 xor ah,ah;实
22、现;实现AH0,同时使,同时使CF0shl ax,1;AX2ALmov bx,ax;BXAX2ALshl ax,1;AX4ALshl ax,1;AX8ALadd ax,bx;AX8AL2AL10ALsub ah,ahand ah,0 逻辑左移一位相当于无符号数乘以逻辑左移一位相当于无符号数乘以2 逻辑右移一位相当于无符号数除以逻辑右移一位相当于无符号数除以2第第2章:章:2.5.3 循环移位指令循环移位指令循循环环移移位位指指令令类类似似移移位位指指令令,但但要要将将从从一一端移出的位返回到另一端形成循环。分为端移出的位返回到另一端形成循环。分为:ROL reg/mem,1/CL;不带进位循环
23、左移不带进位循环左移ROR reg/mem,1/CL;不带进位循环右移不带进位循环右移RCL reg/mem,1/CL;带进位循环左移带进位循环左移RCR reg/mem,1/CL;带进位循环右移带进位循环右移循循环环移移位位指指令令的的操操作作数数形形式式与与移移位位指指令令相相同同,按按指指令令功功能能设设置置进进位位标标志志CF,但但不不影影响响SF、ZF、PF、AF标志标志演示演示演示演示演示演示演示演示第第2章:章:32位数据移位位数据移位;将;将DX.AXDX.AX中中3232位数值左移一位位数值左移一位shl ax,1shl ax,1rcl dx,1rcl dx,1DXAXCF0考考虑虑32位位数数据据的的右右移移等等操操作作第第2章:例章:例2.21 非压缩非压缩BCD码合并为压缩码合并为压缩BCD;DBCD有有2位非压缩位非压缩BCD码码mov dl,dbcd;取低字节;取低字节and dl,0fh;只要低;只要低4位位mov dh,dbcd+1;取高字节;取高字节mov cl,4shl dh,cl;低;低4位移到高位移到高4位位or dl,dh;合并到;合并到DLrol dh,clrcr dh,cl
限制150内