首页 > 解决方案 > 在汇编中读取和打印字符的宏

问题描述

我正在学习汇编中的宏,但我被困在某个地方。我试图在宏文件中只读取和打印一个字符,如下所示。(我想学习如何使用函数 01h 和 02h,因为现在我知道如何使用函数 09h 和 0Ah):

READCHAR MACRO INPUT2
MOV AH, 01H
INT 21H
ENDM

PRINTCHAR MACRO INPUT2
MOV AH, 02H
INT 21H
ENDM

我在 .ASM 文件中按如下方式调用它们:

.data
EMPTYCHAR DB 1, ?, 1 DUP (‘$’)
.code
READCHAR EMPTYCHAR 
PRINTCHAR EMPTYCHAR

它失败了,我不知道为什么。任何想法都会有所帮助。

标签: assemblymacrosdosx86-16tasm

解决方案


INT 21H / AH = 01H将读取的字符放入AL寄存器,但INT 21H / AH = 02H希望将字符写入DL寄存器

MOV DL, AL所以在两个电话之间尝试一个。

请注意,就目前而言,您的EMPTYCHAR缓冲区根本没有做任何事情;这些调用不使用内存缓冲区,实际上您的宏甚至不使用它们的INPUT2参数。我不确定你打算做什么;如果您想将角色放入记忆中,则必须自己将其存储在那里。


推荐阅读