“21天好习惯”第一期-5

汇编指令汇总

一、数据传输指令

MOV                传送字或字节

MOVSX            先符号扩展,再传送

MOVZX            先零扩展,再传送

PUSH               把字压入堆栈

POP                 把字弹出堆栈

PUSHA             把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈

POPA                把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈

PUSHAD           把EAX,ECX,EBX,ESP,EBP,ESI,EDI依次压入堆栈

POPAD              把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈

BSWAP             交换32位寄存器里字节的顺序

XCHG                交换字或字节(至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG        比较并交换操作数。(第二个操作数必须为累加器AL/AX/EAX)

XADD                 先交换在累加(结果在第一个操作数上)

XLAT                  字节查表转换--BX指向一张256字节的表的起点,AL的表的索引值(0~FFH);返回AL为查表结果(【BX+AL】-》AL)

注释:AX,BX,CX,DX作为CPU内部的通用寄存器中的数据寄存器助记符用来存放参与运算的数据或是存储运算的结果,这四个寄存器都是16位的。

  • AX寄存器称为累加器(Accumulator),使用时主要用于存放数据,如存放算术、逻辑运算中的操作数或结果,也可临时用于存放地址
  • BX寄存器称为基址寄存器(BaseRegister),常用来存放访问存储器时的地址
  • CX寄存器称为计数寄存器(CountRegister),常用来保存计算值,如在移位指令,循环(loop)和串指令中用作隐含的计数器。
  • DX寄存器称为数据寄存器(DateRegister),常用来数据传递,在寄存器间接寻址中的I/O指令中存放I/O端口的地址。
  • SP:堆栈寄存器Stack Pointer 存放栈的偏移地址。
  • BP:基数指针寄存器BP(base pointer),是和堆栈指针SP联合使用的,作为SP校准使用的,在寻找堆栈里的数据使用到。
  • SI,DI是源,目的变址寄存器
  • EAX,EBX,ESI,EDI等等同AX,BX,SI等一样都是寄存器,但是32位。

MOV示例:

             MOV......AL,20H;将8位立即数20H传送到AL中。

              MOV......AX,1234H;将16位立即数1234H传送到AX中。

              MOV......EAX,34568020H;将32位立即数34568020H传送到EAX中。

 例:

       PUSH bp        //保存bp指针

       MOV  bp,sp      //将sp指针传给bp指针,此时bp指向的是sp地址

       。。。。。。。程序结束

      MOV sp, bp        //将原sp指针传回给sp

      POP bp              //恢复原bp的值

      ret                       //推出子函数

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值