Rimantas Radžiūnas
Rimantas Radžiūnas

Reputation: 257

Assembler read full numbers from txt file

I am stuck at point where I need to read 3 numbers from created buffer of text file. I've tryed reading every byte, but no luck if the number is bigger than 9. Steps that I do:

  1. Open text file
  2. Read file's content into created buffer
  3. Put every buffers byte into different register (ax, bx, cx, dx).

The problem is, it reads 1 byte (mov ax, buffer[0]) at a time: if my text file is (10 10 1), it reads 1 then 0 then space symbol(ascii 20) and so on. Should I do cycle that converts and adds every byte to one register while it doesn't detect space symbol? Or is there a possibility to read whole number at one time? Here's the code:

.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]

Upvotes: 0

Views: 1836

Answers (1)

Rimantas Radžiūnas
Rimantas Radžiūnas

Reputation: 257

I've found the solution if anyone is having same problem:

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

Basically what I did was read every byte and if the number is >9 then add cx to ax and multiply it by 10. Then just push it to stack for further usage. Brain is an amazing thing, I'd say.

Upvotes: 1

Related Questions