2013-08-27 40 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

相關問題