下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 8086指令系统

8086指令系统.ppt

8086指令系统

allen
2012-02-27 0人阅读 举报 0 0 暂无简介

简介:本文档为《8086指令系统ppt》,可适用于高等教育领域

封面封面第二章指令系统目录第二章指令系统目录第二章的指令系统概述数据传送类指令算术运算类指令位操作类指令控制转移类指令串操作类指令处理机控制类指令要点与习题分析概述概述概述①的指令系统按功能分类可以分成六组本章分类逐条讲解。②在汇编语言中指令的一般格式为标号:指令助记符目的操作数,源操作数:注释其中括弧括起的部分不是必需的为可选项。“标号”在第三章详细介绍。③后面讲解指令时除前一章介绍的符号外本书用AXBX…形式表示寄存器的内容。④学习一条指令应掌握的内容:指令的功能操作数的寻址方式指令对标志的影响避免非法指令…返回第二章节目录(传送)节目录(传送)数据传送指令通用数据传送指令MOVXCHGXLAT堆栈操作指令PUSHPOP标志传送指令LAHFSAHFPUSHFPOPF地址传送指令LEALDSLES输入输出指令INOUT返回第二章目录:~目录:~通用数据传送指令MOV类指令MOVregmem,immMOVsegregmem,regMOVsegreg,memMOVregmem,seg交换指令XCHG换码指令XLAT节目录mov类例mov类例MOV类指令格式:MOVregmemimmMOVAXHMOVCLHMOVBYTEPTRBX,HMOVWORDPTRBX,HMOVBYTEPTRSI,HMOVBYTIPTRBPDI,HMOVBYTEPTRBXDIH,HMOVBYTEPTRH,H………………………………………………………①MOVH,AL②MOVDH③MOVBXH√④MOVBXH⑤MOVDSHMOVBYTEPTRBXHMOVWORDPTRBXHmov类例mov类例格式:MOVsegregmemregMOVDS,AXMOVES,AXMOVSS,AXMOVAXBXMOVSPAXMOVDHCLMOVALBHMOVH,AXMOVH,BLMOVBXSIH,DXMOVHBPDI,CL……………………………………………………………MOVDS,ALMOVCS,AXMOVDL,AXMOVBX,CLMOVSI,CHMOVBL,DICS不能做目的操作数mov类例mov类例格式:MOVsegreg,memMOVDS,BXMOVES,BPSIHMOVAX,HMOVAL,H……………………………………………………………注意:MOVmem,mem形式的指令是非法指令也就是说如果一条指令有两个操作数不允许两个操作数都是存储器数如下列指令为非法指令:MOVBXHMOVHBXSI该项规定不仅适用于“MOV”类指令也适用于其他各类指令(串操作除外)。记住:CS不能作目的操作数mov类例(END)mov类例(END)格式:MOVregmem,segMOVAX,DSMOVBX,ESMOVAX,CSMOVSI,DSMOVBXSI,CS……………………………………………………………“MOV”类指令小结:①立即数只能作源操作数,且要与目的操作数匹配。②两个操作数类型要匹配。③如汇编程序无法确定操作类型要加类型说明符。④CS一般不能作目的操作数(用转移指令改变)。⑤如果指令有两个操作数不允许两个都是存储器数。⑥上述四类格式以外的指令必定是非法指令。⑦所有“MOV”类指令均不影响标志。CS可以作源操作数返回MOVBXHxchgXLATxchgXLAT交换指令XCHG指令格式:XCHGregmem,regmem将操作数格式“mem,mem”排除在外!例:XCHGAX,BXXCHGDH,CLXCHGCX,HXCHGBXSI,AL交换指令不影响标志。换码指令XLAT指令格式:XLATAL←DS×BXAL该指令的操作数是隐含的(AL)且寻址方式可理解为寄存器相对寻址偏移量在AL中。该指令又称“查表指令”,通常用于编写查表程序。换码指令不影响标志。查表示意图(end)查表示意图(end)查表步骤(求某数的平方)①在内存中建立数据表格②将表格的首地址送入BX中③假定要求“”的平方,将送入寄存器AL中④执行指令XLAT⑤执行:AL←BX(DS)执行结束:AL=。AL中的内容被“换码”!表格首地址查表示意图节目录××××H堆栈操作指令()堆栈操作指令()堆栈操作指令能够实现“后进先出(先进后出)的存储器组织(或存储器块)称为堆栈。引入堆栈:以三层子程序嵌套为例逐级进入子程序时A、B、C三点都有断点和现场需要保护顺序为A→B→C当子程序sub执行结束逐级返回时mainsubsubsub最后被保护的C点数据应最先恢复最先保护的A点数据应最后恢复。为此通常在内存中开辟一段区域结合软硬件技术使其具有保护数据和后进先出的功能。此为堆栈。堆栈操作指令()堆栈操作指令()堆栈管理:使用段寄存器SS和指针寄存器SP管理堆栈SS决定了堆栈区的首地址SP的初始堆栈操作指令()堆栈操作指令()PUSHrmseg“rmseg”作为源操作数,堆栈中的存储单元作为目的操作数,指令操作如下:①SP←SPSS:SP←src高位②SP←SPSS:SP←src低位例:PUSHBX(设DS:BX字单元数据为AAH)堆栈操作指令()堆栈操作指令()POPrmseg“rmseg”应看作目的操作数堆栈中的单元看作源操作数指令操作如下:①dest低位←SS:SP,SP←SP②dest高位←SS:SP,SP←SP例:POPBX设接在例后执行。堆栈操作指令()(END)堆栈操作指令()(END)使用堆栈指令:①堆栈操作是字操作指令不要写出“PUSHAL”等。②在“POP”指令中“POPCS”为非法指令。③堆栈中的数据弹出后,数据并没有在堆栈中消失,除非压入新数据画图时注意。④堆栈操作指令不影响标志。④使用堆栈指令保护和恢复现场时要注意指令的排列顺序如:PUSHAXPUSHBXPUSHDSPOPDSPOPBXPOPAX节目录标志传送指令()标志传送指令()标志传送指令标志寄存器传送①LAHFAH←标志寄存器低位即SFZFAFPFCF送AH相应位不影响标志。②SAHF标志寄存器低位←AH该条指令影响前五个标志。③PUSHF标志寄存器入栈不影响标志。④POPF标志寄存器←SS:SP,SP←SP该指令影响标志。标志传送指令()(end)标志传送指令()(end)标志位操作()CF标志★CLCCF←★STCCF←★CMCCF←CF()DF标志(串操作指令使用)★CLDDF←★STDDF←()IF标志(控制可屏蔽中断能否被响应)★CLIIF←★STIIF←注释:对其他标志没有提供直接修改的指令但是如果必要可以用前述的四条标志传送指令结合逻辑运算指令进行修改。节目录地址传送指令()地址传送指令()地址传送指令有效地址传送指令LEALEArmemr←mem所指单元的偏移地址例:设BX=HSI=CHLEABPh执行后BP=HLEABPSI执行后BP=CHLEABXBXSI执行后BX=CHLEABXBXSIFH执行后BX=EH备注:①指令中“r”常用的寄存器是BX、BP、SI、DI。一般不使用其他寄存器。②指令中源操作数常用的是变量名而不是上面例子中例举的形式如:LEABXWORDVAR。所以本条指令常被描述为“取变量的偏移地址”属常用指令。地址传送指令()地址传送指令()指针传送指令LDSLDSrmemr←mem,DS←mem操作:①按mem规定的寻址方式计算某单元物理地址。②按计算出的物理地址做双字操作即前一个字(偏移指针)送r,高位字(段指针)送DS。例:设DS=HBX=HSI=H=HH=HLDSSIBXSI执行后DS=HSI=H示意图:LDSSIBXSI地址传送指令()(end)地址传送指令()(end)指针传送指令LESLESrmemr←mem,ES←mem操作解释:基本与“LDS”指令相同不同的是把段寄存器DS换成ES。★其他问题:①“LEA”指令的作用为取偏移地址要注意与“MOV”指令区别:设SI=HDS:H(DS:SI)=AAH则“LEABXSI”执行后BX=“MOVBXSI”执行后BX=②“LDS”的r常用SI“LES”中r常用DI。③地址传送指令不影响标志。HAAH节目录输入输出指令()输入输出指令()输入输出指令输入指令INALi字节输入AL←端口iINAXi字输入AL←端口i,AH←端口iINALDX字节输入AL←端口DXINAXDX字输入AL←端口DX,AH←DX注释:①“i”从形式上来说是立即数实际上是端口地址因而指令的寻址方式为直接寻址。②“MOV”指令中直接寻址要加中括号输入输出指令不加。(MOVAL,HINAL,H)③第三、四两条指令为寄存器间接寻址但对DX不加中括号。(moval,bxinal,dx)输入输出指令()输入输出指令()输出指令OUTiAL字节输出端口i←ALOUTiAX字输出端口i←AL端口i←AHOUTDXAL字节输出端口DX←ALOUTDXAX字输出端口DX←ALDX←AH注释:①输入输出指令从寻址方式来说分成两种:直接寻址和寄存器DX间接寻址。如果要访问的端口地址在~之间既可以用直接寻址也可以用DX间接寻址如果要访问的端口地址≥则只能用DX间接寻址。②另外输入输出指令中可用的数据寄存器只能是AL和AX其他寄存器不可使用。③不影响标志。输入输出指令()(end)输入输出指令()(end)例题:(对错混合)INALH(×)MOVAXAAHINAXHMOVDXFCHINALHOUTDXAXINAHFFH(×)MOVAHMOVDXHOUTHAH(×)OUTDXALINALHMOVDXHMOVBLALINBXDX(×)INALH(OUTDX,BX)(×)MOVBH,AL……节目录节目录(算术)节目录(算术)算术运算指令加法指令ADDADCINC减法指令SUBSBBDECNEGCMP乘法指令MULIMUL除法指令DIVIDIV符号扩展指令CBWCWD十进制调整指令(BCD)DAADASAAAAASAAMAAD返回第二章加法指令()加法指令()加法指令ADDADDregmemimmdest←destsrcADDregmemregmemdest←destsrc排除操作数:mem,memADC指令格式同ADDdest←destsrcCFINCINCregmemregmem←regmem加法指令()加法指令()注释:①加法指令对标志的影响:ADD和ADC指令对所有的个状态标志都有影响INC指令不影响CF影响其他五个标志。学习加减法指令要会设置标志、使用标志。②加减法运算要注意OF和CF的意义不同用法不同。例题:(对错混排)ADDAL,HADDBYTEPTRBX,ADDAL,HADDWORDPTRBX,ADDAX,HADDBX,HADDAX,ADDAL,BLADDBX,ADDCH,DL加法指令()加法指令()ADDBH,CXADDAX,DXADDSI,BPADDBX,BXSIADDDX,BXDIADDAX,BXBPADDAX,SIDIADDBPDIH,ALADDBPSI,CXADDBX,SIH前面所有指令都可以换成ADC。对于多字节加法最低字节(字)可以用ADD剩下的应使用ADC。如(dxax)(sidi)ADDAX,DI低位相加ADCDX,SI高位相加CFINCHINCALINCCXINCBXSIINCBYTEPTRBXSIINCWOREPTRBXDI加法指令()加法指令()加法指令标志设置设AL=HADDALHAL=DBH,OF=,SF=,ZF=AF=,PF=,CF=OF=:只对有符号数运算有意义。看作有符号数是应等于,大于因而溢出。CF=:只对无符号数运算有意义。=<无进位。加法指令end加法指令end加法指令OF设置方法:①(正负)或(负正)永远不会溢出OF=。②正正,结果为正(符号位为)OF=。结果为负(符号位为),OF=。③负负,结果为负(符号位为)OF=。结果为正(符号位为),OF=。计算FCHFBH看作有符号数运算:()()=()∴OF=看作无符号数运算:=∴CF=返回减法指令()减法指令()减法指令SUBSUBregmemimmdest←destsrcSUBregmemregmemdest←destsrc排除操作数:mem,memSBB指令格式同SUBdest←dest–src–CFDECDECregmemregmem←regmem减法指令()减法指令()减法指令用法:①SUB、SBB、DEC三条指令的指令格式以及基本用法与ADD、ADC、INC相同。②SUB和SBB影响所有六个状态标志:AF为半借位CF为借位其余个标志的含义同加法指令。③DEC不影响CF标志影响其他五个标志。减法指令()减法指令()OF和CF标志设置:①OF仅仅对有符号数运算有意义。(正数sub正数)或(负数sub负数)OF=正数sub负数结果的符号位为OF=结果的符号位为OF=负数sub正数结果的符号位为OF=结果的符号位为OF=②CF设置:(借位标志仅仅对无符号数运算有意义对有符号数运算无意义。)够减CF=不够减CF=。减法指令()减法指令()NEG求补指令NEGregmemregmem←regmem①“求补运算”一般表达为“取反加一”与“零减”等同。例如将位二进制数表示为XXXXXXXXBXXXXXXXXB=(B)XXXXXXXXB即  减法指令()  减法指令()②NEG相当于减法指令标志设置与减法指令相同(只有对零求补CF=0其他情况CF=1)(设字长为位对求补时OF=其它OF=)例:设AL=B执行NEGALAL=B=B例:设DS:BX=()补=执行NEGBYTEPTRBX后  则DS:BX==(的绝对值)结论:对一个负数的补码求补得到该负数的绝对值。(其实反过来也一样对4执行NEG指令将得到的补码。)减法指令()(end)减法指令()(end)CMPCMPregmemimmdest–srcCMPregmemregmem排除操作数:mem,memdest–src与减法指令不同的是不保留运算结果即不改变目的操作数只根据运算结果设置标志。该指令常用来比较两数大小。执行CMPdest,src无符号数比较:CF=dest≥srcCF=dest<src有符号数比较,情况较为复杂在条件转移指令介绍。返回乘法指令()乘法指令()乘法指令无符号数乘法指令MULrmAX←AL×rm,字节乘MULrmDXAX←AX×rm,字乘注释:①指令指定的是乘数被乘数是隐含的。如乘数类型为字节则被乘数为AL位乘积用AX如乘数类型为字则被乘数为AX位乘积用DXAX。②影响CF、OF标志:如果乘积的高一半为零则CF=OF=否则CF=OF=。对其他标志无定义。乘法指令()乘法指令()例题:无符号数BH与H相乘MOVALBHDMOVBLHDMULBLAX=DCF=OF=(乘积高位不为零)用两条指令是否可以?MOVALBH设置被乘数MULH指定立即数作乘数其他指令:MULBXDXAX←AX×BXMULBXSI当乘数为存储器操作数……MULBYTRPTRBXSIMULWORDPTRBXSI乘法指令()(end)乘法指令()(end)有符号数乘法指令IMULrmAX←AL×rmIMULrmDX,AX←AX×rm①指令用法与“MUL”指令基本相同只是专用于有符号数的相乘。②CF=OF=乘积的高一半为低一半的符号扩展(不是有效乘积)CF=OF=则乘积的高一半为乘积的一部分。对其他状态标志无定义。③相同的二进制数看作无符号数相乘与看作有符号数相乘结果是不同的。如BH与H相乘使用“MUL”指令结果为BFH(无符号数)如使用IMUL指令则结果为FAFH将其看作补码真值为。返回除法指令()除法指令()除法指令无符号数除法指令DIVDIVrmAL←AX÷rm的商AH←余数DIVrmAX←DXAX÷rm的商,DX←余数①指令指定的是除数被除数是隐含的除数为字节则称为“字节除”被除数使用AX除数为字称为“字除”被除数使用DXAX。②操作数的格式与乘法指令相同。③指令对状态标志无定义。除法指令()(end)除法指令()(end)有符号数除法指令IDIVIDIVrmAL←AX÷rm的商AH←余数IDIVrmAX←DXAX÷rm的商,DX←余数①专用于有符号数除法其他与DIV相同。②除法指令的溢出问题:DIV下列情况可能产生溢出除数为零字节除时被除数的高位≥除数(商>位)字除时被除数的高位≥除数(商>位)有符号数情况类似。当产生除法溢出CPU自动产生“号”中断运行相应中断服务程序。程序设计时应避免产生除法溢出。返回符号扩展指令(end)符号扩展指令(end)符号扩展指令字节扩展为字CBWCBW将AL的符号位扩展到AH字扩展为双字CWDCWD将AX的符号位扩展到DX注释:①注意符号扩展涉及的对象是AL和AH以及AX和DX,与其他寄存器无关。②用来为有符号数除法准备被除数(位被除数和位被除数)。③为无符号数除法准备被除数…………符号扩展说明符号扩展说明符号扩展说明例如AL÷BL由于CPU使用AX作被除数故必须将AL中的被除数扩展到AX中。如果做有符号数除法应使用符号扩展指令CBW如果做无符号数除法应使AH为(xorah,ah或andah,movah,等)。做AX÷BX应使用同样的方法处理被除数即将符号扩展到DX或使DX中为。除法指令举例:divbldivbyteptrbxidivcxidivwordptrbpsidivh(×)divbx(×)返回十进制调整指令()十进制调整指令()十进制(BCD码运算)调整指令①压缩的BCD码:一个字节存放两位BCD码如“”(H)如看成压缩的BCD码即为十进制数。一个字节的压缩BCD码可表示的数:~。②非压缩的BCD码:一个字节存放一位BCD码该字节低位为合法的BCD码,高位未定义。如“”看成压缩的BCD码是看成非压缩的BCD码是。另外:※高位通常用表示。()※~的ASCII码也可看成非压缩的BCD码。…………十进制调整指令()十进制调整指令()补充:调整原理做BCD码运算应该等于即应为现得到一个非法的BCD码试一试加加后得到了正确结果。AF=非法BCD十进制调整指令()十进制调整指令()BCD码加法运算当结果大于时或AF或CF等于时需要做加调整。原因:用二进制数运算规律进行十进制数运算。一位十进制数逢十进一四位二进制数逢十六进一加是为了)强迫进位)补充进位多带走的。BCD码减法运算:够减时不需要调整AF或CF为时(有借位)需要做减调整抵消多借的。十进制调整指令()十进制调整指令()压缩BCD码调整指令①加法调整DAADAA判断AL中的结果(低位和高位)是否需要调整若需要做加调整若不需要做下一条指令。注释:如果做BCD码加法运算ADD、ADC指令后应紧跟DAA指令以保证结果正确。调整对象只能是AL寄存器(BCD码运算只能使用以AL寄存器为目的操作数的位数运算指令)。对OF标志无定义设置其他标志。十进制调整指令()十进制调整指令()②减法调整DASDAS:判断AL中的结果(低位和高位)是否需要调整若需要做减调整若不需要做下一条指令。注释:如果做BCD码减法运算SUB、SBB指令后应紧跟DAA指令以保证结果正确。调整对象只能是AL寄存器(BCD码运算只能使用以AL寄存器为目的操作数的位数运算指令)。对OF标志无定义设置其他标志。(关于BCD码符号问题省略)十进制调整指令()十进制调整指令()非压缩BCD码调整指令⑴加法调整AAAAAA操作如下:①(AL低位≤)且AF=不需要调整将AL高位清零置CF=AF=结束指令。②如(AH≤AL低位)或AF=则AL(调整)AH(将进位记到高位)将AL高位清置CF=AF=结束指令。设AH=AL=BL=执行下列指令ADDALBLAH=HAL=HAF=CF=AAAAH=HAL=HAF=CF=调十进制调整指令()十进制调整指令()⑵减法调整AASAAS操作如下:①(AL低位≤)且AF=不需要调整将AL高位清零置CF=AF=结束指令。②如果AF=则AL–AH-AL高位清置AF=CF=。设AX=HBL=H执行下列指令SUBALBLAH=AL=FFHAF=CF=AASAH=AL=AF=CF=∴H-H→-=。调只有AF=AL在A~F间十进制调整指令()十进制调整指令()⑶乘法调整AAMAAMAX←将AX中的乘积调整为非压BCD码注释:①只能使用字节乘(乘积在AX)②相乘的两个非压缩BCD码高位必须为零③相乘后先得到二进制数乘积(最大x=)在寄存器AL中(低位)④调整:将AL中的数÷AH商放入AH余数保存在AL中在AX寄存器即得到结果的非压缩BCD码。⑤本指令根据AL内容设置SFZFPF其余无定义。例题:设AL=HBL=H执行指令:MULBLAH=AL=FH()AAMAH=HAL=HAX=H:的非压缩BCD码十进制调整指令()(end)十进制调整指令()(end)⑷除法调整AADAADAX←将AX中的非压BCD码变成二进制数即AL←AH×+ALAH←注释:其他调整指令先运算后调整除法调整是先调整后运算。MOVAXH的非压缩BCD码被除数MOVBLH除数非压缩BCD码AADAH=AL=×+==HAX=H:变成二进制数的被除数DIVBLAL=(商)AH=(余数)返回节目录(位)节目录(位)位操作指令逻辑运算指令ANDORXORNOTTEST移位指令SHLSHRSALSAR循环移位指令ROLRORRCLRCR返回第二章逻辑运算指令()逻辑运算指令()逻辑运算指令与运算指令ANDANDregmem,immANDregmem,regmem排除操作数“mem,mem”注释:①操作数格式同加减法指令②设置CF=OF=影响SF、ZF、PF对AF无定义。或运算指令OR注释:指令格式、标志设置同AND指令。异或运算指令XOR注释:指令格式、标志设置同AND指令。逻辑运算指令()逻辑运算指令()测试指令TEST注释:指令格式及运算均与AND指令相同但是不保留运算结果即不影响目的操作数只根据运算结果设置标志。非运算指令NOTNOTregmem注释:不影响任何标志。下面举例说明逻辑运算指令的应用。逻辑运算指令()逻辑运算指令()①屏蔽若干位。(常用指令)ANDALH屏蔽AL的D~D保留DANDALFH屏蔽AL高位保留低位②使若干位置(常用指令)ORBLFH使BL高位置低位不变③清除CF、OF或设置标志ANDAL,AL(ANDAL,FFHORBL,BL……)类似指令没有改变目的操作数但使CF=OF=也可能纯粹以设置其他标志(ZF)为目的。逻辑运算指令()逻辑运算指令()④求反NOTALNOTWORDPTRBXDI⑤对指定位求反XORALFHAL高位不变低位求反XORCLHCL偶数位求反奇数位不变⑥清除寄存器及CF(常用指令)XORAX,AXXORBX,BXXORBYTEPTRBXBYTEPTRBX×逻辑运算指令(END)逻辑运算指令(END)⑦不改变操作数测试操作数或操作数的指定位TESTALFFH由ZF标志判断AL是否为零也可以用CMP指令。TESTAL由ZF标志判断AL的D是否为零ZF=则ALD=ZF=则ALD=ANDAL也可完成上述功能但是改变了目的操作数返回移位指令()移位指令()移位指令共四条指令分成逻辑左移、算术左移、逻辑右移和算术右移其中两条左移指令对应同一条机器指令所以从机器指令的角度来说移位指令只有三条。符号位不变移位指令()移位指令()左移指令(逻辑左移、算术左移:一条指令)SHLregmemCL操作数左移位或CL规定的位数最低位补最高位进CF。SALregmemCL同SHL右移指令(逻辑右移SHR算术右移SAR)SHRregmemCL操作数右移位或CL规定的位数最高位补最低位进CF。SARregmemCL操作数右移位或CL规定的位数最高位不变最低位进CF。移位指令()移位指令()注释①标志设置AF:对AF无定义CF:按移入的值或为或为根据移位后的结果设置SF、ZF、PFOF:当移动一位时移位后如果符号位发生变化则OF=,符号位不发生变化则OF=移位次数大于一时OF不定。②操作数左移一位相当于乘(对有符号数同理只要OF=结果就对)。移位指令()(end)移位指令()(end)③操作数逻辑右移(SHR)一位相当于无符号数除以操作数算术右移(SAR)一位相当于有符号数除以。指令举例SHLAXSARBYTEPTRBPSISHRBHSARAL×返回MOVCLSARALCL循环移位指令()循环移位指令()循环移位指令小循环(不带进位)左移(ROL)和右移(ROR)大循环(带进位)左移(RCL)和右移(RCR)循环移位指令()(end)循环移位指令()(end)小循环移位指令ROL、RORROLregmemCL左移RORregmemCL右移大循环移位指令RCL、RCRRCLregmemCL左移RCRregmemCL右移例将DX,AX中的位数左移一位。SHLAXRCLDX移位指令和循环移位指令结合可实现位数乘除。返回节目录节目录控制转移类指令无条件转移指令条件转移指令循环控制指令子程序调用及返回指令中断控制指令系统功能调用返回第章无条件转移指令()无条件转移指令()无条件转移指令(JMP)段内转移·直接寻址JMPSHORTLABELIP←IP位偏移量JMPNEARPTRLABELIP←IP位偏移量注释:①指令中“LABEL”称为“标号”是某一条指令的名字其物理意义为指令在内存中的偏移地址。②段内:不改变段寄存器(在当前代码段内)只改变指令指针寄存器直接寻址:汇编指令中直接给出了转移目标的地址但从指令的操作来说应属相对寻址。短转移的转移范围短转移的转移范围③短转移的转移范围:相对于JMP的下一条指令转移范围为-~+相对于JMP指令转移范围为~近转移:相对于JMP的下一条指令转移范围为-~+(-~)。“JMPSHORTLABEL”示意图:转移目的地址的计算:IP偏移量→IP即IP(~)→IP当计算上式时IP为(XXXX)即XXXX(~)=目的即XXXX(~)=目的也就是说相对于地址XXXX来说转移范围为~。无条件转移指令()无条件转移指令()段内转移·间接寻址JMPrmIP←r或IP←m指令举例JMPSHORTLPRO短转移,目标指令为LPROJMPNEARPTRLPROJMPSIIP←SI,通过寄存器间接给出指令偏移地址。JMPBXIP←BXJMPWORDPTRBX通过存储器间接给出指令的偏移地址,而存储器寻址方式为寄存器BX间接寻址。JMPWORDPTRBPDIH无条件转移指令()无条件转移指令()段间转移·直接寻址JMP(FARPTR)LABELIP←LABEL的偏移地址CS←LABEL的段地址注释:“LABEL”是位于另一个代码段的某一条指令的名字另外指令中的“FARPTR”可以省略因为汇编程序可以自动识别:“LABEL”与相应的“JMP”指令是否在同一代码段内从而产生段内或段间转移指令的机器代码。┆CODESEGMENTCODESEGMENT┆┆PRO:MOV…JMPFARPTRPRO┆┆CODEENDSCODEENDS无条件转移指令()(end)无条件转移指令()(end)段间转移·间接寻址JMPFARPTRmem(JMPDWORDPTRmem)IP←memCS←mem注释:通过存储器的一个双字单元提供转移目标的段地址和偏移地址低位字为偏移地址高位字为段地址。JMPDWORDPTRBXDIDS=HBX=HSI=H计算物理地址:HH=H返回条件转移指令()条件转移指令()条件转移指令概述①条件转移指令的通用格式为:Jcclabel如条件满足则发生转移:IP←IP位偏移量如条件不满足则不转移顺序执行下条指令。②所有的条件转移指令均为两字节机器指令第字节为位偏移量因而转移范围与“JMPSHORT”指令相同。③指令中的条

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/117

8086指令系统

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利