计算机组成原理与汇编课件第3章80x86的指令系统和寻址方式_第1页
计算机组成原理与汇编课件第3章80x86的指令系统和寻址方式_第2页
计算机组成原理与汇编课件第3章80x86的指令系统和寻址方式_第3页
计算机组成原理与汇编课件第3章80x86的指令系统和寻址方式_第4页
计算机组成原理与汇编课件第3章80x86的指令系统和寻址方式_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

第3章80x86的指令系统和寻址方式3.18086的寻址方式3.28086的指令系统3.18086的寻址方式与数据有关的寻址方式:以MOV指令为例•••••••立即寻址寄存器寻址直接寻址MOVAX,3069HMOVAL,BHMOVAX,[2000H]寄存器间接寻址寄存器相对寻址基址变址寻址相对基址变址寻址MOVAX,[BX]MOVAX,COUNT[SI]MOVAX,[BP][DI]MOVAX,MASK[BX][SI]存储器寻址1立即寻址方式——操作数在指令中给出指令格式:MOVAL,5MOVAX,3064HMOVAL,‘A’*只能用于SRC字段*SRC和DST的字长一致MOV40H,ALMOVAH,3064H

2寄存器寻址方式—操作数在指定的寄存器中MOVAX,BXMOVAL,BHMOVAX,3064H*字节寄存器只有*SRC和DST的字长一致*CS不能用MOV指令改变AHALBHBLCHCLDHDLMOVAH,BXMOVCS,AX3直接寻址方式—有效地址EA由指令直接给出例:MOVAX,[2000H]EA=2000H,假设(DS)=3000H,那么PA=32000HAHAL3050320005030(AX)=3050H*隐含的段为数据段DS*可使用段跨越前缀*操作数地址可由变量(符号地址)表示,但要注意MOVAX,ES:[2000H]VALUEDB10变量的属性MOVAH,VALUEMOVAX,VALUEMOVAX,WORDPTRVALUE4寄存器间接寻址—EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中MOVAX,[BX]PA=16d(DS)+(BX)MOVAX,ES:[BX]PA=16d(ES)+(BX)MOVAX,[BP]PA=16d(SS)+(BP)*不允许使用AX、CX、DX存放EAMOVAX,[CX]*SRC和DST的字长一致MOVDL,[BX];[BX]指示一个字节单元MOVDX,[BX];[BX]指示一个字单元*适于数组、字符串、表格的处理5寄存器相对寻址方式(BX)(BP)8位(SI)16+位位移量(DI)有效地址=指令格式:MOVAX,COUNT[SI]或MOVAX,[COUNT+SI]假设(DS)=3000H,(SI)=2000H,COUNT=3000H,则:PA=35000H假设(35000H)=1234H,那么(AX)=1234H*适于数组、字符串、表格的处理6基址变址寻址方式(BX)(SI)(BP)(DI)有效地址=+指令格式:MOVAX,[BX][DI]MOVAX,[BX+DI]MOVAX,ES:[BX][SI]*适于数组、字符串、表格的处理*必须是一个基址寄存器和一个变址寄存器的组合MOVAX,[BX][BP]MOVAX,[SI][DI]7相对基址变址寻址方式有效地址=(BX)(SI)8位(BP)(DI)16位位移量++MOVAX,MASK[BX][SI]MOVAX,MASK[BX+SI]MOVAX,[MASK+BX+SI]或或段寄存器的使用规定默认的可跨越的访问存储器的方式段寄存器段寄存器偏移地址取指令CS无IP堆栈操作SS无SP一般数据访问DSCSESSS有效地址EABP作为基址的寻址SSCSDSESBP串操作的源操作数DSCSESSSSI串操作的目的操作数ES无DI例:编写一段显示字符串STRING的程序DATASEGMENTSTRINGDB‘HAPPYNEWYEAR!’,0DH,0AH,‘$’COUNTDW17DATAENDS(1)直接寻址movdl,stringmovah,2int21h;显示字符‘H’movdl,string+1movah,2int21h;显示字符‘A’::(2)寄存器间接寻址movcx,count;movcx,17movbx,offsetstring;string的偏址bxNext:movdl,[bx]movah,2int21h;显示一个字符incbxloopnext;循环指令(3)寄存器相对寻址movcx,count;movcx,17movsi,0Next:movdl,string[si];movdl,[string+si]movah,2int21h;显示一个字符incsiloopnext;循环指令(4)基址变址寻址movcx,count;movcx,17movbx,offsetstring;string的偏址bxmovsi,0Next:movdl,[bx][si];movdl,[bx+si]movah,2int21h;显示一个字符incsiloopnext;循环指令(5)DOS显示字符串功能movdx,offsetstring;string的偏址dx;leadx,stringmovah,9int21h;显示一串字符8与转移地址有关的寻址方式用来确定转移指令及转子指令的转向地址。•段内寻址段内直接寻址段内间接寻址JMPNEARPTRNEXTJMPTABLE[BX]•段间寻址段间直接寻址JMPFARPTRNEXT段间间接寻址JMPDWORDPTR[BX]例:JMPNEARPTRNEXT近转移-32768~+32767JMPSHORTNEXT短转移-128~+127(2)段内间接寻址转向的有效地址是一个寄存器或存储单元的内容。(可用除立即数以外的任何一种数据寻址方式得到)例:TABLE=20A2H(BX)=1256H(SI)=528EH(DS)=2000H(232F8H)=3280H(264E4H)=2450HJMPBX;(IP)=1256HJMPTABLE[BX]JMPWORDPTRTABLE[BX];(IP)=3280HJMP[BX][SI]JMPWORDPTR[BX][SI];(IP)=2450H(3)段间直接寻址用指令中提供的转向段地址和偏移地址取代CS和IP例:code2segmentcode1segment……next:…...……jmpfarptrnext…………code2endscode1ends(4)段间间接寻址用存储器中的两个相继字的内容取代CS和IP(存储单元的地址可用存储器寻址方式得到)例:JMPDWORDPTR[INTERS+BX]PA=(DS)×24+(BX)+INTERS(PA+1,PA)→IP(PA+3,PA+2)→CS3.28086的指令系统

