DOSBox 的使用
首先mount c d:/masm回车
c: // 进入有debug.exe 的文件夹
-debug
-r 显示寄存器的值
-rax修改ax中的值
-u显示代码段的汇编指令 从cs:IP处显示
-a 向代码段写入汇编代码
-e 立即数/寄存器:偏移值 修改从给定地址内存中的字节值
-g 数字 执行到代码段的指定位置 如果数字为空则执行到程序末尾直至结束
在汇编语言中,
BP
(Base Pointer)寄存器默认使用的是栈段寄存器SS
(Stack Segment)。
BP
的默认段寄存器:
- 当使用
BP
访问内存数据时,默认的段寄存器是SS
(栈段)。MOV AX, [BP+4] ; 从 SS 段中的 BP+4 偏移地址处读取数据
- 这里的
[BP+4]
实际上是指SS:[BP+4]
。例外情况:
- 如果需要访问其他段(如数据段
DS
),必须显式指定段寄存器。- MOV AX, DS:[BP+4] ; 明确指定数据段 DS
区别于
SP
(Stack Pointer):
- 虽然
BP
也默认使用SS
段,但它常用于指向栈帧的基址(基地址指针),可以通过偏移量访问函数参数和局部变量。- 而
SP
则直接指向当前栈顶位置,用于压栈和弹栈操作。总结:
BP
默认段寄存器是SS
,主要用于访问栈帧中的数据。- 如果要访问其他段的数据,则需要显式指定段寄存器,例如
DS:[BP]
。
在没有显式指定段寄存器的情况下,访问内存地址时会默认使用
DS
。