Assembler: merkwürdige Sprünge
Verfasst: Sa Dez 26, 2015 11:41 pm
Hallo alle zusammen und frohe Weihnachten
Ich habe ein kleines Assembler Programmchen was mir den Kopf zerbricht, vielleicht sehe ich nur den Fehler nicht.
Es ist 16-Bit masm Assembler, was ich sehr gut finde zum lernen und weil ich das Buch besitze "Assembler Programmierung" von Wolfgang Link.
Nun zum eigentlichen Problem.
Ich lese ein Zeichen ein, das wird in AL gespeichert, zu AL wird CL addiert und auf dem Bildschirm ausgegeben. Ich vergleiche dann und springe wenn CH größer ist als AL. Bei CMP werden ja Register subtrahiert und die Flags gesetzt aber die REGISTERINHALTE BLEIBEN JA GESPEICHERT(???), aber das komische ist, es ist egal was ich in CH gespeichert habe ob 2 oder 23 oder eine andere Zahl. Es ist die Art mit der ich vergleiche wenn ich JAE oder JA habe dann bekomme ich über 100 Zeichen wenn ich z.B. die 1 eingeben alles ab der 1 wie 2345678... usw. ich glaube bis zum Ende des 255 bit 2^8 Bereichs. Wenn ich aber JB habe dann wird mir nur CL draufaddiert was ja prinzipiell richtig ist, es erfolgen aber keine Sprünge d.h. ab der ersten Zahl ist es Schluss.
edit: es erfolgen auch keine Sprünge auch wenn ich in CH eine 23 habe(getestet)
Hoffe das ist einigermaßen verständlich
wahrscheinlich habe ich weil ich so Müde bin ein Register übersehen oder sonstiges, ich bin aber schon min. 4 Mal das Programm durchgegangen und finde dort nichts.
Danke und schöne Feiertage

Ich habe ein kleines Assembler Programmchen was mir den Kopf zerbricht, vielleicht sehe ich nur den Fehler nicht.
Es ist 16-Bit masm Assembler, was ich sehr gut finde zum lernen und weil ich das Buch besitze "Assembler Programmierung" von Wolfgang Link.
Nun zum eigentlichen Problem.
Code: Alles auswählen
.model small
.stack 256
.code
mov cl, 1
mov ch, 2
mov ah, 08h ;lese Tastatureingaben
int 21h ;speichere in al
schleife:
add al, cl
mov dl, al
mov ah, 02h ;von dl
int 21h ;zeige auf dem Bildschirm
cmp al, ch
jae schleife
raus:
mov ah, 08h
int 21h
mov ah,4ch
int 21h
end
edit: es erfolgen auch keine Sprünge auch wenn ich in CH eine 23 habe(getestet)
Hoffe das ist einigermaßen verständlich

Danke und schöne Feiertage
