汇编语言:基于x86处理器考前笔记 | 第四章 数据传送、寻址和算术运算

4.1 数据传送指令

操作数类型【记忆】
  • 操作数分类:汇编指令中的操作数分为三种类型:
    • 立即数(imm):直接给定的数值,如MOV AX, 1234h中的 <font style="color:#DF2A3F;">1234h</font>
    • 寄存器操作数(reg):CPU寄存器中的数据,如MOV AX, BX,这里<font style="color:#DF2A3F;">AX</font>BX都是寄存器
    • 内存操作数(mem):存储器中某个位置的数据,它可以是内存地址、指针,或者加上偏移量来访问内存中指定位置的数据,如MOV AX, [var1],这 <font style="color:#DF2A3F;">[var1]</font>是 var1 所指的内存地址
  • 常见寄存器示例
    • reg8:8位通用寄存器(例如:AH, AL, BH, BL 等)。
    • reg16:16位通用寄存器(例如:AX, BX, CX, DX 等)。
    • reg32:32位通用寄存器(例如:EAX, EBX, ECX, EDX 等)。

画板

MOV 指令
  • 指令格式:MOV指令的格式为MOV 目的操作数, 源操作数,如:
    • .data var1 BYTE 10h
    • .code MOV al, var1
      机器指令:A0 00010400A0为操作码)。
  • 常见MOV指令格式
    • MOV reg, reg:将一个寄存器的值传送到另一个寄存器。
    • MOV mem, reg:将寄存器的值存储到内存中。
    • MOV reg, mem:将内存中的值加载到寄存器。
    • MOV mem, imm:将立即数存储到内存中。
    • MOV reg, imm:将立即数加载到寄存器。
  • MOV指令的限制
    • 不能直接从内存到内存传输数据(需要使用寄存器作为中介)。
      • MOV [var1], [var2] (错误:需要使用寄存器作为中间变量)
    • 操作数的大小必须匹配(如8位与8位、32位与32位等)。
      • MOV AX, 12345678h (错误:AX 是 16 位寄存器,而立即数是 32 位)
    • 内存操作数不能与指令指针寄存器(IP、EIP、RIP)一起使用。
      • MOV EIP, 1000h (错误:EIP 不能作为目标操作数)
  • 不同数据大小操作
    • 8位、16位、32位数据的赋值:可以通过不同大小的数据赋值给32位寄存器,例如:
.data 
oneByte BYTE 78h
oneWord WORD 1234h    
oneDword DWORD 12345678h          
.code 
MOV al, oneByte
MOV ax, oneWord
MOV eax, oneDword
  • 符号扩展MOVZX``MOVSX
    • 无符号数:使用MOVZX指令,将较小的数据类型扩展到较大的数据类型,并用零填充高位(如:MOVZX eax, word1)。
    • 有符号数:使用MOVSX指令,将较小的数据类型扩展到较大的数据类型,并用符号位填充高位(如:MOVSX ax, byteVal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值