数据传送指令算术指令逻辑指令串处理指令控制转移指令处理机控制指令1数据传送指令:

通用数据传送指令MOV、PUSH、POP、XCHG

累加器专用传送指令IN、OUT、XLAT

地址传送指令LEA、LDS、LES

标志寄存器传送指令LAHF、SAHF、PUSHF、POPF

类型转换指令CBW、CWD(1)通用数据传送指令传送指令:MOVDST,SRC执行操作:(DST)(SRC)注意:*DST、SRC不能同时为段寄存器*立即数不能直接送段寄存器*DST不能是立即数和CS*DST、SRC不能同时为存储器寻址*不影响标志位*段地址必须通过寄存器送到DS寄存器MOVDS,ESMOVDS,2000HMOVAX,DSEGMOVDS,AX进栈指令:执行操作:PUSHSRC(SP)(SP)–2((SP)+1,(SP))(SRC)出栈指令:执行操作:POPDST(DST)((SP)+1,(SP))(SP)(SP)+2堆栈:‘先进后出’的存储区,段地址存放在SS中,SP在任何时候都指向栈顶,进出栈后自动修改SP。注意:*堆栈操作必须以字为单位。*不影响标志位*不能用立即寻址方式*DST不能是CSPUSH1234HPOPCS例:假设(AX)=2107H,执行PUSHAX低地址(SP)07H21H(SP)****************进栈方向高地址PUSHAX执行前PUSHAX执行后例:POPBX低地址(SP)07H21H07H21H********(SP)********出栈方向高地址POPBX执行前POPBX执行后(BX)=2107H例:PUSHAXPUSHBXPUSHCX……;其间用到AX、BX、CXPOPCX;后进先出POPBXPOPAX交换指令:执行操作:(OPR1)(OPR2)XCHGOPR1,OPR2注意:*不影响标志位*不允许使用段寄存器*两个操作数必须有一个在寄存器中例:XCHGBX,[BP+SI]XCHGAL,BH(2)累加器专用传送指令(只限使用AX或AL)输入指令IN(I/OCPU)长格式:ININ执行操作:(AL)(PORT)AL,PORTAX,PORT(字节)(字)(字节)(AX)(PORT+1,PORT)(字)短格式:INAL,DX(字节)INAX,DX(字)执行操作:(AL)((DX))(字节)(AX)((DX)+1,(DX))(字)输出指令OUT(CPUI/O)长格式:OUTPORT,AL(字节)OUTPORT,AX(字)执行操作:(PORT)(AL)(字节)(PORT+1,PORT)(AX)(字)短格式:OUTDX,AL(字节)OUTDX,AX(字)执行操作:((DX))(AL)(字节)((DX)+1,(DX))(AX)(字)注意:*不影响标志位*前256个端口号00H~FFH可直接在指令中指定(长格式)*如果端口号256,端口号DX(短格式)例:INAX,28HMOVDATA_WORD,AX例:MOVDX,3FCHINAX,DX例:OUT5,AL换码指令:XLAT或执行操作:(AL)((BX)+(AL))XLATOPR例:MOVBX,OFFSETTABLE;(BX)=0040HMOVAL,3XLATTABLE指令执行后(AL)=33H(DS)=F000HTABLE注意:(BX)30HF0040*不影响标志位*字节表格(长度不超过256)31HF0041(AL)=332HF0042首地址(BX)33HF0043*需转换的代码位移量(AL)(3)地址传送指令有效地址送寄存器指令:LEAREG,SRC执行操作:(REG)SRC指针送寄存器和DS指令:LDSREG,SRC执行操作:(REG)(SRC)(DS)(SRC+2)相继二字寄存器、DS指针送寄存器和ES指令:LESREG,SRC执行操作:(REG)(SRC)(ES)(SRC+2)相继二字寄存器、ES例:LEABX,[BX+SI+0F62H]LDSSI,[10H]LESDI,[BX]MOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLDSBX,TABLE;(BX)=0040HTABLE(DS):1000H40H00H00H30H;(DS)=3000HLESBX,TABLE;(BX)=0040H;(ES)=3000H注意:*不影响标志位*REG不能是段寄存器*SRC必须为存储器寻址方式(4)标志寄存器传送指令标志送AH指令:LAHF执行操作:(AH)(FLAGS的低字节)AH送标志寄存器指令:SAHF执行操作:(FLAGS的低字节)(AH)标志进栈指令:PUSHF执行操作:(SP)(SP)-2((SP)+1,(SP))(FLAGS)标志出栈指令:POPF执行操作:(FLAGS)((SP)+1,(SP))(SP)(SP)+2*影响标志位(5)类型转换指令CBW执行操作:若(AL)的最高有效位为0,则(AH)=00HALAX若(AL)的最高有效位为1,则(AH)=FFHCWD执行操作:若(AX)的最高有效位为0,则(DX)=0000HAX(DX,AX)若(AX)的最高有效位为1,则(DX)=FFFFH例:(AX)=0BA45HCBW;(AX)=0045HCWD;(DX)=0FFFFH(AX)=0BA45H注意:*无操作数指令*隐含对AL或AX进行符号扩展*不影响条件标志位2算术指令:

