2013-08-27 39 views
0

我试图打印出一个8位寄存器的十六进制值中组件,用于引导加载两个十六进制字符。我已经编写了代码来打印出值,但只是作为ASCII字符。例如:打印输出一个8位寄存器,与NASM

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”,我该怎么做呢?

回答

2

取高位(即(al AND 0F0h) LSR 4),加30h'0')即可。如果结果大于39h'9'),加7.然后打印,重复的低四位(al AND 0Fh)相同的步骤。

+1

你并不真的需要'AND 0F0h',由于移位无论如何都会清除低位。 – Jester

相关问题