📜  8086程序将16位十进制数字转换为二进制(1)

📅  最后修改于: 2023-12-03 15:13:09.866000             🧑  作者: Mango

8086程序将16位十进制数字转换为二进制

在8086汇编语言中,将16位十进制数字转换为二进制可以使用位移和位运算操作来实现。以下是一个示例程序:

; 将16位十进制数字转换为二进制

.model small
.stack 100h

.data
    ; 定义变量
    decimal dw 65535 ; 16位十进制数字
    binary db 16 dup(0) ; 存储16位二进制数字的数组

.code
main proc
    ; 初始化
    mov ax, @data
    mov ds, ax

    ; 将十进制数字存储在寄存器中
    mov ax, decimal

    ; 将寄存器中的数字转换为二进制
    mov bx, binary
    mov cx, 16

convert:
    shr ax, 1 ; 右移一位
    jc setbit ; 如果最低位为1,则设置对应的二进制位为1
    jmp nextbit ; 否则跳过设置二进制位的步骤

setbit:
    mov byte ptr[bx], 1 ; 设置对应的二进制位为1

nextbit:
    inc bx ; 移动到下一个二进制位
    loop convert ; 循环16次

    ; 打印二进制数字
    mov ah, 09h ; 调用dos中断
    mov dx, offset binary
    int 21h

    ; 退出程序
    mov ah, 4ch ; 调用dos中断
    int 21h

main endp
end main
代码说明

该程序首先定义了两个变量,decimal为一个16位的十进制数字,binary为一个16个字节的数组,用于存储转换后的二进制数字。

在程序的主过程中,将decimal存储到ax寄存器中,并使用位移和位运算操作将ax中的数字转换为二进制,并存储在binary数组中。

最后,调用DOS中断显示转换后的二进制数字,并退出程序。

代码片段
; 将十进制数字存储在寄存器中
mov ax, decimal

; 将寄存器中的数字转换为二进制
mov bx, binary
mov cx, 16

convert:
shr ax, 1 ; 右移一位
jc setbit ; 如果最低位为1,则设置对应的二进制位为1
jmp nextbit ; 否则跳过设置二进制位的步骤

setbit:
mov byte ptr[bx], 1 ; 设置对应的二进制位为1

nextbit:
inc bx ; 移动到下一个二进制位
loop convert ; 循环16次