2022年2022年汇编指令手册 .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)
《2022年2022年汇编指令手册 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编指令手册 .pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据传送指令通用传送指令MOV MOVSX MOVZX LEA 指针传送指令LDS LES LFS LOS LSS 标志寄存器传送指令LAHF SAFH 交换指令 XCHG 字节交换指令 BSWAP 查表指令 XLAT 堆栈操作指令进栈指令 PUSH 出栈指令 POP 16位标志寄存器栈操作进栈指令 PUSHF 出栈指令 POPF 32位标志寄存器栈操作进栈指令 PUSHFD 出栈指令 POPFD 16位通用寄存器栈操作进栈指令 PUSHA 出栈指令 POPA 32位通用寄存器栈操作进栈指令 PUSHAD 出栈指令 POPAD 名师资料总结 - - -精品资料欢迎下载 - - - - - -
2、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - 通用传送指令指令名格式功能描述影响标志位注意事项MOV MOV DST, SRC (DST) (SRC) 将一个字节或一个字操作数 从源地址传送至目的地址。MOV 指令不改变源操作数,也不影响标志位1)源和目的操作数不能同时为存储器操作数例:MOV DI ,SI ;是非法指令2)立即数不能作为目的操作数例:MOV 1234H ,AX ;是非法指令3)不能将立即数直接传送到段寄存器例:MOV DS ,1000H ;是非法指令4)源和目的操作数的数
3、据位应等长,即同为字节、字或双字。必须用 PTR运算符说明目的操作数的属性 (可以是 BYTE 、 WORD、 DWORD) 。MOV BYTE PTR BX ,12H 5 ) 以 CS为目标的一切转送都是非法的。MOVSX MOVSX DST,SRC Move with Sign Extend (386+)将SRC 的符号位 向高位扩展,使其与目标操作数字长相同, 再送到DST ,而SRC 保持不变。MOV 指令不改变源操作数,也不影响标志位(1)DST 为REG16 或REG32,SRC为小于等于 DST 的立即数或存储器操作数或寄存器操作数。(2)对于带符号数的补码, 扩展前后的真值相等
4、,只有补码的位数不同。例: MOV DL,-16 ; DL=0F0H MOVSX BX,DL ; BX=0FFF0H, DL不变MOVZX MOVZX DST,SRCMove with Zero Extend (386+)将SRC 的高位用 0补充,使其与目标操作数字长相同, 再送到DST ,而SRC 保持不变。MOV 指令不改变源操作数,也不影响标志位(1)DST 为REG16 或REG32,SRC为小于等于 DST 的立即数或存储器操作数或寄存器操作数。(2)对于无符号数的真值不变。例: MOVZX EAX,CX LEA 有效地址送寄存器指令LEA REG,SRC ;MOV DES, OF
5、FSET SRC LEA :Load Effective Address REG (EA OF SRC )把源操作数的有效地址送到指定的寄存器。SRC 为内存操作数。REG 为16位或32位寄存器(除段寄存器 ) LEA 等效于MOV OFFSET 所以不影响标志位名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 指令名格式功能描述影响标志位注意事项指针传送指令LDS LES LSS LFS LOS 操作码助记符REG,SRCL
6、DS 等英文含义:Load to DataSegReg 其后两位字母表段寄存器, 它们是隐含的目标寄存器 . 将源操作数 高16位送隐含的目标段寄存器 ; 不影响标志位若源操作数是 32位内存操作数,则将低 16位送目标通用寄存器 . 若源操作数是 48位内存操作数,则将低 32位送目标通用寄存器 . 标志寄存器传送指令LAHF操作数为隐含的 AH 和标志寄存器。LAHF:Load to AH with Flag AH (PSW 的低位字节)不影响标志位PSW 的低位字节包括SF 符号标志ZF零标志AF 半进位标志PF 奇偶标志CF 进位标志SAHF 操作数为隐含的 AH 和标志寄存器。SAH
7、F:Sent AH to Flag (PSW 低位字节)(AH) 这不是废话吗!交换指令XCHG XCHG OPR1,OPR2 XCHG :exchange 交换(OPR1 ) (OPR2) 不影响标志位。OPR1 与OPR2 须是等长操作数, OPR1,OPR2 必须有一个是寄存器。 (段寄存器不能作为XCHG 的操作数)查表指令XLAT XLAT 表头变量名AL(DS:BX+AL )AL (DS:EBX+AL)把一种码转换为另一种码不影响标志位使用方法:1、建立表格,将表格的首地址预先存入 BX 或EBX 。2、要转换的代码与表格首地址的偏移量存入 AL。3、执行换码指令,(DS:BX+A
8、L )AL 示例:第一步:在数据段按字形0F的顺序设置一张字形编码表。TAB DB 3FH ,06H ,5BH ,4FH ,NUM DB 02H ;第二步:在代码段设置如下指令:MOV DS ,数据段段基址MOV BX ,OFFSET TAB; (LEA BX, TAB) MOV AL ,NUM XLAT TAB BSWAP BSWAP REG32 Byte Swap (486+)将32位REG 的位31位24 与 位7位0交换,位23位16与位15位8交换。不影响标志位堆栈操作指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
9、 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - 指令名格式功能描述影响标志位注意事项进栈指令PUSH PUSH SRC 执行时, 首先调整堆栈指针 , 然后把源操作数压栈。执行操作 : 16位:(SP) (SP)-2 (SP)+1,(SP) (SRC) 32位:(ESP) (ESP)-4 (ESP)+3 (ESP) (SRC) 不影响标志位内存操作数若不是直接寻址, 则必须用 PTR 运算符来说明其属性。例, PUSH WORD PTR BX 堆栈操作的基本单位是字!出栈指令POP POP DST 先将栈顶弹出 2个或4个字节,送目标操
10、作数,然后调整堆栈指针。执行操作 : 16位: (SP)+1,(SP)(DST) (SP) (SP) + 2 32位: (ESP)+3(SP) (DST) (ESP) (ESP) +4 不影响标志位跟上面是一样的。 要知道他们是双子星。16位标志寄存器进栈PUSHF 出栈POPF PUSHF (Push Flag) POPF (Pop Flag) PUSHF :SP = SP 2 SS:SP Flag 的低16位POPF :Flag 的低16位SS:SP SP = SP +2 PUSHF 不改变标志位POPF :这也是废话 当然会啦!32位标志寄存器进栈PUSHFD 出栈POPFD PUSHF
11、D POPFD PUSHFD ESP = ESP 4 SS:ESP 32位EFLAGE POPFD 32位EFLAGE SS:ESP ESP = ESP +4 PUSHFD 不改变标志位POPFD : 这也是废话 当然会啦!16位通用寄存器进栈PUSA 出栈POPA 32位通用寄存器进栈PUSAD 出栈POPAD PUSHA (Push AX) POPA (Pop AX) PUSHAD POPAD PUSHA :(PUSHAD) SP = SP 16 (32)再依次将 (E)AX,CX,DX,BX,SP,BP,SI,DI 入栈。POPA : (POPA )将栈内的内容依次弹出至(E)DI,SI
12、,BP,SP,BX,DX,CX,AXSP = SP +16 (32)不改变标志位进栈与出栈通用寄存器顺序时相反的算术运算指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - 加法指令ADD ADC INC XADD 减法指令SUB SBB DEC NEG CMPXCHG 乘法指令MUL IMUL 除法运算DIV IDIV 符号扩展指令字节转换为字指令 CBW 字转换为双字指令 CWD 十进制调整指令压缩BCD 码调整指令加法调整
13、指令 DAA 减法调整指令 DAS 非压缩 BCD 码调整指令加法调整指令 AAA 减法调整指令 AAS 乘法调整指令 AAM 除之前调整指令 AAD 加法指令与减法指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 21 页 - - - - - - - - - 指令名格式功能描述影响标志位注意事项加法指令ADD ADD DST,SRC DST (DST) + (SRC) 影响的标志位:CF,OF,SF,ZF,PF,AF (1) 两个操作数不能同时为存储器操作数; (2)
14、 如果 SRC 是立即数 ,DST是存储器操作数, 则DST 必须用 PTR 说明是字节还是字型或是双字型, 否则汇编时会出错 . 带进位的加法指令ADC ADC DST,SRC DST (DST)+(SRC)+CF CF是上一条指令执行后产生的 C标志。影响的标志位:CF,OF,SF,ZF,PF,AF 同ADD 加1指令INC INC OPR (OPR)(OPR) + 1 INC指令不影响 CF 标志 ,但影响 AF,OF,PF,SF,ZF (1)INC指令的操作数不能是立即数(2)当 INC的操作数是存储器操作数时 , 必须用 PTR说明符说明其属性. 交换加法指令XADD XADD DS
15、T,SRC 首先 SRC 与DST 互换 , 然后(SRC+DST) (DST) 目的操作数和源操作数相加,并使源操作数保存目的操作数的值设置 CF PF AF SF ZF OF与ADD 的区别就是 ADD 指令会使 DST 的值被取代, SRC的值被保留,而XADD 的功能刚好相反DST 是寄存器操作数或内存操作数 , SRC 只能是与DST 等长的寄存器操作数。减法指令 SUB SUB DST,SRC DST (DST)(SRC) CF,OF,SF,ZF,PF,AF 同ADD 带借位减法指令SBB SBB DST,SRC DST (DST)(SRC)CF CF,OF,SF,ZF,PF,AF
16、 同ADD 减1指令 DEC DEC OPR (OPR)(OPR)1 不影响 CF标志,但影响AF、OF 、PF、SF 、ZF DEC 指令的操作数不能是立即数当 DEC 的操作数是存储器操作数时, 必须用 PTR 说明符说明其属性。求补指令 NEG NEG OPR OPR ?(OPR) NEG 指令影响 AF、OF、PF、SF、ZF、CF。对 CF 的影响 : 只有当(OPR) = 0 时,执行完 NEG后CF = 0,其他情况 CF=1 ;对 OF 的影响 : 当(OPR) = -128 或(OPR) = -32768时OF = 1 ,其他情况 OF = 0。NGE 求OPR 的相反数;若
17、原 OPR 为正,在执行 NEG后,变为补码表示的负数。若原 OPR 为补码表示的负数, 则执行完 NEG 后, 变为正数。比较指令 CMP CMP DST,SRC (DST) (SRC) 执行的结果不回送DST, 而是根据结果去影响的标志位:CF,OF,SF,ZF,PF,AF 。CMP 常用于转移指令之前。当SRC 为立即数时, DST为非直接寻址的内存操作数寻址时,须用PTR 指明 DST属性。比较并交换指令CMPXCHG CMPXCHG DST,SRC 将DST 与AL/AX/EAX比较 ,若相等 , 则将 SRC 送DST;若不等 , 则将 DST 送AL/AX/EAX. 根据结果去影
18、响的标志位:CF,OF,SF,ZF,PF,AF 。乘除法指令指令名格式功能描述影响标志位注意事项名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - 无符号数乘法指令MUL MUL SRC 乘数和被乘数须是等长的无符号二进制数,乘积为双倍长;被乘数默认在累加器中(AL/AX/EAX) 。执行的操作:字节操作:(AX) (AL) * (SRC) 字操作:(DX,AX) (AX) * (SRC) 双字操作:(EDX,EAX) (EAX)
19、 * (SRC) 影响 CF、OF标志位,其他无定义。(1) 源操作数是除立即数之外的寻址方式。(2) 如果乘积的高半部分为0,( 即AH = 0 、DX = 0 或EDX=0 ) 则CF=OF = 0,否则 CF = OF = 1 带符号数乘法指令IMUL 格式 1 IMUL SRC 字节操作:(AX) (AL) * (SRC) 字操作:(DX,AX) (AX) * (SRC) 双字操作:(EDX,EAX) (EAX) * (SRC) 标志位的影响: CF、OF ,其他无定义。源操作数是除了立即数之外的寻址方式。如果乘积的高一半是低一半的符号扩展则 CF=OF = 0 ,否则 CF = OF
20、 = 1 格式 2 IMUL DST, SRC (DST) (DST) * (SRC) 如果乘积的高一半是低一半的符号扩展则 CF=OF = 0 ,否则 CF = OF = 1。格式 3 IMUL DST,SRC,DATA DST DATA * (SRC) 如果乘积的高一半是低一半的符号扩展则 CF=OF = 0 ,否则 CF = OF = 1。DIV 无符号数的除法指令 DIV SRC 字节操作:16 位被除数放在AX 中 ,8位除数为源操作数。结果的8位商在 AL中, 8位的余数在 AH 中。表示为:(AL) (AX)/(SRC)的商(AH) (AX)/(SRC)的余数字操作:32 位被除
21、数在 DX,AX 中 ,16位除数为源操作数。结果的16位商在 AX 中, 16位的余数在 DX 中。表示为:(AX) (DX,AX)/(SRC) 的商(DX) (DX,AX)/(SRC) 的余数双字操作:64 位被除数在 EDX,EAX 中, 32位除数为源操作数。结果的32位商在 EAX 中,32位的余数在 EDX 中。表示为:(EAX)(EDX,EAX)/(SRC) 的商(EDX)(EDX,EAX)/(SRC) 的余数执行 DIV,运算后对标志位无确定影响,都没有意义。商超过规定的范围,去执行0型中断。(系统会报错)IDIV 有符号数的除法指令IDIV SRC 同上运算后对标志位无确定影
22、响除数、被除数和商值都是有符号补码数。若被除数与除数等长时,须先将被除数符号扩展。字节转换为字CBW CBW 将AL的符号位扩展到AH 。不影响标志位字转换为双字CWD CWD AX 的符号位扩展到DX 不影响标志位十进制调整指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - 指令名格式功能描述影响标志位注意事项压缩 BCD 码加法调整指令 DAA ; 数据段BCD1 DW 2345H BCD2 DW 5678H SUM DW
23、 ? ; 代码段MOV AL, BYTE PTR BCD1 ADD AL, BYTE PTR BCD2; 低8位相加DAA ; 调整该指令针对 AL中的两个组合十进制数之和进行修改,得到正确的组合十进制数。指令的调整方法:如果 AF标志 =1或者 AL的低四位大于 9,则AL的寄存器内容加 06H且使 AF = 1。(胖子曰: 一个字节可表示两位数, AF=1 表示个位已经满十六向十位进了一,要想 BCD 表示,需要加上 6的差值。 AL低四位大于九,表示要向十位进一,所以要加上6的差值 )如果 CF标志 =1 或者 AL的高四位大于9 ,则 AL的寄存器内容加60H且使CF = 1 。(胖子
24、曰: 虽然已经超出BCD 码两位数的表示范围,但这样做是为了保持结果的正确性)影响AF ,CF,PF ,SF ,ZF标志,对OF 未定义。注意:这条指令之前必须执行 ADD 或ADC 指令将两个压缩的 BCD 码相加,并且把结果存放在 AL寄存器中。压缩 BCD 码减法调整指令 DAS MOV AL, 56H SUB AL, 68H DAS 对于结果是负数的此例中两个 BCD码相减,56H-68H=-12H. 用DAS调整以后,CF 标志 1, AL=88H, 相对于模 100 而言, 88H 是 12H的补数。该指令针对 AL中两个组合 BCD 之差进行修改,得到正确的组合十进制数表示的差值
25、。指令的调整方法:DAS 要判断当前 AL和AF标志、 CF标志如果 AF标志 =1 或者 AL的低四位大于9,则AL的寄存器内容减06H且AF=1。如果 CF标志 =1 或者 AL的高四位大于9 ,则 AL的寄存器内容减60H且CF=1 。影响AF 、CF、PF 、SF 、ZF标志位,对OF 标志无定义。注意:这条指令之前必须执行 SUB 或SBB 指令将两个压缩的 BCD 码相减,并且把结果存放在 AL寄存器中。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年汇编指令手册 2022 汇编 指令 手册
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内