使用NASM将8位寄存器打印为两个十六进制字符

时间:2013-08-27 08:15:34

标签: assembly nasm

我试图在程序集中为引导加载程序打印出8位寄存器的十六进制值。我编写了打印输出值的代码,但只是ASCII字符。例如:

BITS 16

start:
    mov ax, 07C0h
    add ax, 288
    mov ss, ax
    mov sp, 4096

    mov ax, 02h
    int 10h
    mov ax, 07C0h
    mov ds, ax

    mov al, 19h
    mov ah, 0Eh
    int 10h

    jmp $

    ret
    times 510-($-$$) db 0
    dw 0xAA55 

当我用NASM编译它时,它打印出一个ASCII符号。我希望它能够打印出“19”,我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

取高半字节(即(al AND 0F0h) LSR 4),添加30h'0')。如果结果大于39h'9'),请添加7.然后打印,并对低半字节(al AND 0Fh)重复相同的步骤。