Dlaczego nie działa?

0

Why?

org 100h

mov ah,00h
int 16h

mov cx,2000
etykieta:
inc i
mov ah, 09h
mov dx,i 
int 21h
loop etykieta

i dd 0
0

Instrukcja loop: "Decrement CX and Loop if CX Not Zero"
Czyli instrukcja loop automatycznie zmniejsza cx, a ty zwiększasz ten rejestr w pętli przez co ma ciągle ma tą samą wartość i nigdy nie opuszcza pętli.

0

Ja zwiększam i nie cx

0

Rzeczywiście za szybko spojrzałem. Przepraszam.
Napisz jeszcze co ma robić twój program??

0

Program ma wypisać 2000 razy na ekranie aktualną wartość i, czyli z każdą inkrementacją o jeden większa

 1
2
3
4
5
...
0

Zapomniałeś zamienić liczby na tekst (ASCII).

0

Jest do tego jakaś szybka funkcja?

0

Dla liczb jednocyfrowych - tak, add. Dla większych musisz pokombinować (kilka-kilkanaście linijek).

0
Rev.pl napisał(a)

Zapomniałeś zamienić liczby na tekst (ASCII).
oraz o tym, że string musi się kończyć znakiem $ dla funkcji ah09/int21. Oraz o enterze, bo wszystko wypisywałoby ci w jednej linijce. Oraz o wyjściu z programu, czyli ax4c00/int21, lub chociażby ret.

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