如何从sp访问数据

时间:2015-01-28 17:23:06

标签: assembly x86

我是装配新手。我想做一个子程序,我需要遵循惯例。调用者将值放入寄存器然后推送到堆栈。在子程序中,你需要从堆栈中提取但我有一些问题。这是我的代码:

.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组装。有人有解决方案吗?

1 个答案:

答案 0 :(得分:1)

286程序集中不存在mov bx, [sp+offset]

您可以使用

mov bp,sp
mov bx,[bp+offset]