tin*_*yaa 3 x86 assembly masm addressing-mode
我有一些关于装配的问题,我正在学习,我很困惑.
bx和bp和ss和sp?书中说这bx是基址寄存器,bp是基指针.这是否意味着他们是一回事?mov ax, bx,mov ax, [bx],mov ax, bp和mov ax, [bp]?disp索引寻址模式意味着什么?比如mov al, disp[bx]?还是mov al, disp[si]?这本书没有解释的含义disp.寄存器在CPU中不是RAM吗?
请原谅我的英文,这不是我的第一个语言.
哦,我的,这些16位寄存器在1984年几乎已经过时了.抱歉,你有一本旧书.然而现代处理器仍然使用这些东西,所以你的问题是有道理的.我实际上在当天写了一些16位汇编,奇怪的是我记得它.让人惊讶.
BX,BP,SS和SP只是四个独立的寄存器.BX,BP和SP是通用寄存器(其他16位GPR是AX,CX,DX,SI和DI),SS是段寄存器,你不经常使用它(它是隐式使用的你参考BP和SP).对这些寄存器中的每个寄存器的完整答案将比通常的SO答案占用更多的空间.但要回答您的具体问题,BX和BP是两个不同的寄存器,而不是相同的寄存器.BP通常用于索引堆栈帧,BX通常用于索引结构或数组.
MOV AX, BX将BX的内容移动到AX,同时MOV AX, [BX]将值为DS:BX的内存位置的内容移动到AX.也就是说,如果BX包含值500,则第一指令将500移动到AX,而第二指令将地址500的内容(技术上超过段DS开始的500字节)移动到AX中.(注意,像这样的MOV指令在不同的汇编程序中解释的方式有一些细微的差别,例如MASM和NASM.)
DISP只是"位移"的缩写,是一个数字,它添加到寄存器中的值,用于计算堆栈帧中的变量地址或结构中的元素的地址.在那样的指令中,MOV AX, [BX+25]25就是位移.
是的,寄存器是CPU的一部分.
| 归档时间: |
|
| 查看次数: |
2150 次 |
| 最近记录: |