使用数组

时间:2017-10-19 05:18:55

标签: assembly binary decimal x86-16 emu8086

我是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:

1 个答案:

答案 0 :(得分:1)

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