Assembler czytanie z pliku

0

Witam, mam problem. Rozpocząłem zabawę z plikami w assemblerze, chciałem sobie wczytać do bufora jeden wiersz z pliku, jednak pojawiły mi się jakieś śmieci, nie wiem czym, są one spowodowane.

user image

Wczytałem sobie jeden wiersz z mojego pliku tekst.txt

HCDDDEDCHAADCCHPHCDDDEDCHAADGAFPAACCHCCCEEDHDGFFECDCFAGPQ
344444443334443034444444333433303344344444434333444433300
442444444442422244244444444242212242222442224242244242210

Cały bufor jest wyświetlany, ale pojawiły się właśnie te "śmieci".

Oto mój kod:

Progr           segment
                assume  cs:Progr, ds:dane, ss:stosik
start:

    mov ax,dane
    mov     ds,ax
    mov ax,seg Plik
    mov ds,ax
    mov dx,offset Plik    ;adres DS:DX zawiera nazwę pliku
    mov cx,0
    mov ax,stosik
    mov ss,ax
    mov sp,offset szczyt
        
    mov ah,3Dh            ;funkcja otwórz plik
    mov al,2              ;Tryb otwarcia: prawo do odczytu i zapisu
    int 21h


    mov bx,ax             ;uchwyt idzie do BX
    lea dx, nuty    
    mov cx,57            ;ile bajtów odczytac
    mov ah,3fh             ;funkcja odczyt do dojścia
    int 21h               ;wywołaj funkcje DOS
	
	lea dx,nuty
	mov ah,09h  
	int 21h


    mov ah,3eh            ;zamknij plik w BX-uchwyt
    int 21h               ;


ZakonczProgram:
    mov ax,4C01h
    int 21h

Progr           ends

dane            segment
    Plik db 'tekst.txt',0

	nuty db 0
	oktawy db 0
	czasy db 0

dane            ends


stosik          segment
                dw    100h dup(0)
szczyt          Label word
stosik          ends


end start

Proszę również o podpowiedź/pomoc w odczytaniu 2 wiersza do oktawy, a trzeciego do czasy.

0

http://spike.scu.edu.au/~barry/interrupts.html#ah09

string musi byc zakonczony znakiem '$'

0

Zrobiłem:
nuty db 0,'$'
nadal nie pomaga ;<

2

Twoje nuty mieszczą cały JEDEN znak. Brawo. Dobrze że te dane deklarowałeś pod kodem a nie nad nim, bo by sie pewnie od razu wysypał.

nuty db 128 dup('$')
0

Dzięki wielkie za pomoc, jeszcze tylko potrzebuje jakieś podpowiedzi w jaki sposób do oktawy pobrać 2 wiersz z pliku tekst.txt i mój świat będzie od razu bardziej kolorowy :)

0

Czytać po znaku i sprawdzać czy jest to znak końca linii (albo \n albo \r\n albo \r) ? innej rady nie ma ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1