《微机原理第3章续.ppt》由会员分享,可在线阅读,更多相关《微机原理第3章续.ppt(63页珍藏版)》请在三一办公上搜索。
1、第三节8086/8088的指令系统(续1)三、逻辑运算和移位指令(一)逻辑运算指令(二)移位指令(三)循环移位指令,三、逻辑运算和移位指令(一)逻辑运算指令1、AND 逻辑“与”指令2、TEST 测试指令3、OR 逻辑“或”指令4、XOR 逻辑“异或”指令5、NOT 逻辑“非”指令特点:8086可以对8位,或16位操作数执行逻辑操作。逻辑运算是按位操作,操作数应该是位串而不是数。,1、AND(Logical and)逻辑“与”指令格式:AND dest,src;B/Wsrc:立即数、通用寄存器、存储器dest:通用寄存器、存储器。执行操作:进行“与”运算(两位中有一位为0,则结果为0,否则为1
2、)操作类型:AND AL,0FH AND CX,DI AND SI,MEM_NAME AND ALPHA DI,AX AND word ptrSI,0FFFEH,注意:“与”指令中操作数不能同时为存储器;影响标志位:CF0F=0,A未定义,SF,ZF,PF反映操作的结果。“与”指令的用途:(1)清CF,自己“与”自己.操作数不变,CF=0 例:AND AL,AL;结果:操作数不变,CF=0。(2)若使操作数中若干位保持不变,则若干位与“1”相与;而若干位置为“0“的场合,则若干位与“0”相与。例:若(AL)=43H AND AL,0FH;(AL)=03H,(AL)03不变;;(AL)47=0H
3、,屏蔽高4位。,“与”指令应用举例:例1:将英文小写字母ASCII转换成大写。小写英文字母ASCII为:az 61H7AH 大写英文字母ASCII为:AZ 41H5AH程序:MOV AL,aAND AL,0DFH;(AL)=41H,0110 0001,0100 0001,1101 1111,61H,41H,DFH,2、TEST测试指令格式:TEST dest,src;(dest)(src)src:立即数、通用寄存器、存储器dest:通用寄存器、存储器 执行操作:二个操作数相与的结果不存,置标志位 操作类型举例:TEST BH,7TEST SI,BPTEST DI,TABLEBXTEST SI,
4、CH TEST word ptrBX,6ACEH,用途:常常用来检测一些条件是否满足,但又不希望改 变原有的操作数的情况下用,常在此指令后边加一条 条件转移指令。例:判断Al中数据的奇偶性设:(AL)=0AEH程序:MOV AL,0AEH;(AL)=0AEH TEST AL,01H JZ EVEN;结果=0为偶数转EVEN 奇数处理 EVEN:偶数处理检测(AL)的最低位是否为0,若为0转EVEN,3、OR(Logical inclusive or)逻辑“或”指令格式:OR dest,src;dest:通用寄存器、存储器。src:立即数、通用寄存器、存储器执行操作:进行按位“或”运算 例:OR
5、 BL,0F6HOR AH,BL OR CL,BETABXDIOR GAMMASI,DX OR MEM_BYTE,80H,注意:“或”指令中操作数不能同时为存储器;影响标志位:CF0F=0,A未定义,SF,ZF,PF反映操作的结果。用途:(1)清CF,自己与自己“或”,操作数不变,CF=0 例:OR AL,AL;(AL)不变,CF=0(2)使某个操作数若干位保持不变,若干位与“0”或;而要使若干位置1,若干位与“1”或。(3)将两个操作数信息组合。若(AL)=03H 用OR指令组合使(AL)=33H=3。OR AL,30H;(AL)=33H,4、XOR(Logical exclusive or
6、)逻辑“异或”指令格式:XOR dset,src;B/Wdest:通用寄存器、存储器。src:立即数、通用寄存器、存储器执行的操作:对指令的两个操作数进行按位“异或”运算二位不相同时为1,相同时为0XOR DI,23F6H XOR SI,DXXOR CL,BUFFERXOR MEMBX,AX XOR byte ptrBP,3DH,注意:“异或”指令中操作数不能同时为存储器;影响标志位:CF0F=0,A未定义,SF,ZF,PF反映操作的结果。用途:若要对某些特定位求反,其余位保持不变 让某些特定位与“1”异或,其余位与“0”异或应用举例:例1:将AL中的第1,3,5,7位求反,0,2,4,6位保
7、持不变。XOR AL,0AAH,例2:比较三条(AX)清“0”指令:XOR AX,AX;清AX,清CF,SUB AX,AX;清AX,清CF,MOV AX,0;清AX,不影响标志位,XOR清“0”指令在多字节累加程序中十分有用。,5、NOT(Logical not)逻辑“非”指令格式:NOT src;B/W 执行操作:字节求反:(src)0FFH-(src)字求反:(src)0FFFFH-(src)源操作数:通用寄存器、存储器,不能是立即数。操作类型举例:NOT AHNOT CX NOT BYTE PTR BPNOT WORD PTR COUNT,综合举例:1使某些位置“0”。IN AL,61H
8、;(AL)=B 想使此位为0执行指令:AND AL,即可。2.使某些位置“1”。IN AL,61H;(AL)=执行指令:OR AL,想使此位为“1”3.使某些位求反:IN AL,61H;(AL)=0 XOR AL,0 0 0 0 0 0 1 0 1,0FDH,02H,02H,逻辑指令应用小结:(1)AND指令常用来对指令的指定位清“0”。(2)OR指令常用来对某些位置1。(3)XOR指令用在程序开头,使某个寄存器清“0”。(4)NOT指令对某个数据取反,+1成补码。(5)TEST指令用来检测指定位为1,还是0。,(二)移位指令(8086有8条移位指令):1、算术逻移位指令(4条):(1,2)S
9、HL/SAL逻辑左移/算术左移指令(3)SHR 逻辑右移指令(4)SAR 算术右移指令2、循环移位(4条):(1)ROL 不含CF循环左移指令(2)ROR 不含CF循环右移指令(3)RCL 含CF循环左移指令(4)RCR 含CF循环右移指令,1、算术逻移位指令(4条):(1)、SHL/SAL(Shift logical left/shift arithmetic left)逻辑左移/算术左移指令格式:SHL dest,cnt;逻辑左移指令 SAL dest,cnt;算术左移指令 dest:通用寄存器、存储器 cnt:表示移位次数 cnt=1,1可写在指令中。cnt1,用CL存放移位次数,SHL
10、/SAL指令操作示意图如下图所示:指令格式举例:SHL AH,1 SAL SI,CL SAL WORD PTRBX,1 SHL BYTE PTRBX,CL,dest,dest:寄存器、存储器指令格式举例:SHR BL,1 SHR AX,CL SHR BYTE PTR DI+BP,1 SHR WORD PTR BLOCK,CL,dest,(2)、SHR(Shift logical right)逻辑右移指令格式:SHR dest,cnt;逻辑右移指令,B/W 执行操作:相当于无符号数2 SHR指令操作示意图如下图所示:,dset,dest:寄存器、存储器 指令格式举例:SAR AL,1 SHR D
11、L,CL SHR WORD PTR TABLESI,1 例:20/2=-10,(3)、SAR(Shift arithmetic right)算术右移指令 格式:SAR dest,cnt;算术右移指令,B/W 执行操作:相当于带符号数的2功能,SAR指令操作示意图如下图所示,应用举例:(BX)=84F0H(1)若(BX)无符号数,求(BX)/2SHR BX,1;(BX)=4278 CF=0,OF=1,SF=0,ZF=0(2)若(BX)带符号数,求(BX)/4 MOV CL,02H 或 SAR BX,1 SAR BX,CL SAR BX,1,算术移位与逻辑移位的区别:,(1)算术移位把操作数看作带
12、符号数,故右移时最高位(符号位)不变;而左移1位时,若最高位与CF不同,说明移位前后符号位有变化,则溢出标志OF=1,表示有溢出。逻辑移位把操作数看作无符号数,故右移时最高位补0;而左移时,当左移1位时,与算术左移不同之处在于:通过CF判断是否产生溢出CF=1,表示有溢出(2)左移1位相当于乘以2,其中的数值有可能超出给定范围,因此,有溢出问题;而右移1位相当于除以2,不存在溢出问题。,2、循环移位(4条):ROL,ROR,RCL,RCR ROL,ROR 不含CF循环移位指令,操作数移动8次后还原。RCL,RCR 含CF循环移位指令,操作数移动9次后还原。影响标志OF、CF,dest,指令格式
13、举例:ROL BH,1 ROL DX,CL ROL WORD PTR TABLEDI,1 ROL BYTE PTR ALPHA,CL,(1)、ROL(Rotate left)不含CF循环左移指令格式:ROL dest,cnt;不含CF循环左移指令,B/W执行操作:ROL指令操作示意图如下图所示 移动8次后操作数还原。,影响标志OF、CF 情况:左循环移动1次后:移位后,看最高有效位(符号位)是否发生变化:如果移位后,最高有效位与CF不等,则:OF=1,否则,OF=0 CF根据实际情况设置。左循环移动多次后:OF 值不定。CF=从目标操作数移出的最后一位。SF、ZF、PF、AF不受影响。,(2)
14、、ROR(Rotate right)不含CF循环右移指令格式:ROR dest,cnt;不含CF循环右移指令,B/W执行操作:ROR指令操作示意图如下图所示 右移8次后操作数还原。,dest,指令格式举例:ROR CX,1 ROL BH,CL ROL BYTE PTRBETA,1 ROL WORD PTR COUNT,CL,影响标志OF,CF情况:右循环移动1次后:如果移位后,最高位次高位,则OF=1;否则:OF=0。CF根据实际情况而定。右循环移动多次后:OF 值不定。CF=从目标操作数移出的最后一位。SF、ZF、PF、AF不影响。,(3)RCL(Rotate left through ca
15、rry)含CF循环左移指令 格式:RCL dest,cnt;含CF循环左移指令,B/W 执行操作:RCL指令操作示意图如下图所示 左移9次后操作数还原。,dest,指令格式举例:RCL BX,1 RCL DL,CL RCL BYTE PTR ARRAYDI,1 RCL WORD PTR SI+BP,CL,(4)RCR(Rotate right through carry)含CF循环右移指令 格式:RCR dest,cnt;含CF循环左移指令,B/W 执行操作:RCR指令操作示意图如下图所示 右移9次后操作数还原。,dest,指令格式举例:RCR DI,1 RCR SI,CL RCR WORD
16、PTRSI+BX+3,1 RCL BYTE PTRPORT,CL,移位指令共同点:所有移位指令都可以作B/W操作。指令中的 dest:寄存器、存储器寻址方式。cnt:表示移位次数 cnt=1,1可写在指令中 cnt1,用CL存放移位次数,不能是其他寄存器。如:SAL AX,1 MOV CL,4 SAL AX,CL 利用移位指令编制,/程序,执行时间比直接用,/指令快,,四、串操作指令(String manipulation)“串”就是内存中一段地址相连的字节或字。串操作-对串中各项进行操作,也叫数据块操作。8086有5种基本操作:1、MOVS(Move string)串传送指令 2、CMPS(
17、Compare string)串比较指令 3、SCAS(Scan string)搜索串指令 4、LODS(Load from string)从串取指令 5、STOS(Store in to string)存入串指令,特点:源操作数用SI寻址,隐含DS值为段地址,可用段跨越前缀;目标操作数用DI寻址,隐含ES为段地址。可以只有源操作数,可以只有目标操作数,可能二者都有 每次操作对SI、DI 调整:DF=1,DI、SI自动-1(字节)或-2(字);DF=0,DI、SI自动+1(字节)或+2(字)。与上述指令基本配合使用前缀有:REP(Repeat)重复 REPE/REPZ相等/为零则重复。REPN
18、E/REPNZ不相等/不为零则重复,REP 重复串操作执行过程:,REP执行流程图,如:REP MOVS,注意:(CX)减1操作不影响标志ZF标志由串操作决定当(CX)=0或ZF=0时退出循环,REPZ执行流程,如:REPZ CMPS串操作重复执行的条件是:cx不为0并且ZF=1,注意:(CX)减1操作不影响标志 ZF标志由串操作决定 当(CX)=0或ZF=1时退出循环,REPNZ执行流程,如:REPNZ CMPS串操作重复执行的条件是:CX不为0且ZF0,(一)MOVS、STOS、LODS指令MOVS(Move String)串传送LODS(Load from String)从串取指令STO
19、S(Store into String)存入串指令,MOVS(Move string)串传送(1)MOVS dest,src;(ES):(DI)(DS):(SI)MOVSB(字节);(SI)(SI)1,(DI)(DI)1 MOVSW(字);(SI)(SI)2,(DI)(DI)2 当方向标志 DF=0时 用“+”DF=1时 用“-”该指令不影响标志位,如:MOVSB;ES:DI DS:SI*MOV单指令不能完成 存储单元之间的数据传送;MOVS指令就是为解决存储单元之间数据传送而设置的。,例:将内存的数据段中以AREA1为首地址的100个数据,传送到附加段中的AREA2为首地址的区域。,应用MO
20、V指令编程:LEA SI,AREA1 LEA DI,AREA2 MOV CX,100 LOOP1:MOV AL,SI MOV ES:DI,AL INC SI INC DI DEC CX JNE LOOP1,用MOVS串操作指令编程:LEA SI,AREA1 LEA DI,AREA2 MOV CX,100 CLD REP MOVSB,数据段,附加段,归纳:在执行MOVS指令时,应该先做好以下准备工作:(1)数据段中源串首地址(如反向传送到末地址)存入SI寄存器中(2)附加段中目的串首地址(或反向传送末地址)存入DI寄存器中(3)数据串长度存入CX寄存器(4)建立方向标志 建立方向标志介绍两条指令
21、:CLD(clear direction flag)功能:DF=0,执行串处理指令时 可以使地址自动+1或+2 STD(set direction flag)功能:DF=1,执行串处理指令时可以使地址自动-1或-2,LODS(Load from string)从串取指令LODS src;(字节)(AL)(DS):(SI),(SI)(SI)1(字)(AX)(DS):(SI),(SI)(SI)2 LODSB(字节)LODSW(字),功能:该指令把由(SI)指定的数据段中某单元内容(AL)/(AX)中。DF=0,(SI)(SI)+1或+2DF=1,(SI)(SI)-1或-2,LODS应用注意:(1)
22、指令允许用段跨越前缀来指定非数据段的存储区。(2)该指令不影响标志位。一般说来,它一般不与REP联用,每重复一次,累加器的内容就改变一次。(AL)中只能保持最后一个元素。有时缓冲区中的一串字符需要多次取出测试时可用本指令。适用于在一个循环中,用基本串操作指令构成复杂串操作时很有用。,3.STOS(Store into string)存入串指令将(AL)或(AX)(ES):(DI),(DI)1或2(DI)STOS dest;(字节)(ES):(DI)(AL),(DI)(DI)1(字)(ES):(DI)(AX),(DI)(DI)2 STOSB(字节)STOSW(字),例:在附加段STORE开始存5
23、个空格程序:MOV AL,20H;_(AL)MOV CX,5 LEA DI,STORE CLD REP STOSB;(ES):(DI)(AL)(DI)(DI)+1,用途:STOS与REP联用时,(CX)缓冲区长度,用来建立一串相同的值。,学习LODS,STOS指令应用例:内存的DS段中有一个首地址为BLOCK补码表示的有符号数的数据块。要求将正,负数分别存于二个缓冲区(ES):存放正数的缓冲区首址为PUOS-DATA,存放负数的缓冲区首址为MINUS-DATA。设:源数据块用SI寻址,正数的目的区用DI寻址 负数的目的区用BX寻址 循环次数(CX),LEA SI,BLOCKLEA DI,PUO
24、S-DATA LEA BX,MINUS-DATAMOV CX,COUNT,传送过程:用LODS指令把源数据取入(AL)中,检查其符号,确定正、负,若为正数用STOS指令送至正数缓冲区,若是负数,把(DI)与(BX)交换,仍使用STOS传送,传送完后再将(DI)与(BX)交换,恢复原值。,START:LEA SI,BLOCKLEA DI,PUOS-DATA LEA BX,MINUS-DATA MOV CX,COUNT CLDGOON:LODSB JNZ MINS JMP AGAINMINS:AGAIN:DEC CXJNZ GOON HLT,TEST AL,80H,STOSB,XCHG BX,DI
25、 STOSB XCHG BX,DI,MOV ES:BX,ALINC BX,(二)与 REPE/REPZ 联合工作的CMPS和SCAS指令 REPNE/REPNZ REPE/REPZ 当相等/为零时重复串操作 格式:REPE(或REPZ)CMPS SCAS 1、CMPS(Compare string)串比较指令 2、SCAS(Scan string)串扫描指令,搜索指令,1、CMPS(Compare string)串比较指令CMPS dest,src;字节操作:(SI)(SI)1,(DI)(DI)1 字操作:(SI)(SI)2,(DI)(DI)2(ES):(DI)-(DS):(SI),结果不存,
26、置标志。CMPSB(字节)CMPSW(字),注意:两数相减,只影响标志,不影响操作数。其它操作规定与MOVS同。,学习REPZ CMPSB指令利用CMPS指令对STRING1和STRING2二个字符串进行比较,如相同在RESULT单元送00H,不同送0FFH。MOV SI,OFFSET STRING1 MOV DI,OFFSET STRING2 MOV CX,COUNT CLD REPZ CMPSB OUTPT:HLT,JNZ UNMAT;,UNMAT:MOV RESULT,0FFH,MOV RESULT,0;,JMP OUTPT,ES:STRING2,0FFH,2、SCAS(Scan str
27、ing)串搜索(扫描)指令(DI)字符串起始地址,(AL)或(AX)关键字 格式:SCAS destSCASB(字节);(AL)-(ES):DI),(DI)(DI)1 SCASW(字);(AX)-(ES):DI),(DI)(DI)2,AL/AX,DI,ES,AL/AX(ES):(DI),注意:(AL)或(AX)-目的串 两数相减,只影响标志,不影响操作数。其它特性与MOVS同,REPNE SCASB指令应用 例:要搜索的关键字放在(AL)或(AX)中,搜索某一数据块或字符串中有无关键字,若有,把搜索次数记下来;否则,bx送0,表示没有要搜索的关键字。LEA DI,BLOCKMOV CX,COU
28、NT MOV BX,COUNTMOV AL,CHAR DONE:HLT,SCASB,REPNE,JZ FOUND,FOUND:SUB BX,CX;把搜索次数记下来,MOV BX,0JMP DONE,DI,82H,56H,57H,FFH,ES:BLOCK,应用举例:例:一个数据块由大小写英文字母、数字、其他符号组成,用CR(ASCII码0DH)结束。数据块首地址为BLOCK1。将其传送到BLOCK2为首地址的内存区,并将英文中小写英文字母(az)转换成大写英文字母(AZ),其余不变。分析:大小写英文字母中相应ASCII码的关系:az相应ASCII码为:61H7AHAZ相应ASCII码为:41H5
29、AH英文中小写英文字母(az)转换成大写英文字母(AZ):只要将小写的ASCII码减去20H即可。程序和流程图如下:,程序:LEA SI,BLOCK1LEA DI,BLOCK2CLDNEXT:LODSBCMP AL,0DHJZ DONECMP AL,61HJC OKCMP AL,7BHJNC OKSUB AL,20HOK:STOSBJMP NEXTDONE:HLT,流程图,例题,1 设DATA为数据段中0076H单元的符号名,其中存放的字为3412H,问执行下列指令后,BX寄存器内容为多少?(1)MOV BX,DATA(2)LEA BX,DATA2.下列程序段执行时AL的值是多少?并标出各条指
30、令执行后OF/SF/ZF/CF各标志位的变化?XOR AL,AL MOV AL,7FH ADD AL,1 ADD AL,80H MOV AH,2 SUB AL,AH,OF=0,SF=0,ZF=1,CF=0,AL=00HOF=0,SF=0,ZF=1,CF=0,AL=7FHOF=1,SF=1,ZF=0,CF=0,AL=80HOF=1,SF=0,ZF=1,CF=1,AL=00HOF=1,SF=0,ZF=1,CF=1,AL=00HOF=0,SF=1,ZF=0,CF=1,AL=0FEH,3.已知AX=03D8H,BX=55AAH,在执行下列指令后,AX=?NOT AXNEG AXAND AX,BXOR
31、AX,BXXOR AX,BXCMPAX,BXTEST AX,80HOR AX,80HAND AX,0FHXOR AX,0FH,0FC27H0FC28H0188H57FAH5672H03D8H03D8H03DFH0008H03D7H,4.写出完成下列操作的指令组(1)将累加器AX清零,并将进位标志CF清零(2)取AX的低四位(3)将BX的高8位置1,其他位不变(4)不用取立即数,也不用存储单元中的数据,使AL=-1,BL=0,CL=1,(1)XOR AX,AX 或AND AX,0 或SUB AX,AX(2)AND AX,000FH(3)OR BX,0FF00H(4)XOR BL,BL MOV C
32、L,BL MOV AL,BL INC CL SUB AL,CL,作业:,阅读以下程序段,说明其运行结果(1)MOV DX,0F100H MOV DH,DX MOV AH,DX 初值:(F100H)=41H(4100H)=42H 结果:(AH)=?(2)MOV SI,2100H MOV 2800H,SI MOV SP,2800H POP DI 结果:(DI)=?(SP)=?,(3)MOV SI,2000H MOV DI,3000H MOV SP,0FF00H PUSH SI PUSH DI XCHG SI,DI MOV AL,SI MOV BL,DI POP SI POP DI 初值:(2000
33、H)=31H(3000H)=61H 结果:(AL)=?(BL)=?(DI)=?(SI)=?(SP)=?说明以下8086指令是否正确,如果不正确,简述理由 ADD BL,0F100H INC 2000H SUB ES,20H MUL BL,CL AND 0FH,AL DIV 08H CMP SI,DI SAL AX,5,阅读以下程序段 MOV SI,4000H MOV DI,4100H MOV AL,SI ADD AL,DI DAA MOV DI,AL MOV AL,SI+1 ADC AL,DI+1 DAA MOV DI+1,AL(1)根据给定的初值,说明运行结果(4000H)=63H,(400
34、1H)=54H,(4100H)=88H,(4101H)=29H 结果:(4100H)=?(4101)=?(2)在以上程序段中,当执行ADD AL,DI指令后,但尚未执行DAA指令时,(AL)=?(CF)=?(ZF)=?(SF)=?(AF)=?(OF)=?(PF)=?(3)在以上程序段中,当第一次执行DAA指令后,(AL)=?(CF)=?(ZF)=?(SF)=?(AF)=?(OF)=?(PF)=?(4)如果在以上程序段中去掉两条DAA指令,但是初值不变,则运行结果为?(4100H)=?(4101H)=?,阅读以下程序段 START:LEA BX,TABLE MOV CL,BX LOOPER:IN
35、C BX MOV AL,BX CMP AL,0AH JNC X1 ADD AL,30H X1:ADD AL,37H JMP NEXT NEXT:MOV BX,AL DEC CL JNZ LOOPER(1)假设从地址TABLE开始,10个存储单元的内容依次为:05H,01H,09H,0CH,00H,0FH,03H,0BH,08H,0AH,依次写出运行以上程序段后,从地址TABLE开始的10个存储单元的内容(2)简单扼要说明以上程序段的功能,通用传送指令,MOV dst,src 1.不能用一条MOV指令传送的(1)存储单元间的传送;(2)立即数至段寄存器的传送;(3)段寄存器间的传送 2.CS,I
36、P.立即数不能作目的操作数.,PUSH srcPOP dst,操作数可为:寄存器,存储器,段寄存器(CS除外)操作数不能为字节,XCHG dst,src 源.目的操作数均可为寄存器和存储器,但不能同时为 存储器;不能为段寄存器,XLAT src_table,输入输出指令,IN a,port 接收数据OUT port,a 发送数据,目标地址传送指令,LEA reg16,mem16 目的操作数须为16位的通用寄存器,源操作数须 为存储器,LDS reg16,mem32 源操作数包括16位的偏移地址和一个16位的段 地址,前者送reg16,后者送DS,LES reg16,mem32,标志传送,LAH
37、F 将标志寄存器的低8位送到AH中,SAHF 与LAHF反,PUSHF 将标志入栈POPF 出栈,可用于保护调用过程前标志寄存器的值,算术运算指令,ADD(ADC)dst,src 目的OPR可为寄存器,存储器;源OPR可为立即数,寄存器或存储器;但不能同时为存储器,不能为段寄存器,INC(DEC)dst 操作数类型可以是寄存器和存储器,不能是段寄存器,SUB(SBB)操作数类型同ADD,NEG dst 操作数类型可为寄存器或存储器,CMP dst,src 操作数类型同ADD,MUL(IMUL)src 源OPR(被乘数)类型为寄存器或存储器,乘数为隐含(AL,AX),目的OPR为隐含(AX,DX
38、),DIV(IDIV)src 源OPR(除数)类型为寄存器或存储器,被除数为隐含(AX或DX:AX),目的OPR为隐含,CBW(CWD)隐含寄存器操作数AL,AX(AX,DX),AAA,DAA,AAS,DAS,AAM,AAD 隐含累加器操作数AL,AH,逻辑指令,AND dst,src 目的OPR可为寄存器或存储器,源OPR可为立即数,寄存器或存储器,但不能同时为存储器,TEST dst,src;OR dst,src;XOR dst,src 操作数类型与AND同,NOT dst 可为8位或16位的寄存器或存储器,移位指令,SHL(SHR)dst,cntSAL(SAR)dst,cntROL(ROR)dst,cntRCL(RCR)dst,cnt,Dst可为8位或16位的寄存器或存储器,串操作指令,MOVSCMPSSCASLODSSTOS,SI为源操作数的偏移地址,DI存放目的操作数的偏移地址,源操作数的段地址通常为隐含DS,允许段超越,目的操作数的段址为隐含的ES,不允许段超越,