工业用微型计算机第二讲_第1页
工业用微型计算机第二讲_第2页
工业用微型计算机第二讲_第3页
工业用微型计算机第二讲_第4页
工业用微型计算机第二讲_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

2.3指令系统共分为6类92种指令。(1)数据传送(2)算术运算(3)逻辑运算和移位(4)串处理(5)控制转移类(6)处理器控制12.3.1数据传送类指令按功能分为四组:②输入输出指令;①通用数据传送指令;③目标地址传送指令;④标志传送指令;MOVPUSHPOPXCHGXLATINOUTLEALDSLESLAHFSAHFPUSHFPOPF2■指令汇编格式:MOVdest,src操作:将一个源操作数(字节或字)传送到目标操作数中。dest←(src)■受影响的状态标志位:没有(1)MOV(move)传送1.通用数据传送指令;32012-06.如下指令中正确的指令是【】

A.MOVDS,1234HB.MOVBX,1234H

C.MOVIP,1234HD.MOV1234H,AX2010-07.下列四条指令中正确的是【】

A.MOVDS,0100HB.MOVAL,0100H

C.SHRAL,4D.MOVAL,AH2009-04.下列四条指令中,错误的是【】

A.MOVAX,[DI]B.MOVAL,[DI+5]

C.MOVCS,AXD.MOVDS,AXBDC4SS:0000SP00000H栈顶栈底初始化时SPFFFFFH堆栈段...××H××H...12H34H......

8086/8088堆栈结构■指令汇编格式:PUSHsrc■

指令汇编格式:POPdest5注意:

1.源操作数可以是CPU内部的16位通用寄存器、段寄存器和内存操作数。2.入栈操作对象必须是16位数,不能是8位数。3.可以使用除立即数以外的其它寻址方式。PUSHBLPUSHDHPOPALPOPCL

■指令汇编格式:PUSHsrc■

指令汇编格式:POPdest62012-25.设SP=100H,AX=200H,当8086执行PUSHAX指令后,SP的值变为________。P572009-27.若堆栈指针SP的初值为3000H,执行PUSHAX指令后SP的值为___________。FEH或00FEH2FFEH7(4)XLAT(translate)转换表■指令汇编格式:XLAT操作:BX和AL内容之和指出的内存字节单元的内容送到AL中。AL←(BX+AL)■受影响的状态标志位:没有■说明:XLAT指令用于查表。表的开始地址即表头地址由BX寄存器给出。AL中的原始值是要寻址的表中元素地址的位移量,规定表中第一个字节的位移量为0。这是一种特殊的基址变址寻址方式,基址寄存器为BX,变址寄存器为AL。8MOVBX,2A00HMOVAL,3XLAT■

举例DS:2A0041H+142H+243H+344H+445H+546H+647H+748H+849H+94AH+104BH+114CH+124DH+134EH+144FH+1550H+1651H+1752H+1853H.+1954H+2055H9IN(Input)输入指令一般格式INAL,n;BAL←[n]

INAX,n;WAX←[n+1][n]

INAL,DX;BAL←[DX]

INAX,DX;WAX←[DX+1][DX]

功能:从I/O端口输入数据至AL或AX。注意:输入指令允许把一个字节或一个字由一个输入端口传送到AL或AX中。若端口地址超过255时,则用DX保存端口地址,这样用DX作端口寻址最多可寻找64K个端口(必须用DX)。2.输入输出指令;10OUT(Output)输出指令一般格式OUTn,AL;BAL→[n]

OUTn,AX;WAX→[n+1][n]

OUTDX,AL;BAL→[DX]

OUTDX,AX;WAX→[DX+1][DX]功能:将AL或AX的内容输出至I/O端口。注意:该指令将AL或AX中的内容传送到一个输出端口。端口寻址方式与IN指令相同。112011-16.8088执行指令OUT12,AL时,数据总线传送的内容是【】

A.AL的值B.AX的值

C.12D.12H2010-17.执行指令OUTDX,AL时【】

A.B.

C.D.AC12(1)LEA(loadeffectiveaddress)取有效地址■指令汇编格式:LEAreg16,mem操作:将指令中给出的存储器操作数的有效地址(即地址的偏移量)送到指定的寄存器中。

