String 如何将键盘输入加载到8086中的数组中?
我正在用汇编语言--String 如何将键盘输入加载到8086中的数组中?,string,assembly,io,x86-16,String,Assembly,Io,X86 16,我正在用汇编语言--8086环境练习字符串的输入和输出。我遇到了以下代码: org 100h .DATA SNAME DB 21,0,22 DUP('$') .CODE MOV AH, 0AH LEA DX, SNAME INT 21H MOV AH, 9H LEA DX, SNAME +2; INT 21H ret 我知道该程序接受来自键盘的字符串输入,并将其显示在屏幕上然而,我在这里遗漏了两件事: 我们如何判断用户输入将存储在变量SNAME中?指令LEA是
8086
环境练习字符串的输入和输出。我遇到了以下代码:
org 100h
.DATA
SNAME DB 21,0,22 DUP('$')
.CODE
MOV AH, 0AH
LEA DX, SNAME
INT 21H
MOV AH, 9H
LEA DX, SNAME +2;
INT 21H
ret
我知道该程序接受来自键盘的字符串输入,并将其显示在屏幕上然而,我在这里遗漏了两件事:
SNAME
中?指令LEA
是否让程序知道这一点?我问这个问题是因为在高级语言中,我们可以说SNAME=someUserInput代码>-这里我没有看到movsmane,someUserInput代码>
2
LEA DX,SNAME+2
DOS输入功能将从偏移量2开始的输入字符存储在指定的缓冲区内。在偏移量1处,您将找到一个包含输入字符数的字节。DOS在这些输入字符后面添加回车符(ASCII 13)。这意味着,以这种方式打印将不可避免地将光标留在行的开头。如果查看缓冲输入是如何完成的,您将看到DX包含int 21h/ah=0ah的缓冲区地址。SNAME+2是在打印int 21h/ah=09h_的缓冲区时出现的。输入命令返回的实际字符串前面有两个需要跳过的字节。有关dos输入命令的信息,请参阅:好的,这是直截了当的-现在我明白了,谢谢。