您的位置:首页 > 其它

汇编语言之寄存器使用(bx,si,di,bp)

2012-07-22 14:11 246 查看
转载:/article/6115549.html

这里对这几个寄存器总结一下。

通用寄存器的主要用途

寄存器的分类寄存器主 要 用 途









数据

 

寄存器
AX乘、除运算,字的输入输出,中间结果的缓存
AL字节的乘、除运算,字节的输入输出,十进制算术运算
AH字节的乘、除运算,存放中断的功能号
BX存储器指针
CX串操作、循环控制的计数器
CL移位操作的计数器
DX字的乘、除运算,间接的输入输出
变址

寄存器
SI存储器指针、串指令中的源操作数指针
DI存储器指针、串指令中的目的操作数指针
变址

寄存器
BP存储器指针、存取堆栈的指针
SP堆栈的栈顶指针
指令指针
IP/EIP
标志位寄存器Flag/EFlag
32位

CPU的

段寄存器
16位CPU的

段寄存器
ES附加段寄存器
CS代码段寄存器
SS堆栈段寄存器
DS数据段寄存器
新增加的

段寄存器
FS附加段寄存器
GS附加段寄存器
这张表用来参照。

(1)在8086CPU中只有这四个寄存器可以在[...]中进行内存单元的寻址。

比如,下面的指令都是正确的:

mov
ax,[bx]

mov
ax,[bx+si]

mov
ax,[bx+di]

mov
ax,[bp]

mov
ax,[bp+si]

mov
ax,[bp+di]

而下面都是错误的:

mov
ax,[cx]

mov
ax,[ax]

mov
ax,[dx]

mov
ax,[ds]

(2).在[...]中,这四个寄存器可以单独出现,或者只能以四种组合出现:bx和si、bx和di、bp和si、bp和di。

比如下面都是正确的

mov
ax,[bx]

mov
ax,[si]

mov
ax,[di]

mov
ax,[bp]

mov
ax,[bx+si]

mov
ax,[bx+di]

mov
ax,[bp+si]

mpv
ax,[bp+di]

mov
ax,[bx+si+idata]

mov
ax,[bx+si+idata]

mov
ax,[bp+si+idata]

mov
ax,[bp+di+idata]

下面就是错误的

mov
ax,[bx+bp]

mov
ax,[si+di]

(3)只要在[....]中使用寄存器bp,而指令汇总没有显示给出段地址,段地址就默认在ss中。
比如下面的指令。

mov
ax,[bp] 含义:(ax)=((ss)*16+(bp))

mov
ax,[bp+idata] 含义:(ax)=((ss)*16+(bp)+idata)

mov
ax,[bp+si] 含义:(ax)=((ss)*16+(bp)+(si))

mov
ax,[bp+si+idata] 含义:(ax)=((ss)*16+(bp)+(si)+idata)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: