【发布时间】:2014-11-18 18:34:55
【问题描述】:
我被困在需要从创建的文本文件缓冲区中读取 3 个数字的地方。我已经尝试读取每个字节,但如果数字大于 9,则没有运气。 我做的步骤:
- 打开文本文件
- 将文件内容读入创建的缓冲区
- 将每个缓冲区字节放入不同的寄存器(
ax、bx、cx、dx)。
问题是,它一次读取 1 个字节 (mov ax, buffer[0]):如果我的文本文件是 (10 10 1),它读取 1 然后 0 然后空格符号 (ascii 20) 等等。我是否应该循环将每个字节转换并添加到一个寄存器而它没有检测到空格符号?还是有可能一次读取整数?代码如下:
.model small
bufferLen equ 16
.stack 100h
.data
duom db "duom.txt", 0
fident dw 0
buffer db bufferLen dup (?)
.code
start:
mov dx, @data
mov ds, dx
mov bx, 81h
tikrinam: ; not important
mov ax, es:[bx]
inc bx
cmp al, 13
je openf
cmp al, 20h
je tikrinam
cmp ax, "?/"
jne openf
mov ax, es:[bx]
cmp ah, 13
je abouthlp
jmp openf
abouthlp:
mov dx, offset about
mov ah, 09h
int 21h
jmp ending
openf:
mov ah, 3Dh
mov al, 0
mov dx, offset duom
int 21h
mov [fident], ax
readf:
mov ah, 3Fh
mov bx, [fident]
mov cx, bufferLen
mov dx, offset buffer
int 21h
mov al, buffer[0]
mov bl, buffer[1]
mov cl, buffer[2]
【问题讨论】: