2013-12-07 61 views
1

您好我目前正在編寫一個程序,我需要在屏幕上打印寄存器AX的值。我想到的方法很少,但他們沒有奏效。任何想法如何使它?例如ax = 0abcdh。寄存器,組件的打印值x8086

+2

請提一下您嘗試過的是什麼以及您的錯誤是什麼。 –

+0

轉換爲十六進制字符串,將其打印出來。有什麼問題?你的嘗試在哪裏? – Devolus

回答

0

您必須將寄存器的值分成不同的部分。

示例:十六進制輸出:

MOV CX, 4 
next_digit: 
    PUSH CX 
    MOV CL, 4 
    ROL AX, CL 
    PUSH AX 
    AND AL, 0Fh 
    ADD AL, '0' 
    CMP AL, '9' 
    JLE not_a_letter 
    ADD AL, 'A'-'9'-1 
not_a_letter: 
    ; Now write the character AL to the screen 
    POP AX 
    POP CX 
    LOOP next_digit 

該代碼會破壞CX寄存器的內容,所以你必須將它保存在棧上,如果你不希望修改CX寄存器。

行「現在將字符AL寫入屏幕」取決於操作系統。

如果你想要十進制輸出它有點棘手。你必須使用DIV指令併除以10.你會得到從右到左的數字!