使用DOS int 21h;
1 功能号 01h
读取一个字符,回显到屏幕,结果在 AL 中;
运行之前如下,

运行之后,

输入m,仿真屏幕显示了m,AL寄存器中存入6D;
2 字符串输入到缓冲区
功能号 0Ah:读取一行字符串,存入指定缓冲区;
先运行如下的指令,

显示了一个错误:不匹配,16比特的寄存器和8比特的地址;那把mov dx改为lea dx;
执行如下的代码;运行之前如下,

根据资料,
buffer db 80, 0, 80 dup(0) ; 最大80字符,首字节为最大长度,第二字节为实际长度
定义了缓冲区,名为buffer;头2个字节存的是长度;其他字节现在是0;
但是好像80变为了205,不知道为啥;
运行,输入7个字符;

仿真屏幕显示了7个字符;
定义的缓冲区也存入了7个字符;0D应该是结束标志;
缓冲区的第二个字节现在是7,实际长度;
cpp
.data
buffer db 80, 0, 80 dup(0) ;
.code
main proc
mov ah, 0Ah
lea dx, buffer
int 21h
main endp
end main
3 不带回显输入
通常用于输入密码;
功能号 08h:读取字符但不显示;
运行代码,键盘输入m,仿真屏幕不会显示,AL寄存器变为6D;
