汇编语言常用指令大全解释.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《汇编语言常用指令大全解释.pdf》由会员分享,可在线阅读,更多相关《汇编语言常用指令大全解释.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、常用汇编指令:MOV指令为双操作数指令,两个操作数中必须有一个是寄存器.MOV DST,SRC/Byte/Word 执行操作:dst=src 1.目的数可以是通用寄存器,存储单元和段寄存器(但不允许用CS 段寄存器).2.立即数不能直接送段寄存器3.不允许在两个存储单元直接传送数据4.不允许在两个段寄存器间直接传送信息PUSH入栈指令及POP出栈指令:堆栈操作是以后进先出 的方式进行数据操作.PUSH SRC/Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器.入栈时高位字节先入栈,低位字节后入栈.POP DST/Word 出栈操作数除不允许用立即数和CS 段
2、寄存器外,可以为通用寄存器,段寄存器和存储器.执行 POP SS指令后,堆栈区在存储区的位置要改变.执行 POP SP 指令后,栈顶的位置要改变.XCHG(eXCHanG)交换指令:将两操作数值交换.XCHG OPR1,OPR2/Byte/Word 执行操作:Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中2.不能与段寄存器交换数据3.存储器与存储器之间不能交换数据.XLAT(TRANSLATE)换码指令:把一种代码转换为另一种代码.XLAT(OPR 可选)/Byte 执行操作:AL=(BX+AL)指令执行时只使用预先已存入BX 中的表格首地址,执行后,
3、AL 中内容则是所要转换的代码.LEA(Load Effective Address)有效地址传送寄存器指令LEA REG,SRC/指令把源操作数SRC 的有效地址送到指定的寄存器中.执行操作:REG=EAsrc 注:SRC 只能是各种寻址方式的存储器操作数,REG 只能是 16 位寄存器MOV BX,OFFSET OPER_ONE 等价于LEA BX,OPER_ONE MOV SP,BX/将 BX 间接寻址的相继的二个存储单元的内容送入SP中LEA SP,BX/将 BX 的内容作为存储器有效地址送入SP中LDS(Load DS with pointer)指针送寄存器和DS 指令LDS REG
4、,SRC/常指定 SI 寄存器。执行操作:REG=(SRC),DS=(SRC+2)/将 SRC 指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS 段寄存器中。LES(Load ES with pointer)指针送寄存器和ES指令LES REG,SRC/常指定 DI 寄存器执行操作:REG=(SRC),ES=(SRC+2)/与 LDS 大致相同,不同之处是将ES代替 DS 而已.LAHF(Load AH with Flags)标志位送AH 指令LAHF/将 PSW 寄存器中的低8 位的状态标志(条件码)送入 AH 的相应位,SF 送 D7位,ZF 送 D6 位.执行操
5、作:AH=PSW 的低位字节。SAHF(Store AH into Flags)AH送标志寄存器指令SAHF/将 AH 寄存器的相应位送到PSW 寄存器的低8位的相应位,AH 的 D7 位送 SF,D6 位送 ZF.执行操作:PSW 的低位字节=AH。PUSHF(PUSH the Flags)标志进栈指令PUSHF/将标志寄存器的值压入堆栈顶部,同时栈指针SP值减 2 执行操作:SP=SP-1,(SP)=PSW 的高8 位,SP=SP-1,(SP)=PSW 的低8 位/来自 技术 BBS 论坛/POPF(POP the Flags)标志出栈指令POPF/与 PUSHF 相反,从堆栈的顶部弹出两
6、个字节送到PSW寄存器中,同时堆栈指针值加 2 执行操作:PSW 低 8 位=(SP),SP=SP+1,PSW 高 8 位=(SP),SP=SP+1 输入输出指令(IN,OUT):只限于使用累加器AX 或 AL 与外部设备的端口传送信息.IN(INput)输入指令:信息从I/O 通过累加器传送到CPU IN AL,PORT/直接的字节输入,PORT 是外设端口编号(即端口地址),只能取00H 0FFH 共 256 个端口地址.IN AX,PORT/直接的字输入,AX 存储连续两个端口地址PORT+1,PORT IN AL,DX/间接的字节输入,端口地址范围可通过DX 设置为 0000H 0FF
7、FFH 共65536 个端口地址IN AX,DX/间接的字输入OUT(OUTput)输出指令:信息从CPU 通过累加器传送到I/O OUT PORT,AL/直接的字节输出,PORT 规定与 IN 指令相同.OUT PORT,AX OUT DX,AL/间接的字节输出OUT DX,AX MOV AL,05H OUT 27H,AL/将字节 05H 传送到地址27H 的端口/内容来自技术世界 专业技术/ADD(ADD)加法指令ADD DST,SRC/Byte/Word 执行操作:dst=dst+src 1.两个存储器操作数不能通过ADD 指令直接相加,即 DST 和 SRC 必须有一个是通用寄存器操作
8、数.2.段寄存器不能作为SRC 和 DST.3.影响标志位Auxiliary Crray Flag,Carry Flag,Overflow Flag,Parity Flag,Sign Flag 和Zero Flag,如下所示:CF 根据最高有效位是否有进(借)位设置的:有进(借)位时 CF=1,无进(借)位时 CF=0.OF 根据操作数的符号及其变化来设置的:若两个操作数的符号相同,而结果的符号与之相反时 OF=1,否则为 0.ZF 根据结果来设置:不等于0 时 ZF=0,等于 0 时 ZF=1 SF 根据结果的最高位来设置:最高位为0,则 SF=0.AF 根据相加时D3 是否向D4 进(借)
9、位来设置:有进(借)位时AF=1,无进(借)位时AF=0 PF 根据结果的1 的个数时否为奇数来设置:1 的个数为奇数时PF=0,为偶数时PF=1 ADC(ADd with Carry)带进位加法指令ADC DST,SRC/Byte/Word 执行操作:dst=dst+src+CF/与 ADD 不同之处是还要加上进位标志位的值.INC(INCrement)加 1 指令INC OPR/Byte/Word 执行操作:OPR=OPR+1 1.OPR 可以是寄存器和存储器操作数,但不能是立即数和段寄存器2.影响标志位OF,SF,ZF,PF 和 AF,不影响 CF.SUB(SUBtract)不带借位的减
10、法指令SUB DST,SRC/Byte/Word 执行操作:dst=dst-src 1.DST 和 SRC 寻址方式及规定与ADD 相同.2.影响全部标志位.(判断标志位参见ADD)SBB(SuBtract with Borrow)带借位减法指令SBB DST,SRC/Byte/Word 执行操作:dst=dst-src-CF DEC(DECrement)减 1 指令DEC OPR/Byte/Word 执行操作:OPR=OPR-1/除 CF 标志位,其余标志位都受影响.NEG(NEGate)求补指令NEG OPR 执行操作:opr=0-opr/将操作数按位求反后末位加1./内容来自技术世界 技
11、术爱好者/CMP(CoMPare)比较指令CMP OPR1,OPR2 执行操作:OPR1-OPR2/与 SUB 指令一样执行运算,但不保存结果.比较情况无符号数有符号数A=B ZF=1 ZF=1 AB CF=0&ZF=0 SFOF=0&ZF=0 A=B CF=0|ZF=1 SFOF=0|ZF=1 A AX=AL*src/字节运算时目的操作数用AL,乘积放在AX 中Word=DX=AX*src/字运算时目的操作数用AX,DX存放乘积的高位字,AX 放乘积的低位字1.目的数必须是累加器AX 或 AL,指令中不需写出2.源操作数SRC 可以是通用寄存器和各种寻址方式的存储器操作数,而绝对不允许是立即
12、数或段寄存器.IMUL (sIgned MULtiple)有符号数乘法指令IMUL SRC/与 MUL 指令相同,但必须是带符号数DIV(unsigned DIVide)无符号数除法指令DIV SRC/Byte/Word 其中:SRC 的规定同乘法指令MUL 执行操作:Byte=AX/src/字节运算时目的操作数在AX 中,结果的商在AL 中,余数中 AH 中Word=DX,AX/src/字运算时目的操作数在DX 高位字和AX 低位字中,结果的商在AX 中,余数在 DX 中存储器操作数必须指明数据类型:BYTE PTR src 或 WORD PTR src IDIV(sIgned DIVied
13、)有符号数除法指令IDIV SRC/Byte/Word 与 DIV 指令相同,但必须是带符号数CBW (Convert Byte to Word)字节转换为字指令CBW 执行操作:AL 中的符号位(D7)扩展到8 位 AH 中,若 AL 中的 D7=0,则 AH=00H,若AL 中的 D7=1,则 AH=FFH.CWD (Convert Word to Double word)字转换为双字指令CWD 执行操作:AX 中的符号位(D15)扩展到 16 位 DX 中,若 AX 中的 D15=0,则 DX=0000H,若 AX 中的 D15=1,则 DX=FFFFH 十进制调整指令当计算机 进行计算
14、时,必须先把十进制数转换为二进制数,再进行二进制数运算,最后将结果又转换为十进制数输出.在计算机中,可用 4 位二进制数表示一位十进制数,这种代码称为BCD(Binary Coded Decimal).BCD 码又称 8421 码,在 PC 机中,BCD 码可用压缩的BCD 码和非压缩的BCD 码两种格式表示.压缩的 BCD 码用 4位二进制数表示一个十制数,整个十进数形式为一个顺序的以4 位为一组的数串./内容来自 码以 8 位为一组表示一个十进制数,8 位中的低4 位表示 8421 的 BCD码,而高 4 位则没有意义.压缩的 BCD 码调整指令DAA (Decimal Adjust fo
15、r Addition)加法的十进制调整指令DAA 执行操作:执行之前必须先执行ADD 或 ADC 指令,加法指令必须把两个压缩的BCD码相加,并把结果存话在AL 寄存器中.DAS(Decimal Adjust for Subtraction)减法的十进制调整指令DAS 执行操作:执行之前必须先执行SUB 或 SBB 指令,减法指令必须把两个压缩的BCD 码相减,并氢结果存放在AL 寄存器中.非压缩的BCD 码调整指令AAA (ASCII Adjust for Addition)加法的 ASCII 调整指令AAA 执行操作:执行之前必须先执行ADD 或 ADC 指令,加法指令必须把两个非压缩的B
16、CD码相加,并把结果存话在AL 寄存器中.AAS(ASCII Adjust for Subtraction)减法的 ASCII 调整指令AAS 执行操作:执行之前必须先执行SUB 或 SBB 指令,减法指令必须把两个非压缩的BCD码相减,并氢结果存放在AL 寄存器中./来自 技术 BBS 论坛/MOVS (MOVe String)串传送指令MOVB/字节串传送DF=0,SI=SI+1,DI=DI+1;DF=1,SI=SI-1,DI=DI-1 MOVW/字串传送DF=0,SI=SI+2,DI=DI+2;DF=1,SI=SI-2,DI=DI-2 执行操作:DI=SI,将位于 DS 段的由 SI 所
17、指出的存储单元的字节或字传送到位于ES 段的由 DI 所指出的存储单元,再修改 SI 和 DI,从而指向下一个元素.在执行该指令之前,必须预置SI 和 DI 的初值,用 STD 或 CLD 设置 DF 值.MOVS DST,SRC/同上,不常用,DST 和 SRC 只是用来用类型检查,并不允许使用其它寻址方式来确定操作数.1.目的串必须在附加段中,即必须是ES:DI 2.源串允许使用段跨越前缀来修饰,但偏移地址必须是SI.STOS(STOre into String)存入串指令STOS DST STOSB/存放字节串(DI)=AL STOSW/存放字串(DI)=AX 执行品作:把AL 或 AX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 常用 指令 大全 解释
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内