我希望能够使用正常的 ASM 功能将一些值推送到堆栈。
例如
push ax
push bx
push cx
push dx
Run Code Online (Sandbox Code Playgroud)
我想使用堆栈框架以任何顺序访问这些。
假设我想按照 C、B、A、D 的顺序弹出这些,而不仅仅是必须这样做......
pop dx
pop cx
pop bx
pop ax
Run Code Online (Sandbox Code Playgroud)
使用 SP/BP 执行此操作的最佳/最有效方法是什么,以便我可以在需要时抓取东西,而不必在每次使用初始 4 AX 到 DX 值时不断推送和弹出?
在真正的8086的情况下,不能使用SP作为基址寄存器,只能使用BP,因此需要将SP复制到BP,然后使用BP+/-偏移量作为基于堆栈的变量的地址,例如
push bp
mov bp,sp
push ax ;[bp-2]
push bx ;[bp-4]
push cx ;[bp-6]
push dx ;[bp-8]
...
mov ax,[bp-4] ;ax = pushed value from bx
...
mov sp,bp ;restore sp
pop bp ;restore bp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1085 次 |
| 最近记录: |