如何将键盘输入加载到8086中的数组中?
How to load input from keyboard into an array in 8086?
我正在练习汇编语言中字符串的输入和输出 - 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;
- 这里我没有看到 MOV SMANE,someUserInput;
为什么我们要在此说明中添加 2
LEA DX,SNAME +2
?
How do we tell that the user input is to be stored in variable SNAME?
因为你的程序使用了DOS输入函数0Ah,需要你设置一个缓冲区来接收输入的字符。偏移量 0 处的字节必须指定从偏移量 2 开始可用的字节数。指定 21 意味着您将能够输入 20人物。多余的字节将用回车符 return (ASCII 13).
填充
Why are we adding 2 in this instaruction LEA DX,SNAME +2?
DOS 输入函数将输入的字符从偏移量2 开始存储在您指定的缓冲区中。在偏移量 1 处,您会找到一个字节,其中包含输入的字符数。在这些输入的字符后面,DOS 添加了一个回车 return (ASCII 13)。这意味着按照您的方式打印将不可避免地将光标留在行的开头。
我正在练习汇编语言中字符串的输入和输出 - 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;
- 这里我没有看到MOV SMANE,someUserInput;
为什么我们要在此说明中添加
2
LEA DX,SNAME +2
?
How do we tell that the user input is to be stored in variable SNAME?
因为你的程序使用了DOS输入函数0Ah,需要你设置一个缓冲区来接收输入的字符。偏移量 0 处的字节必须指定从偏移量 2 开始可用的字节数。指定 21 意味着您将能够输入 20人物。多余的字节将用回车符 return (ASCII 13).
填充Why are we adding 2 in this instaruction LEA DX,SNAME +2?
DOS 输入函数将输入的字符从偏移量2 开始存储在您指定的缓冲区中。在偏移量 1 处,您会找到一个字节,其中包含输入的字符数。在这些输入的字符后面,DOS 添加了一个回车 return (ASCII 13)。这意味着按照您的方式打印将不可避免地将光标留在行的开头。