《微机原理第02章微处理器指令系统.ppt》由会员分享,可在线阅读,更多相关《微机原理第02章微处理器指令系统.ppt(43页珍藏版)》请在三一办公上搜索。
1、第2章,第2章:2.4 算术运算类指令,算术运算类指令用来执行二进制的算术运算:加减乘除。这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志重点掌握加法指令:ADD、ADC、INC 减法指令:SUB、SBB、DEC、CMP、NEG,第2章:2.4.1 加法和减法指令,加法指令:ADD,ADC和INC减法指令:SUB,SBB,DEC,NEG和CMP他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位操作数组合:运算指令助记符 reg,imm/reg/mem运算指令助记符 mem,imm/reg,第
2、2章:1.加和减指令,ADD dest,src;加法:destdestsrc;ADD指令使目的操作数加上源操作数,和的结果送到目的操作数SUB dest,src;减法:destdestsrc;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,AXC
3、36EH;OF0,SF1,ZF0,PF1,CF1mov word ptr200h,0ef00h;200HEF00H,标志不变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,结果送到目的操作数,第2章:例2.
4、8 无符号双字加法和减法,mov ax,7856h;AX7856Hmov dx,8234h;DX8234Hadd ax,8998h;AX01EEH,CF1adc dx,1234h;DX9469H,CF0sub ax,4491h;AXBD5DH,CF1sbb dx,8000h;DX1468H,CF0,DX.AX8234 7856H1234 8998H8000 4491H1468 BD5DH,第2章:3.比较指令CMP(compare),CMP dest,src;做减法运算:destsrc;CMP指令将目的操作数减去源操作数,但差值不回送目的操作数比较指令通过减法运算影响状态标志,用于比较两个操作
5、数的大小关系,cmp ax,bxcmp al,100,第2章:4.增量和减量指令,INC reg/mem;增量(加1):reg/memreg/mem1DEC reg/mem;减量(减1):reg/memreg/mem1INC指令和DEC指令是单操作数指令与加法和减法指令实现的加1和减1不同的是:INC和DEC不影响CF标志,inc si;sisi1dec byte ptr si;sisi1,第2章:5.求补指令NEG(negtive),NEG reg/mem;reg/mem0reg/memNEG指令对操作数执行求补运算,即用零减去操作数,然后结果返回操作数求补运算也可以表达成:将操作数按位取反
6、后加1NEG指令对标志的影响与用零作减法的SUB指令一样NEG指令也是一个单操作数指令,第2章:例题2.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 符号扩展指令,符号扩
7、展是指用一个操作数的符号位(最高位)形成另一个操作数,后一个操作数的高位是全0(正数)或全1(负数)符号扩展虽然使数据位数加长,但数据大小并没有改变,扩展的高部分仅是低部分的符号扩展符号扩展指令有两条,用来将字节转换为字,字转换为双字CBW;AL符号扩展成AXCWD;AX符号扩展成DX,第2章:例题2.10 符号扩展,mov al,64h;AL64H(机器数),表示10进制数100(真值)cbw;将符号0扩展,AX0064H,仍然表示100mov ax,0ff00h;AXFF00H,表示有符号10进制数256cwd;将符号位“1”扩展,DX.AXFFFFFF00H;仍然表示256,第2章:2.
8、4.3 乘法和除法指令,乘法指令分无符号和有符号乘法指令MUL reg/mem;无符号乘法IMUL reg/mem;有符号乘法除法指令分无符号和有符号除法指令DIV reg/mem;无符号除法IDIV reg/mem;有符号除法,第2章:2.4.4 十进制调整指令,十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果,以此实现十进制BCD码运算8088指令系统支持两种BCD码调整运算压缩BCD码就是通常的8421码;它用4个二进制位表示一个十进制位,一个字节可以表示两个十进制位,即0099非压缩BCD码用8个二进制位表示一个十进制位,只用低4个二进制位表示一个十进制位09,
9、高4位任意,通常默认为0,第2章:编码的比较,真值(十进制)864二进制编码08H40H压缩BCD码08H64H非压缩BCD码08H0604HASCII码38H3634H,压缩BCD码加减法调整指令DAA DAS非压缩BCD码加减乘除法调整指令AAA AAS AAM AAD,第2章:2.5 位操作类指令,位操作类指令以二进制位为基本单位进行数据的操作当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令注意这些指令对标志位的影响1.逻辑运算指令AND OR XOR NOT TEST2.移位指令SHL SHR SAR3.循环移位指令ROL ROR RCL RCR,第2章:2.5.1
10、 逻辑运算指令,双操作数逻辑指令AND、OR、XOR和TEST设置CFOF0,根据结果设置SF、ZF和PF状态,而对AF未定义;它们的操作数组合与ADD、SUB等一样:运算指令助记符 reg,imm/reg/mem运算指令助记符 mem,imm/reg 单操作数逻辑指令NOT不影响标志位,操作数与INC、DEC和NEG一样:NOT reg/mem,第2章:逻辑与指令AND,对两个操作数执行逻辑与运算,结果送目的操作数,AND dest,src;destdestsrc,只有相“与”的两位都是1,结果才是1;否则,“与”的结果为0,第2章:逻辑或指令OR,对两个操作数执行逻辑或运算,结果送目的操作
11、数,OR dest,src;destdestsrc,只要相“或”的两位有一位是1,结果就是1;否则,结果为0,第2章:逻辑异或指令XOR,对两个操作数执行逻辑异或运算,结果送目的操作数,XOR dest,src;destdestsrc,只有相“异或”的两位不相同,结果才是1;否则,结果为0,第2章:测试指令TEST,对两个操作数执行逻辑与运算,结果并不送目的操作数,仅按AND指令影响标志,TEST dest,src;destsrc,AND与TEST指令的关系,同SUB与CMP指令的关系一样,第2章:逻辑非指令NOT,对一个操作数执行逻辑非运算,NOT reg/mem;reg/memreg/me
12、m,按位取反,原来是“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清0,其余位不变or bl,00001001b;BL中D0和D3置1,其余位不变xor bl,00001001b;BL中D0和D3求反,其余
13、位不变,AND指令可用于复位某些位(同0相与),不影响其他位,OR指令可用于置位某些位(同1相或),不影响其他位,XOR指令可用于求反某些位(同1相异或),不影响其他位,第2章:2.5.2 移位指令,将操作数移动一位或多位,分成逻辑移位和算术移位,分别具有左移或右移操作移位指令的第一个操作数是指定的被移位的操作数,可以是寄存器或存储单元;后一个操作数表示移位位数:该操作数为1,表示移动一位该操作数为CL,CL寄存器值表示移位位数(移位位数大于1只能CL表示)按照移入的位设置进位标志CF,根据移位后的结果影响SF、ZF、PF,第2章:逻辑左移指令SHL,SHL reg/mem,1/CL;reg/
14、mem左移1或CL位;最低位补0,最高位进入CF,演示,第2章:逻辑右移指令SHR,SHR reg/mem,1/CL;reg/mem右移1/CL位;最高位补0,最低位进入CF,演示,第2章:算术左移指令SAL,SAL reg/mem,1/CL;与SHL是同一条指令,演示,第2章:算术右移指令SAR,SAR reg/mem,1/CL;reg/mem右移1/CL位;最高位不变,最低位进入CF,演示,第2章:例2.18 数据移位,mov dx,6075h;DX01100000 01110101Bshl dx,1;DX11000000 11101010B;CF0,SF1、ZF0、PF0sar dx,1
15、;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;实现AH0,同时使CF0shl ax,1;AX2ALmov bx,ax;BXAX2ALshl ax,1;AX4ALshl ax,1;AX8ALadd ax,bx;AX8AL2AL10AL,逻辑左移一位相当于无符号数乘以2 逻辑右移一位
16、相当于无符号数除以2,第2章:2.5.3 循环移位指令,循环移位指令类似移位指令,但要将从一端移出的位返回到另一端形成循环。分为:ROL reg/mem,1/CL;不带进位循环左移ROR reg/mem,1/CL;不带进位循环右移RCL reg/mem,1/CL;带进位循环左移RCR reg/mem,1/CL;带进位循环右移循环移位指令的操作数形式与移位指令相同,按指令功能设置进位标志CF,但不影响SF、ZF、PF、AF标志,演示,演示,演示,演示,第2章:32位数据移位,;将DX.AX中32位数值左移一位shl ax,1rcl dx,1,考虑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;合并到DL,No!,SHL和SAL指令的功能,SHR指令的功能,SAR指令的功能,ROL指令的功能,ROR指令的功能,RCL指令的功能,RCR指令的功能,