加法指令ADD、ADC、INC

减法指令SUB、SBB、DEC、NEG、CMP

乘法指令MUL、IMUL

除法指令DIV、IDIV

十进制调整指令DAA、DAS、AAA、AAS、AAM、AAD(1)加法指令加法指令:ADDDST,SRC执行操作:(DST)(SRC)+(DST)带进位加法指令:ADCDST,SRC执行操作:(DST)(SRC)+(DST)+CF加1指令:执行操作:INCOPR(OPR)(OPR)+1注意:*除INC指令不影响CF标志外,均对条件标志位有影响。加法指令对条件标志位的影响1结果为负0否则1结果为00否则SF=ZF=CF=1和的最高有效位有向高位的进位0否则1两个操作数符号相同,而结果符号与之相反0否则OF=CF位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。举例:n=8bit带符号数(-128~127),无符号数(0~255)0000010010000111+00001011+1111010110111110000001111带:(+4)+(+11)=+15OF=0无:4+11=15CF=0带:(-121)+(-11)=+124OF=1无:135+245=124CF=1带符号数和无符号数都不溢出带符号数和无符号数都溢出0000011100001001+11111011100000010+0111110010000101带:(+7)+(-5)=+2OF=0无:7+251=2CF=1带:(+9)+(+124)=-123OF=1无:9+124=133CF=0无符号数溢出带符号数溢出(2)减法指令减法指令:执行操作:SUBDST,SRC(DST)(DST)-(SRC)带借位减法指令:SBBDST,SRC执行操作:(DST)(DST)-(SRC)-CF减1指令:执行操作:DECOPR(OPR)(OPR)-1求补指令:执行操作:NEGOPR(OPR)-(OPR)比较指令:执行操作:CMPOPR1,OPR2(OPR1)-(OPR2)注意:*除DEC指令不影响CF标志外,均对条件标志位有影响。减法指令对条件标志位(CF/OF/ZF/SF)的影响:CF=1被减数的最高有效位有向高位的借位(不够减)0否则(够减)1两个操作数符号相反,而结果的符号与减数相同0否则OF=CF位表示无符号数减法的溢出。OF位表示带符号数减法的溢出。NEG指令对CF/OF的影响000111100操作数为01否则+0001CF=11111操作数为-128(字节运算)或OF=操作数为-32768(字运算)0否则NEG指令对CF/OF的影响000011110操作数为01否则CF=+0001100001操作数为-128(字节运算)或OF=操作数为-32768(字运算)0否则10000111+00011000例:x、y、z均为双精度数,分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现wx+y+24-z,并用W,W+2单元存放wMOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2;x+yADDAX,24ADCDX,0;x+y+24SUBAX,ZSBBDX,Z+2;x+y+24-zMOVW,AXMOVW+2,DX;结果存入W,W+2单元(3)乘法指令无符号数乘法指令:带符号数乘法指令:MULSRCIMULSRC执行操作:字节操作数(AX)(AL)*(SRC)字操作数(DX,AX)(AX)*(SRC)注意:*AL(AX)为隐含的乘数寄存器。*AX(DX,AX)为隐含的乘积寄存器。*SRC不能为立即数。*除CF和OF外,对条件标志位无定义。乘法指令对CF/OF的影响:00乘积的高一半为零11否则00乘积的高一半是低一半的符号扩展11否则MUL指令:CF,OF=IMUL指令:CF,OF=1010010101011011例:(AX)=16A5H,(BX)=0611H(1)IMULBL;(AX)(AL)*(BL);A5*115B*11=060BF9F5;(AX)=0F9F5HCF=OF=1(2)MULBX;(DX,AX)(AX)*(BX);16A5*0611=00895EF5;(DX)=0089H(AX)=5EF5HCF=OF=1(4)除法指令无符号数除法指令:DIV带符号数除法指令:IDIV执行操作:SRCSRC字节操作(AL)(AX)/(SRC)的商(AH)(AX)/(SRC)的余数字操作(AX)(DX,AX)/(SRC)的商(DX)(DX,AX)/(SRC)的余数注意:*AX(DX,AX)为隐含的被除数寄存器。*AL(AX)为隐含的商寄存器。*AH(DX)为隐含的余数寄存器。*SRC不能为立即数。*对所有条件标志位均无定义。例:x,y,z,v均为16位带符号数,计算(v-(x*y+z–540))/xMOVAX,XIMULY;x*y→(DX,AX)MOVCX,AXMOVBX,DXMOVAX,ZCWD;Z→(DX,AX)ADDCX,AXADCBX,DX;x*y+z→(BX,CX)SUBCX,540SBBBX,0;x*y+z-540MOVAX,VCWD;V→(DX,AX)SUBAX,CXSBBDX,BX;v-(x*y+z-540)IDIVX;(v-(x*y+z-540))/x→(AX)余数→(DX)(5)十进制调整指令BCD码:用二进制编码的十进制数,又称二--十进制数压缩的BCD码:用4位二进制数表示1位十进制数例:(59)10=(01011001)BCD非压缩的BCD码:用8位二进制数表示1位十进制数例:(59)10=(0000010100001001)BCD数字的ASCII码是一种非压缩的BCD码DIGITASCIIBCD012…930H31H32H…39H001100000011000100110010…00111001例:写出(3590)10的压缩BCD码和非压缩BCD码,并分别把它们存入数据区PAKED和UNPAK压缩BCD:(3590)10=(0011010110010000)BCD非压缩BCD:(3590)10=(00000011000001010000100100000000)BCDPAKED90HUNPAK00H35H09H05H03H十进制调整指令问题的提出:19压缩BCD:00011001+08+000010002700100001+110(00100111)BCDAF=1(1)压缩的BCD码调整指令●DAA加法的十进制调整指令●DAS减法的十进制调整指令(2)非压缩的BCD码调整指令●AAA加法的ASCII码调整指令●AAS减法的ASCII码调整指令●AAM乘法的ASCII码调整指令●AAD除法的ASCII码调整指令3逻辑指令:

