MASM汇编入门:寄存器数据的使用

寄存器组

数据(X)寄存器组

寄存器名称全称作用大小
AXAccumulator算术运算
BXBase基址寄存器
CXCount用于循环计数器
DXData在双字长运算时把DX和AX组合一起存放一个双字长的数

段(S)寄存器组

寄存器名称全称作用大小
CSCode代码区的段地址
DSData程序数据区的段地址
SSStack堆栈数据区的段地址
ESExtra辅助的数据区的段地址

段寄存器存放的是段地址

指针(P)和索引(I)寄存器

寄存器名称全称作用大小
SPStack Pointer存放堆栈指针(栈顶)
BPBase Pointer存放基址指针
SISource Index源索引用于自增变址
DIDestination Index目标索引用于自减变址

在串处理指令当中,我们一般使用SI和DS搭配使用,DI和ES搭配使用

特殊的控制寄存器

寄存器名称全称作用大小
IPInstruction Pointer存放指令指针
PSWProgram status words程序状态字(flag)
PSW状态字的条件码:

OF【Overflow Flag】溢出
SF【Sign Flag】正负
ZF【Zero Flag】零
CF【Carry Flag】最终进位
AF【Auxiliary Flag】中途进位
PF【Parity Flag】奇偶
DF【Direction Flag】高低方向
IF【Interrupt】允许中断

数据寻址

约定:
寄存器名字代表了该寄存器的地址【重要!!容易误解!!!】
(寄存器名字) 表示寄存器里面的数据内容
[Rname],把Rname里面的内容当成偏移地址

1. 立即数寻址
mov al,5
mov ax,3064h

实现
(al)=05H
(ax)=3064h

用途
一般来说 “立即数寻址” 用于给寄存器初始化赋值

2. 寄存器寻址
mov ax,bx

实现
(ax)=(bx)

3. 寄存器间接寻址
mov ax,[bx]

实现
(ax)=(ds+(bx))

4. 直接寻址
mov ax,[2000h]

当操作数在数据段里面,把ds当作基址
实现
ds=30000h
(ax)=(ds+2000h)

用途
直接寻址用于处理单个变量,我们把他从数据段里面拿出来放到其他寄存器里面

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值