assembly - 在汇编中读取和打印字符的宏
问题描述
我正在学习汇编中的宏,但我被困在某个地方。我试图在宏文件中只读取和打印一个字符,如下所示。(我想学习如何使用函数 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
它失败了,我不知道为什么。任何想法都会有所帮助。
解决方案
INT 21H / AH = 01H
将读取的字符放入AL
寄存器,但INT 21H / AH = 02H
希望将字符写入DL
寄存器。
MOV DL, AL
所以在两个电话之间尝试一个。
请注意,就目前而言,您的EMPTYCHAR
缓冲区根本没有做任何事情;这些调用不使用内存缓冲区,实际上您的宏甚至不使用它们的INPUT2
参数。我不确定你打算做什么;如果您想将角色放入记忆中,则必须自己将其存储在那里。
推荐阅读
- python-3.x - 时间序列分解:ValueError: You must specify a period or x must be a pandas object with a DatetimeIndex with a freq not set to None
- javascript - 反应中的对象克隆
- python - PyOpenCl 无效的内核参数
- java - 返回的文件不为空,但在下次调用时为空
- node.js - 我需要为路由过程编写单元测试吗?
- c - 检查是否定义了多行宏
- mysql - 我在哪里可以找到存储过程的输出?
- javascript - 如何在苗条的商店中引用反应式 $ 变量?
- reactjs - 在语义-ui-react 中获取表单值
- sql - Oracle sql查询以在日期之间拆分数据