reg16←mem的EA■受影响的状态标志位:没有■说明:LEA指令是将源操作数地址的偏移量,即有效地址传送到目标操作数中。源操作数必须是一个存储器操作数,目标操作数可以是任一16位通用寄存器、指针寄存器或变址寄存器。3.目标地址传送指令;13指令LEA与LDS,LES的比较已知:DS=09A0H,BX=0048HLEADI,[BX]LDSDI,[BX]LESDI,[BX]→执行后:DI=0048H→执行后:DI=003EHDS=0816H→执行后:DI=003EHES=0816HDS=09A008H……3EH00H16H0048H0049H004AH004BH14■标志寄存器长度为16位,其中9个位有定义。××××OF

DFIFTFSF

ZF×AF×PF×CF1514131211109876543210标志寄存器FR4.标志传送指令15●(1)LAHF指令(读标志指令)指令格式:LAHF指令功能:将标志寄存器低8位→AH。●(2)SAHF(设置标志指令)指令格式:SAHF指令功能:将AH→标志寄存器低8位。SFZF

AFPFCF01234567AHLAHF的功能SFZF

AFPFCF01234567AHSAHF的功能16●

(3)PUSHF指令(标志进栈)指令格式:PUSHF指令功能:将16位标志寄存器入栈,同时修改栈指针SP。●(4)POPF指令(标志出栈)指令格式:POPF指令功能:将栈顶的一个字送标志寄存器,同时修改栈指针SP。注:字传送方式16位标志寄存器中的16位数据传送即状态标志位OF、CF、AF、ZF、SF、PF的传送及控制标志位IF、DF、TF的传送17指令类型助记符算术运算加法(5)ADD,ADC,INC,AAA,DAA减法(7)SUB,SBB,DEC,NEG,CMP,AAS,DAS乘法(3)MUL,IMUL,AAM除法(3)DIV,IDIV,AAD转换(2)CBW,CWD2.3.2算术运算指令181.加法指令(1)ADD(addition)加法(2)ADC(additionwithcarry)带进位加(3)INC(incrementby1)增119(1)ADD(addition)加法■指令汇编格式:ADDdest,src操作:两个操作数求和,结果存目标操作数中。dest←(dest)+(src)■受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明:dest和src不能同时为存储器操作数和段寄存器。20例:ADDCL,10ADDDX,SIADDAX,MEMADD[BX],ALADD[DI],3000H21(2)ADC(additionwithcarry)带进位加法■指令汇编格式:ADCdest,src操作:两个操作数相加的同时,再加上CF。结果存入目标操作数中。dest←(dest)+(src)+CF■受影响的状态标志位:OF,SF,ZF,AF,PF,CF■说明:ADC指令主要用于多精度数据相加。22(3)INC(incrementbyone)增1■指令汇编格式:INCdest操作:将指定的操作数加1,并将结果回送到目标操作数中。dest←(dest)+1■dest可以是寄存器(段寄存器除外)、变量。■dest不允许是立即数。■受影响的状态标志位:OF,SF,ZF,AF,PF■说明:INC指令不影响CF。例:INCDLINCSIINCBYTEPTR[BX][SI]INCWORDPTR[DI]23指令格式:DAA指令功能:对AL中的由两个组合BCD码相加所得的结果进行调整,并将调整后的结果存于AL中。操作过程:如果AL的低4位大于9或者AF=1,则AL+6→AL,并置AF=1;如果AL的高4位大于9或者CF=1,则AL+60H→AL,并置CF=1。注意本指令使用时必须紧跟在ADD或ADC指令之后。而且,只能对AL中的结果进行调整,因此对多字节的十进制数运算,只能从低字节开始逐个字节的进行运算和调整。(4)DAA(组合BCD码的加法调整指令)说明:指令会影响OF、SF、ZF、AF、PF、CF。242.减法指令(1)SUB(subtract)减法(2)SBB(subtractwithborrow)带借位减(3)DEC(decrementby1)减1(4)NEG(negate)取补

CMP(compare)比较

DAS(decimaladjustforsubtract)25(1)SUB(subtract)减法■指令汇编格式:SUBdest,src操作:从目标操作数减去源操作数,结果存入目标操作数。

dest←(dest)-(src)■dest,src可以是寄存器(段寄存器除外)、变量。■src可以是立即数。■不允许dest和src同时为变量。■受影响的状态标志位:OF,SF,ZF,AF,PF,CF例:SUBAL,98HSUBBX,CXSUBDX,WORDPTR[VAR1]SUB[BX],AXSUBWORDPTR[DI],1234H26(2)SBB(subtractwithborrow)带借位减法■指令汇编格式:SBBdest,src操作:从目标操作数中减去源操作数和CF,结果存入目标操作数中。dest←(dest)-(src)-CF■dest,src可以是寄存器(段寄存器除外)、变量。■src可以是立即数。■不允许dest和src同时为变量。■受影响的状态标志位:OF,SF,ZF,AF,PF,CF例:SBBAL,0SBBDL,CLSBBAX,[BX]SBB[1234H],ALSBBWORDPTR[1234H],56H27(3)DEC(decrementbyone)减1■指令汇编格式:DECdest操作:将指定的操作数减1,并将结果送回到目标操作数中。

