如何从 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]