Ich kann nicht verstehen, warum, wenn ich Schleife Anweisung das Programm nicht gut funktioniert. CX ist 3 und normalerweise sollte es dreimal in "repete" gehen, aber es funktioniert nur beim ersten Mal und als das Programm beendet ist.LOOP Anweisung in einem Programm
;2. Se da un sir de dublucuvinte. Sa se ordoneze descrescator sirul cuvintelor inferioare ale acestor dublucuvinte. Cuvintele superioare raman neschimbate.
;Ex: dandu-se: sir DD 12345678h 1256ABCDh, 12AB4344h
;rezultatul va fi 1234ABCDh, 12565678h, 12AB4344h.
assume cs: code, ds:data
data segment
sir dd 12340004h, 12560007h, 12AB0005h,12340009h
l equ ($-sir)/4
data ends
code segment
start:
mov ax,data
mov ds,ax
mov es,ax
mov si,offset sir
mov cx,l-1
repeta:
mov di,si
add di,4
do:
mov ax,word ptr [di]
mov bx, word ptr [si]
cmp word ptr [si],ax
ja final
movsw
sub di,2
sub si,2
mov word ptr [si],ax
final:
add di,4
cmp di,l*4-1
jl do
add si,4
loop repeta
;dec cx
;cmp cx,0
;jne repeta
mov ax,4c00h
int 21h
code ends
end start
Ich lief den Code und es 3-mal wiederholt. Welchen Compiler benutzen Sie? Wie sehen Sie den CX-Wert? –
dosbbox könntest du mir einen anderen empfehlen? Mit CPU beobachte ich den CX-Wert – Mary
Ich kann dir dieses hier empfehlen = https://sourceforge.net/projects/guitasm8086/, aber du solltest herausfinden, was mit deinem aktuellen Compiler nicht stimmt (bist du sicher, dass dies der Code ist, den du gerade ausführst ?). –