Je suis un begginer dans emu8086 et j'ai un problème avec ce code que je ne semble pas être en mesure de réparer. J'ai besoin de convertir de décimal en binaire et parfois il le fait bien, par exemple, quand j'utilise des nombres comme 4,8,15,16,255 tout fonctionne bien. Mais si j'utilise par exemple, 2,9,17,254 il ne montre pas le bon nombre. J'ai vraiment besoin d'aide avec ça.Convertir de décimal en binaire en utilisant des tableaux
.model small
.data
exp db 8 dup (?)
num dw 09
var dw 2
.code
start:
mov ax,@data
mov ds,ax
mov di,0
mov ax,num ;I put my number in ax
Binary: ;Here I make the conversion from decimal to binary
div var
mov exp[di],dl
inc di
cmp al,0 ;If my number is equal to 0 it breaks the cicle and shows the array in the next function
ja Binary
dec di
mov cx,di
Show: ;Here I show the array backwards so we can see the real binary number
mov bl,exp[di]
add bl,30h
mov dl,bl
sub bl,30h
mov ah,2
int 21h
dec di
loop Show
int 21h
end start:
fin
N'utilisez pas 'div' pour diviser par 2! Il est environ 30x plus lent qu'un quart de travail, et il ne peut pas prendre un opérande immédiat. https://stackoverflow.com/questions/40354978/why-is-this-c-code-faster-than-my-hand-written-assembly-for-testing-the-collat/40355466#40355466 –
Merci Peter. –