逻辑运算指令AND、OR、NOT、XOR、TEST

移位指令SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR(1)逻辑运算指令逻辑非指令:NOTOPR执行操作:(OPR)(OPR)*不影响标志位*OPR不能为立即数逻辑与指令:ANDDST,SRC执行操作:(DST)(DST)(SRC)逻辑或指令:ORDST,SRC执行操作:(DST)(DST)(SRC)CFOFSFZFPFAF00***无定义异或指令:XORDST,SRC执行操作:(DST)(DST)(SRC)根据运算结果设置测试指令:TESTOPR1,OPR2执行操作:(OPR1)(OPR2)(2)移位指令逻辑左移SHLOPR,CNTCF0逻辑右移SHROPR,CNT0CF算术左移SALOPR,CNT(同逻辑左移)算术右移SAROPR,CNTCF循环左移ROLOPR,CNTCF循环右移ROROPR,CNTCF带进位循环左移RCLOPR,CNTCF带进位循环右移RCROPR,CNTCF注意:*OPR可用除立即数以外的任何寻址方式*CNT=1,SHLOPR,1CNT>1,MOVCL,CNTSHLOPR,CL;以SHL为例*条件标志位:CF=移入的数值1CNT=1时,最高有效位的值发生变化0CNT=1时,最高有效位的值不变OF=移位指令:SF、ZF、PF根据移位结果设置,AF无定义循环移位指令:不影响SF、ZF、PF、AF例:(AX)=0012H,(BX)=0034H,把它们装配成(AX)=1234HMOVCL,8ROLAX,CLADDAX,BX例:(BX)=84F0H(BX)为无符号数,求(BX)/2SHRBX,1;(BX)=4278H(BX)为带符号数,求(BX)×2SALBX,1;(BX)=09E0H,OF=1(BX)为带符号数,求(BX)/4MOVCL,2SARBX,CL;(BX)=0E13CH例:(BX)=84F0H,把(BX)中的16位数每4位压入堆栈MOVCH,4;循环次数MOVCL,4;移位次数NEXT:ROLBX,CLMOVAX,BXANDAX,0FHPUSHAXDECCHJNZNEXT0000

