我是这个地方和集会的新手,我想问一个对我有帮助的问题。我有一个代码:
mov dx, 200
mov ah, 0A
int 21
mov bh, 00
mov bl, byte ptr [201]
mov byte ptr[200], 0D
mov byte ptr[201], 0A
mov byte ptr[202 + bx], 24
mov dx, 200
mov ah, 09
int 21
mov ah, 4c
int 21
这显示了我在键盘上输入的内容,但它仅适用于6个数字。我必须让我可以输入8个。据我所知,我需要从字节ptr改为word,但我不知道该怎么做。你能解释一下怎么做以及为什么这样做。我将不胜感激。
答案 0 :(得分:0)
从stdin读取字符串时(int 21h,ah = 0a)ds:dx必须指向存储字符串的有效缓冲区。这个缓冲区有一个特殊的格式:
offset | content
--------+----------
0 | maximum string length
1 | will contain number of characters read
2 | will contain the string
所以基本上你必须指定你想要的字符数(最多):
mov byte ptr[200], 8
mov dx, 200
mov ah, 0A
int 21
byte ptr和word ptr(以及dword ptr)指定CPU应从内存加载的字节数,因此它们与此无关。
参考here。