使用数组将十进制转换为二进制

Convert from decimal to binary using arrays

我是 emu8086 的新手,这段代码有一个我似乎无法修复的问题。我需要将十进制转换为二进制,有时效果很好,例如,当我使用 4,8,15,16,255 这样的数字时,一切正常。但是,如果我使用例如 2,9,17,254,它不会显示正确的数字。我真的需要帮助。

.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:

结束

div vardx:ax 除以 var。您需要在除法指令之前将 dx 归零。