0

我正在尝试为引导加载程序打印出汇编中 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”,我该怎么做呢?

4

1 回答 1

2

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

于 2013-08-27T08:20:31.917 回答