dest←(dest)-1■dest,src可以是寄存器(段寄存器除外)、变量。■受影响的状态标志位:OF,SF,ZF,AF,PF■说明:DEC指令不影响CF。例:DECBLDECCXDECBYTEPTR[BX]DECWORDPTR[BP][DI]28(4)NEG(negate)取补(取负)■指令汇编格式:NEGdest操作:从0中减去指令中给定的操作数,最后将结果送回到给定的操作数中。dest←0-(dest)■dest可以使寄存器(段寄存器除外)、变量。■dest不允许是立即数。■受影响的状态标志位:OF,SF,ZF,AF,PF,CF例:NEGBHNEGAXNEGWORDPTR[SI+10]29(5)CMP(compare)比较■指令汇编格式:CMPdest,src操作:从目标操作数中减去源操作数

(dest)-(src)■dest,src可以是寄存器(段寄存器除外)、存储器变量。■dest,src的位数必须相同。■指令不保留执行结果。■受影响的状态标志位:OF,SF,ZF,AF,PF,CF例:CMPAL,0BHCMPCX,DICMPAX,GAMMACMPAREA2,15030分为无符号数与有符号数的比较,根据相减结果:a.无符号若ZF=1,则两数相等若ZF=0,CF=1,则被减数小b.有符号OF=0时,若SF=0,则A>B若SF=1,则A<BOF=1时,若SF=1,则A>B若SF=0,则A<B31指令格式:DAS

指令功能:对AL中的由两个组合BCD码相减所得的结果进行调整,并将调整后的结果存于AL中。操作过程:调整方法与DAA类似,不同的只是当AL的低4位大于9或者AF=1,则AL-6→AL,并置AF=1;而当AL的高4位大于9或者CF=1时,则AL-60H→AL,并置CF=1。注意使用DAS指令必须紧跟在SUB或SBB指令之后。(6)DAS(组合BCD码的减法调整指令)322012-08.设AL=1,8086执行指令SUBAL,2后,为0的标志是【】

A.CF B.OF

C.PFD.SF2009-05.指令CMPBL,DL运算结果将会【】

A.影响标志位,并把差值送BLB.不影响标志位,但将差值送BL

C.影响标志位,但不将差值送BLD.不影响标志位,也不计算差值2009-11.两数相减其结果为零;则标志寄存器中必定为1的标志位是【】

A.CFB.DF

C.SFD.ZFBCD33(1)CBW(convertbytetoword)将字节转换为字(2)CWD(convertwordtodoubleword)将字转换为双字5.转换指令34指令类型助记符逻辑指令逻辑运算(5)AND,TEST,OR,XOR,NOT移位(3)SHL,SAL,SHR,SAR循环移位(4)ROL,ROR,RCL,RCR1.AND(and,logicalconjunction)逻辑与2.TEST(test,orlogicalcompare)测试3.OR(or,inclusive)逻辑或4.XOR(exclusiveor)异或5.NOT(not,orform1’scomplement)取反2.3.3逻辑运算指令351.AND逻辑与■指令汇编格式:ANDdest,src

dest←(dest)∧(src),CF←0,OF←0●

指令会影响SF,ZF,PF;总是将OF=0,CF=0;对AF不定。2.TEST测试■指令汇编格式:TESTdest,src(dest)∧(src),CF←0,OF←0●

指令会影响SF,ZF,PF;总是将OF=0,CF=0;对AF不定。3.OR逻辑或■指令汇编格式:ORdest,srcdest←(dest)∨(src),CF←0,OF←0●

指令会影响SF,ZF,PF;总是将OF=0,CF=0;对AF不定。364.XOR异或■指令汇编格式:XORdest,srcdest←(dest)⊕(src),CF←0,OF←0●

4)指令会影响SF,ZF,PF;总是将OF=0,CF=0;对AF不定。■说明:XOR指令可用来使操作数中的某些位取反,某些位不变。5.NOT取反■指令汇编格式:NOTdest

dest←dest●

对标志位影响不确定。37逻辑操作指令应用举例将寄存器AL的第1,3,5,7位清0,其它位不变。

ANDAL,01010101B将寄存器AL的第1,3,5,7位置1,其它位不变。

