如何从 sp 访问数据
How access data from sp
我是装配新手。我想做一个子程序,我需要遵循约定。调用者将值放入寄存器,然后您将其压入堆栈。在子例程中,您需要从堆栈中提取,但我遇到了一些问题。这是我的代码:
.286
.model huge
.stack 100h
mov bl, 'd' ; just put d to test
push bx
call putch
call terminate
; ---------- void putch(char c) ----------
putch:
; Print character into screen
; bl <- character to be printed
mov bx, [sp+4] ; THIS IS THE ERROR.
mov dl, bl ; store the argument into dl
mov ah, 2h ; print the character
int 21h
ret 4 ; return
; ---------- end of function ----------
terminate:
mov ah, 4ch ; terminate the program
int 21h
END start
我的教授说你使用 mov bx, [sp+offset]
从堆栈中获取值,但它无法编译。我使用 286 汇编。有人有解决方案吗?
这在 286 程序集上不存在 mov bx, [sp+offset]
。
您可以使用
mov bp,sp
mov bx,[bp+offset]
我是装配新手。我想做一个子程序,我需要遵循约定。调用者将值放入寄存器,然后您将其压入堆栈。在子例程中,您需要从堆栈中提取,但我遇到了一些问题。这是我的代码:
.286
.model huge
.stack 100h
mov bl, 'd' ; just put d to test
push bx
call putch
call terminate
; ---------- void putch(char c) ----------
putch:
; Print character into screen
; bl <- character to be printed
mov bx, [sp+4] ; THIS IS THE ERROR.
mov dl, bl ; store the argument into dl
mov ah, 2h ; print the character
int 21h
ret 4 ; return
; ---------- end of function ----------
terminate:
mov ah, 4ch ; terminate the program
int 21h
END start
我的教授说你使用 mov bx, [sp+offset]
从堆栈中获取值,但它无法编译。我使用 286 汇编。有人有解决方案吗?
这在 286 程序集上不存在 mov bx, [sp+offset]
。
您可以使用
mov bp,sp
mov bx,[bp+offset]