2016-10-02 17 views
0

私は自分の学校のためのアセンブリラボとその署名付き番号と署名なし番号を印刷しています。それは無限の量の " - /"を印刷し続けますが、番号を印刷する必要があります。 number to ascii値のオフセットが30hですか?アセンブリーで歌った番号と符号なしの数字を印刷する

Display .EQU 04E9h 

    NumAddr .EQU 0050h 

Main: 

    mov BX, NumAddr 
    mov DX, Display 

mainLoop: 


    MOV AH,[BX] 

    cmp AH, 0h  ; is number 0? 
    JE EndPrt  ; if yes we are done 

    CMP AH,0h 
    JG posNum   ; should jump to posNum if AH is positive 

negNum: 

    mov AL, 2Dh  
    out DX,AL   ; print a negative sign 

    NEG AH   ; turn AH into a positive number 

printPos: 

    MOV AL,[BX] 
    ADD AL, 30h  ; should add required offset to convert to ASCII 
    out DX,AL 

    MOV AL, 0Dh 
    out DX,AL 
    MOV AL, 0Ah 
    out DX,AL 

    inc BX 

    jmp mainLoop 

EndPrt: 

    HLT 

.END Main 

答えて

0

30hは1桁のオフセットです。つまり(4 + 30h)は34hで、ASCIIコード化では'4'です。しかし(17 + 30h)の場合は、41hが得られます。これは、文字'A'です。

31h '1'と37h '7'のように、値17に2文字を使用する場合は、数字を別のベース(10で割って余りを収集)に分割する必要があります。

関連する問題