ORAL,10101010B将寄存器AL的第1,3,5,7位取反,其它位不变。

XORAL,10101010B382011-08.设AL=80H,执行指令ORAL,AL后,被置位的标志是【】P74

A.CFB.OF

C.SFD.ZF2010-02.指令XORAL,AL执行后,则【】P75

A.CF=1B.SF=1

C.ZF=1D.OF=1CC39移位指令SHLdest,nSHRdest,nSALdest,nSARdest,nSHL

reg/mem,1/CL ;逻辑左移SHR

reg/mem,1/CL ;逻辑右移SAL

reg/mem,1/CL ;算术左移SARreg/mem,1/CL ;算术右移40循环移位指令ROLdest,nRORdest,nRCLdest,nRCRdest,nROL

reg/mem,1/CL ;不带进位循环左移ROR

reg/mem,1/CL ;不带进位循环右移RCL

reg/mem,1/CL ;带进位循环左移RCRreg/mem,1/CL ;带进位循环右移41指令类型助记符逻辑指令逻辑运算(5)AND,TEST,OR,XOR,NOT移位(3)SHL,SAL,SHR,SAR循环移位(4)ROL,ROR,RCL,RCR移位循环逻辑算术不带进位带进位左右CFdest0CFdest0CFdestCFdest0CFdestCFdestCFdestCFdestSHLSALRCLROLSHRSARRCRROR422012-15.设AL=10H,指令SHRAL,1执行后,AL的值为【】P76

A.08HB.10H

C.18HD.20H2011-24.设AL=80H,当执行指令SARAL,1后,AL中的内容是

。AC0H432.串操作指令串操作指令是8086指令系统中比较独特的一类指令,采用比较特殊的数据串寻址方式,在操作主存连续区域的数据时,特别好用,因而常用重点掌握: MOVSSTOSLODS CMPSSCASREP一般了解: REPZ/REPEREPNZ/REPNE指令类型助记符串处理串操作(5)MOVS,CMPS,SCAS,LODS,STOS重复控制(3)REP,REPE,REPZ,REPNE,REPNZ44(1)MOVSB/MOVSW

数据串传送指令(movestring)把字节或字操作数从主存的源地址传送至目的地址MOVSB

;字节串传送:[ES:DI]←[DS:SI] ;SI←SI±1,DI←DI±1MOVSW

;字串传送:[ES:DI]←[DS:SI] ;SI←SI±2,DI←DI±245(2)CMPSB/CMPSW

数据串比较指令(comparestring)将主存中的源操作数减去目的操作数,以便设置标志,进而比较两操作数之间的关系。CMPSB

;字节串比较:[DS:SI]-[ES:DI] ;SI←SI±1,DI←DI±1CMPSW

;字串比较:[DS:SI]-[ES:DI] ;SI←SI±2,DI←DI±2■受影响的标志位:OF,SF,ZF,AF,PF,CF46(3)SCASB/SCASW

数据串搜索指令(scanstring)将AL/AX减去目的操作数,以便设置标志,进而比较AL/AX与操作数之间的关系。SCASB

;字节串查找:AL-[ES:DI] ;DI←DI±1SCASW

;字串查找:AX-[ES:DI] ;DI←DI±2■受影响的标志位:OF,SF,ZF,AF,PF,CF47(4)LODSB/LODSW

取数据串元素指令(loadstring)把指定主存单元的数据传送给AL或AXLODSB

;字节串读取:AL←[DS:SI] ;SI←SI±1LODSW

;字串读取:AX←[DS:SI] ;SI←SI±248(5)STOSB/STOSW

存数据串元素指令(storestring)把AL或AX数据传送至目的地址STOSB

;字节串存储:[ES:DI]←AL ;DI←DI±1STOSW

;字串存储:[ES:DI]←AX ;DI←DI±249指令类型助记符控制转移转移无条件转移(1)JMP条件转移(19)JA/JNBE,JAE/JNB,JB/JNAE,JBE/JNA,JC,JCXZJE/JZ,JNS,JO,JS,JG/JNLE,JGE/JNL,JL/JNGEJLE/JNG,JNC,JNE/JNZ,JNO,JNP/JPO,JP/JPE循环控制(5)LOOP,LOOPE,LOOPZ,LOOPNE,LOOPNZ过程调用(2)CALL,RET中断指令(3)INT,INTO,IRET2.3.5转跳指令501.无条件转移指令JMP■指令汇编格式:JMPtarget■受影响的状态标志位:无■说明:指令中的target可以是直接标号、寄存器间接或存储器间接寻址形式。JMP分为近转跳(NearJump)和远转跳(FarJump)两大类51代码段代码段格式:JMPSHORTtarget

