使用数组将十进制转换为二进制
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 var
用 dx:ax
除以 var
。您需要在除法指令之前将 dx
归零。
我是 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 var
用 dx:ax
除以 var
。您需要在除法指令之前将 dx
归零。