Dlaczego nie działa?

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 65
0

Why?

Kopiuj
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
PO
  • Rejestracja: dni
  • Ostatnio: dni
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.

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 65
0

Ja zwiększam i nie cx

PO
  • Rejestracja: dni
  • Ostatnio: dni
0

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

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 65
0

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

Kopiuj
 1
2
3
4
5
...
RE
  • Rejestracja: dni
  • Ostatnio: dni
0

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

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 65
0

Jest do tego jakaś szybka funkcja?

RE
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.