我试图在程序集中为引导加载程序打印出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”,我该怎么做呢?
答案 0 :(得分:2)
取高半字节(即(al AND 0F0h) LSR 4
),添加30h
('0'
)。如果结果大于39h
('9'
),请添加7.然后打印,并对低半字节(al AND 0Fh
)重复相同的步骤。