;IP←IP+target(8位);-128≤target≤127格式:JMPNEARPTRtarget

;IP←IP+target(16位);-32768≤target≤32767格式:JMPFARPTRtarget

;CS←target的段;IP←target的偏移

实际编程时,汇编程序会根据目标地址的属性,自动处理成短转跳、近转跳或远转跳程序员可用操作符short、nearptr

或farptr

强制成为需要的转移类型代码段代码段52(2)Jxx指令(条件转移指令)指令格式及操作Jxxtarget;target:目标地址;Jxx是短转跳功能Jxx根据不同条件转跳target。不同条件Jxx格式不同。说明Jxx对标志位没有影响。53根据利用的标志位不同,分成三种情况:⑴判断单个标志位状态⑵比较无符号数高低⑶比较有符号数大小

Jxx指令实际虽然只有16条,但却有30个助记符采用多个助记符,目的是为了方便记忆和使用54(1)判断单个标志位状态测试位指令格式转移条件含义ZFJE/JZOPRZF=1相等/等于0JNE/JNZOPRZF=0不相等/不等于SFJSOPRSF=1是负数JNSOPRSF=0是正数PFJP/JPEOPRPF=1有偶数个“1”JNP/JPOOPRPF=0有奇数个“1”OFJOOPROF=1有溢出JNOOPROF=0无溢出CFJCOPRCF=1有进位/借位JNCOPRCF=0无进位/借位55(2)比较无符号数高低指令格式转移条件含义名称JB/JNAE/JC标号CF=1A<B低于(不高于或等于)JAE/JNB/JNC标号CF=0A>=B高于或等于(不低于)JA/JNBE标号CF=0且ZF=0A>B高于(不低于或等于)JBE/JNA标号CF=1或ZF=1A<=B低于或等于(不高于)无符号数的大小用高(Above)、低(Below)表示,需要利用CF确定高低、利用ZF标志确定相等(Equal)56(3)比较有符号数大小指令格式转移条件含义名称JG/JNLE标号SF=OF且ZF=0A>B大于(不小于或等于)JGE/JNL标号SF=OFA>=B大于或等于(不小于)JL/JNGE标号SF≠OFA<B小于(不大于或等于)JLE/JNG标号SF≠OF或ZF=1A<=B小于或等于(不大于)判断有符号数的大(Greater)、小(Less),需要组合OF、SF标志、并利用ZF标志确定相等与否572.循环控制指令LOOPLOOPE/LOOPZLOOPNE/LOOPNZtarget标识循环体入口的标号LOOP(LOOP)循环LOOPZ/LOOPE(Loopwhilezero,orequal)当为零或相等时循环LOONZ/LOOPNE(Loopwhilenonzero,ornotequal)当不为零或不相等时循环58(1)LOOP重复控制指令■指令格式:LOOPtarget■功能:①CX←CX-1②若CX≠0,则使控制转到target标识的循环入口处,继续下一次循环,否则退出循环体,执行后续指令。■说明1)LOOP对标志位没有影响;2)LOOP是短转跳,即-128≤target≤+127.59过程(Procedure)相当于子程序,是完成特定功能的一段程序。当主程序(调用程序)需要执行这个功能时,采用CALL调用指令转移到该过程(子程序)的起始处执行。当运行完子程序功能后,采用RET返回指令回到主程序继续执行。

转移指令有去无回过程调用需要返回,其中利用堆栈保存返回地址3.过程调用指令60■指令汇编格式:CALLproc■功能:CALL指令执行后,CPU执行proc。■说明:1)CALL对标志位没有影响;2)proc表示被调用过程的名称,是一个存储器操作数。(1)CALL指令61过程调用分类①段内调用与段间调用段内调用:通过指令指针IP的变化实现的。段间调用:通过IP和CS的共同变化实现的。②直接调用与间接调用

直接调用:子程序的入口地址直接包含在指令代码中。间接调用:子程序的入口地址通过寄存器或存储器间接得到的。62(2)RET指令

■汇编格式:RET RETpop_value;

■功能:从被调用过程返回。1)从近过程返回

RET;IP←[SP+1:SP] ;SP←SP+2

RETpop_value;IP←[SP+1:SP] ;SP←SP+2;SP←SP+pop_value632)从远过程返回

RET;IP←[SP+1:SP] ;SP←SP+2

温馨提示

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

评论

0/150

提交评论