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)

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

    原文作者:JintuZheng
    原文地址: https://blog.csdn.net/rizero/article/details/104902726
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