(SP)000F00040008与REP配合工作的MOVS/STOS/LODSREP执行操作:(1)如(CX)=0则退出REP,否则转(2)(2)(CX)(CX)-1(3)执行MOVS/STOS/LODS(4)重复(1)~(3)MOVS串传送指令:MOVSMOVSBMOVSWDST,SRC(字节)(字)例:MOVSES:BYTEPTR[DI],DS:[SI]执行操作:(1)((DI))←((SI))(2)字节操作:(SI)←(SI)±1,(DI)←(DI)±1字操作:(SI)←(SI)±2,(DI)←(DI)±2方向标志DF=0时用+,DF=1时用-。REPMOVS:将数据段中的整串数据传送到附加段中。源串(数据段)→目的串(附加段)执行REPMOVS之前,应先做好:(1)源串首地址(末地址)→SI(2)目的串首地址(末地址)→DI(3)串长度→CX(4)建立方向标志(CLD使DF=0,STD使DF=1)数据段附加段(SI)(DI)DF=0DF=1(SI)(DI)datasegmentmess1endsdb‘personal_computer’dataextrasegmentmess2endsdb17dup(?)extracodesegmentmovmovmovmovlealeamovcldrep…endsax,datads,axax,extraes,axsi,mess1di,mess2cx,17leasi,mess1+16leadi,mess2+16movcx,17stdrepmovsbmovsbcodedatasegmentmess1dbmess2db‘personal_computer’17dup(?)dataendscodesegmentmovmovmovax,datads,axes,axlealeamovcldrep…endssi,mess1di,mess2cx,17movsbcodeSTOS存入串指令:STOSSTOSBSTOSWDST(字节)(字)执行操作:字节操作:((DI))←(AL),(DI)←(DI)±1字操作:((DI))←(AX),(DI)←(DI)±2例:把附加段中的10个字节缓冲区置为20Hleadi,mess2moval,20Hmovcx,10cldrepstosbleadi,mess2movax,2020Hmovcx,5cldrepstoswLODS从串取指令:LODSLODSBLODSWSRC(字节)(字)执行操作:字节操作:(AL)←((SI)),(SI)←(SI)±1字操作:(AX)←((SI)),(SI)←(SI)±2注意:*LODS指令一般不与REP联用*源串一般在数据段中(允许使用段跨越前缀来修改),目的串必须在附加段中*不影响条件标志位与REPE/REPZ(REPNE/REPNZ)配合工作的CMPS和SCASREPE/REPZREPNE/REPNZ执行操作:(1)如(CX)=0或ZF=0(ZF=1)则退出串操作,否则转(2)(2)(CX)←(CX)-1(3)执行CMPS/SCAS(4)重复(1)~(3)CMPS串比较指令:CMPSCMPSBCMPSWSRC,DST(字节)(字)执行操作:(1)((SI))-((DI))根据比较结果置条件标志位:相等ZF=1不等ZF=0(2)字节操作:(SI)←(SI)±1,(DI)←(DI)±1字操作:(SI)←(SI)±2,(DI)←(DI)±2SCAS串扫描指令:SCASDSTSCASB(字节)SCASW(字)执行操作:字节操作:(AL)-((DI)),(DI)←(DI)±1字操作:(AX)-((DI)),(DI)←(DI)±2例:从一个字符串中查找一个指定的字符messdb‘COMPUTER’leamovmovcldrepnescasbdi,messal,‘T’cx,8(di)COMPUTER(di)(CX)=2(di):相匹配字符的下一个地址(cx):剩下还未比较的字符个数例:比较两个字符串,找出它们不相匹配的位置leasi,mess1leadi,mess2movcx,8cldrepecmpsb例:反向传送leasi,mess1+7leadi,mess2+7movcx,8STdrepmovsb5控制转移指令:

