我可以用1,2,4个字节写多少个符号? ASM

时间:2014-01-16 12:41:52

标签: assembly x86

我正在学习asm,我知道如果我想从键盘上取一个数字,我可以这么简单:

inputarea db 3 DUP(' '),'$'

mov ah,0Ah
mov dx,offset inputarea
int 21h

在这种情况下,我可以写入符号,直到达到255.但是有一个db(数据字节)类型,所以在这种情况下我只能写最多3个数字,这对于asm是正确的执行它(123,100等......)。但如果有Data WordDD类型,我可以编写多少个可以执行的符号?

提示:例如,如果我输入'数据字节',那么这将排除1字节的内存。并且只能存储3个号码。其他类型呢?

1 个答案:

答案 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

然后,您将在输入缓冲区中找到一个字符串,您需要将其转换为数字。