2015-11-23 63 views
2

我試圖將數字從txt文件加載到8086中的數組中。 我爲一位數字編號,但我不知道如何處理多個數字。從文件中將多字母數字加載到數組中

我的txt文件看起來是這樣的:

1:4 
2:3 
5:10 

我應該負荷數組值,這是':'後。

我的代碼如下所示:

org 100h 


;load text file (coin stock) 
load: 
mov dx, offset file ; address of file to dx 
mov al,0 ; open file (read-only) 
mov ah,3dh 
int 21h ; call the interupt 

jc terminate ; if error occurs, terminate program 

mov bx,ax ; 
mov cx,1 ; read one character at a time 
mov di, 0 


putInArray: 
lea dx, BUF 
mov ah,3fh ; 
int 21h 
CMP AX, 0 ; 
JZ terminate ; 

mov al, BUF 
cmp BUF, 3Ah ; compare if character is equal to ":" 
JNE putInArray ; if not, jump back  
array: 
lea dx, BUF ; if yes: take next character 
mov ah,3fh ; 
int 21h 
CMP AX, 0 ; 
JZ terminate 

cmp BUF, 13d 
JE putInArray  


mov al, BUF ;move character to AL 
mov coinStock[di], al ; put character into array coinStock 
inc di 

jmp array ; repeat if not end of file. 

terminate: 
mov ah, 0 ; wait for any key... 
int 16h 
ret 

    file db "c:\coinstock.txt", 0 
    BUF db ? 
    coinStock db 3 dup(?)  
END 
+0

您是否嘗試用調試程序遍歷代碼以查看可能出錯? –

+0

是的,但我知道什麼是錯誤:),有三個選項:1)我只有'1'而不是10在陣列2的第3個位置)我有'0'而不是10 3)我有'1 '在第三個位置和'0'在第四個位置(如果我有一個更大的陣列當然) - 我不知道如何將超過1個數字號碼放入數組中 – gariaable

+0

您可以將數字轉換爲字節或單詞將其存儲在一個字節或字的數組中,或者您可以複製ASCII字符併爲這些數字的地址創建一個指針數組(偏移量)。 – rkhb

回答

1

目前你的程序將單個字符數組中但multidigital數字,這是不再可能。您必須將數值(限制爲1個字節)放入數組中。

mov al, 0 
mov coinStock[di], al ;Initial content 
array: 
lea dx, BUF   ;if yes: take next character 
mov ah,3fh 
int 21h 
CMP AX, 0 
JZ terminate 
cmp BUF, 13d 
JE EndOfLine   ;(putInArray) 
mov al, coinStock[di] 
mov ah, 10 
mul ah 
mov coinStock[di], al 
mov al, BUF   ;move character to AL 
sub al, 48   ;From character to number 
add coinStock[di], al ;Add character into array coinStock 
jmp array    ;repeat if not end of file. 
EndOfLine: 
inc di 
jmp putInArray 
+0

非常感謝你,那正是我需要的! – gariaable

+1

@gariaable如果這個答案解決了你的問題,那麼請接受它。看[這個解釋](http://stackoverflow.com/help/someone-answers)。 –

相關問題