我是装配新手。我想做一个子程序,我需要遵循惯例。调用者将值放入寄存器然后推送到堆栈。在子程序中,你需要从堆栈中提取但我有一些问题。这是我的代码:
.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组装。有人有解决方案吗?
答案 0 :(得分:1)
286程序集中不存在mov bx, [sp+offset]
。
您可以使用
mov bp,sp
mov bx,[bp+offset]