我想问的是,当我向缓冲区写入行时,我如何操作它?当我把它们都存储在那里时,我如何从一开始就读取它们?在NASM中。
每一行最多可以是100个字节,最多可以是600行。我想从一开始我会读取行,然后将缓冲区中的位置增加104,然后再读取另一行。我需要将它们存储在缓冲区中,因为我需要计算它们的数量,然后只读取一半
我有这样的缓冲区:
segment data
data_rows db 62400 DUP(0)
阅读到这样的句子:
loop_01 lea bx, [data_rows]
mov al, 0x65
mov [bx], al
lea dx, [data_rows]
mov ah, 0x0a
int 21h
inc word [len_data]
mov al, [data_rows + 1]
cmp al, 0
jne loop_01
1条答案
按热度按时间jei2mxaa1#
最好不仅设置缓冲区大小,而且还将第二个字节预加载为0。了解为什么在How buffered input works中这样做更好。
由于您为大缓冲区中的每个 record(“record”比“segment”更好)分配了固定数量的字节,并且您认为空输入是所有输入的结束,因此填充大缓冲区的过程如下:
这是一个处理大缓冲区的例子,这段代码计算输入行的平均长度,然后根据需要进行调整: