【发布时间】:2012-09-16 14:29:48
【问题描述】:
我已经有了从键盘获取输入并将其打印在屏幕上的程序,但我无法理解几行代码,
这里是代码,
MOV DS, AX
MOV ES, AX ;Why Move AX content to ES ???
MOV DX, OFFSET PNAME ; PRINT NAME:
MOV AH, 09H
INT 21H
MOV BYTE PTR SNAME, 21
MOV DX, OFFSET SNAME
MOV AH, 0AH
INT 21H
MOV SI, 0002
LEA DX, SNAME[SI] ; PRINT NAME ENTERED
MOV AH, 09H
INT 21H
为什么我们首先将大小为 21 的字节移动到 SNAME ???? 键盘输入中断服务的结果如何自动存储在 SNAME 中而不是 AL 中???
【问题讨论】:
-
如果您调用 1H(从输入设备读取一个字符),您会期望 AL 中的输入。在这里,您正在将一个字符串打印到标准输出设备 (9H),然后您正在从标准输入设备 (0AH) 读取一个字符串,然后您正在打印接收到的输入。
-
为什么我们首先将 21 字节的大小移动到 SNAME 中??