Czesc,
mam pewien problem z wczytywaniem do lancucha, a pozniej wypisywaniem tego co wczytalem.
Kod:
d segment
lancuch db 20, 20 dup(?), '$' ; tutaj chce wczytac lancuch
d ends
c segment
start:
mov ax,seg lancuch
mov ds,ax ;do ds adres segmentu gdzie jest lancuch
mov dx, offset lancuch ; do dx adres offsetu gdzie jest lancuch
mov al, 0Ah ; funkcja wczytujaca caly lancuch do DS:DX = lancuch
int 21h ; przerwanie 21h z ww. funkcja
; w moim rozumowaniu teraz pod lancuchem "siedzi" moj wczytany z klawiatury lancuch
; teraz chce go wypisac funkcja 09h przerwania 21h, wypisujace caly lancuch do napotkania $
mov ax, seg lancuch
mov ds, ax
mov dx, offset lancuch ; do DS:DX znowy laduje adres lancucha, nic po drodze sie w tych rejestrach nie dzialo wiec chyba nie musialem tego robic?
add dx, 2 ; przesuwam offset o 2, czyli tam gdzie zacznie sie juz lancuch
mov al, 09h ; funkcja wypisujaca z adresu DS:DX lancuch do napotkania znaku $
int 21h
exit:
mov al,0
mov ah,04ch ;koniec programu i powrot do systemu
int 021h
c ends
stos segment stack
stos ends
end start
Chcialem wczytac do lancucha wprowadzony ciag znakow, a potem go wypisac. Niestety kod ten wczytuje znaki, a potem nic nie wypisuje. Nie bardzo wiem gdzie robie blad, wiem, ze przy bardziej skomplikowanych programach nalezy odkladac rejestry na stos i potem je sciagac bo sie po drodze ciagle zmieniaja. Tutaj sie nie zmieniaja bo nic poza tym nie robie, poza tym i tak wpisuje dokladny adres do pamieci, ktoryc chce wypisac i nie ma reakcji.
Moglby ktos wskazac luke w moim rozumowaniu? Bylby bardzo wdzieczny.
Z gory dziekuje