无条件转移指令JMP

条件转移指令JZ/JNZ、JE/JNE、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL/JNL、JBE/JNBE、JLE/JNLE、JCXZ

循环指令LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE

子程序调用和返回指令CALL、RET

中断与中断返回指令INT、INTO、IRET无条件转移指令:段内直接短转移:JMPSHORTOPR执行操作:(IP)←(IP)+8位位移量段内直接近转移:JMPNEARPTROPR执行操作:(IP)←(IP)+16位位移量段内间接转移:JMPWORDPTROPR执行操作:(IP)←(EA)段间直接远转移:JMPFARPTROPR执行操作:(IP)←OPR的段内偏移地址(CS)←OPR所在段的段地址段间间接转移:JMPDWORDPTROPR执行操作:(IP)←(EA)(CS)←(EA+2)条件转移指令:注意:只能使用段内直接寻址的8位位移量(1)根据单个条件标志的设置情况转移格式测试条件JZ(JE)OPRZF=1JNZ(JNE)OPRZF=0JSOPRSF=1JNSOPRSF=0JOOPROF=1JNOOPROF=0JPOPRPF=1JNPOPRPF=0JCOPRCF=1JNCOPRCF=0(2)比较两个无符号数,并根据比较结果转移*格式测试条件<≥≤>JB(JNAE,JC)OPRCF=1JNB(JAE,JNC)OPRCF=0JBE(JNA)OPRCF∨ZF=1JNBE(JA)OPRCF∨ZF=0*适用于地址或双精度数低位字的比较例:如果X>50,转到TOO_HIGH;否则做X-Y,如果溢出转到OVERFLOW,否则计算|X-Y|,并把结果存入RESULT中MOVAX,XCMPAX,50JGSUBAX,YTOO_HIGHJOJNSNEGAXOVERFLOWNONNEGNONNEG:MOVRESULT,AXTOO_HIGH:……OVERFLOW:……例:、是双精度数,分别存于DX,AX及BX,CX中,>时转L1,否则转L2CMPDX,BXJGL1JLL2CMPAX,CXJAL1L2:……L1:……循环指令:注意:*CX中存放循环次数*只能使用段内直接寻址的8位位移量LOOPLOOPZ/LOOPELOOPNZ/LOOPNE执行步骤:(1)(2)(CX)←(CX)-1检查是否满足测试条件,如满足则(IP)←(IP)+8位位移量,实行循环;不满足则IP不变,退出循环。循环指令:LOOPOPR测试条件:(CX)0为零或相等时循环指令:LOOPZ(LOOPE)OPR测试条件:ZF=1且(CX)0不为零或不相等时循环指令:LOOPNZ(LOOPNE)OPR测试条件:ZF=0且(CX)0LOOPAGAINDECCXJNZAGAIN例:求首地址为ARRAY的M个字之和,结果存入TOTALMOVCX,MMOVAX,0MOVSI,AXAGAIN:ADDAX,ARRAY[SI]

温馨提示

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

评论

0/150

提交评论