-1

我是这个地方和集会的新手,我想问一个对我有很大帮助的问题。我有一个代码:

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,但我不知道该怎么做。你能解释一下如何做以及为什么。我将感激不尽。

4

1 回答 1

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 应该从内存中加载多少字节,因此它们与此无关。

参考这里

于 2013-09-17T21:55:02.777 回答