2014-11-18 2 views
0

Я застреваю в точке, где мне нужно прочитать 3 числа из созданного буфера текстового файла. Я судимое чтение каждого байта, но не повез, если число больше, чем 9. шагов, которые я делаю:Ассемблер читает полные числа из txt-файла

  1. Открыть текстовый файл
  2. содержания
  3. прочитанного файла в созданный буфер
  4. Помещенных каждые буфера байты в другом регистре (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] 

ответ

0

Я нашел решение, если кто-то, имеющий такую ​​же проблему:

changeNumbers: 
    push ax 
    mov ax, 0 
    cmp cl, 0 
    je change 
temp1:  
    mov ch, 0 
    mov cl, buffer[si] 
    inc si 
    cmp cl, 32 
    je changeNumbers 
    cmp cl, 0 
    je changeNumbers 
    sub cl, 48 
    mul abc 
    add ax, cx 

    jmp temp1 

В основном то, что я был прочитан каждый байт и, если число> 9 затем добавить cx к ax и умножьте его на 10. Затем просто надавите на стек для дальнейшего использования. Я бы сказал, что мозг - потрясающая вещь.

Смежные вопросы