J'ai créé un programme d'assemblage 8086comme une mission de mon académie, qui imprime simplement en conséquence oui ou non, et l'assembleur TASM montre la mauvaise réponse, quand j'ai vérifié le débogueur pour voir comment cela se passe, il fait vraiment la bonne chose! que dites-vous que le problème est? le code est ci-dessous:impressions de montage sur pas la même réponse que le débogueur dit
.model small
.stack 100h
.data
a dw 1101001001001011b
b db 'yes$'
d db 'no$'
.code
mov ax, @data
mov ds, ax
mov dx,0
mov cl ,1
loop1:
mov ah,0
mov al,0
rol a,cl
adc ah,0
rcr a,cl
rcr a,cl
adc al,0
rol a,cl
cmp ah,al
jne outloop
inc cl
inc di
cmp di,7
jne loop1
mov dx ,offset b
mov ah,9
int 21h
jmp outt
outloop:
mov dx ,offset d
mov ah,9
int 21h
jmp outt
outt:
.exit
end
dans ce code que je avais besoin en fait de vérifier si le numéro (appelé par le nom un sur le segment de données) est symétrique ou non, et d'imprimer la réponse . et dans ce cas, la réponse devrait être oui, mais il imprime pas ..
Si votre programme agit différemment dans un débogueur que lorsque vous l'exécutez en dehors d'un débogueur, c'est généralement un indicateur que vous n'avez pas correctement initialisé la mémoire et/ou un registre. Je n'ai pas suivi la logique de votre code mais j'ai scanné le code que je vois 'inc di'' cmp di, 7'. Le problème est que vous n'initialisez jamais le registre _DI_. Peut-être que vous vouliez le mettre 0 à un moment donné? –
@MichaelPetch omgggg c'est vrai !! un grand merci pour vous l'homme! wow je ne trouverais jamais ce bug! – Argaman