我正在学习asm,我知道如果我想从键盘上取一个数字,我可以这么简单:
inputarea db 3 DUP(' '),'$'
mov ah,0Ah
mov dx,offset inputarea
int 21h
在这种情况下,我可以写入符号,直到达到255.但是有一个db(数据字节)类型,所以在这种情况下我只能写最多3个数字,这对于asm是正确的执行它(123,100等......)。但如果有Data Word
或DD
类型,我可以编写多少个可以执行的符号?
提示:例如,如果我输入'数据字节',那么这将排除1字节的内存。并且只能存储3个号码。其他类型呢?
答案 0 :(得分:1)
我知道如果我想从键盘上取一个数字,我可以这么简单: ...
不,它不那么简单 - 您必须正确设置传输缓冲区。函数0ah
从标准输入读取并将其读取的字符写入缓冲区,请参阅Interrupts MS-DOS Function Calls (INT 21h),第4页:
count = 80
KEYBOARD STRUCT
maxInput BYTE count ; max chars to input
inputCount BYTE ? ; actual input count
buffer BYTE count DUP(?) ; holds input chars
KEYBOARD ENDS
.data
inputarea KEYBOARD <>
.code
mov ah, 0Ah
mov dx, OFFSET inputarea
int 21h
然后,您将在输入缓冲区中找到一个字符串,您需要将其转换为数字。