我可以在TASM中将al推入堆栈吗?

sea*_*ean 2 assembly dos tasm x86-16

我是集会的初学者,任何帮助将不胜感激.这是我的代码:

.MODEL SMALL

.DATA  
Textstring db "I'm a string$"
.CODE
START:

mov dx, Textstring
push dx
getche:
    mov ah, 06h
    int 21h
    push al



 END START
Run Code Online (Sandbox Code Playgroud)

我一直得到操作数类型在第8行上不匹配的错误,操作或指令的参数在第13行上有非法大小.
我猜测问题是我试图推进AL堆栈.无论如何我可以把内容推AL到堆栈上吗?我正在尝试创建一个代码,我提示用户输入一个字符并将该字符返回给调用它的程序.

Ida*_*tan 5

你不能AL进入堆栈,因为堆栈的每个元素都是一个单词,而且AL大小是一个字节.

你可以做的,是重置AH的值并推AX入堆栈,因此AL将包含你想要的值,并且AH只是0,不会影响数据AL.

  • 或者只是按下`ax`或`eax`,稍后当你弹出它时忽略高字节中的垃圾. (2认同)