Search code examples
assemblyasciix86-16masmdosbox

Displaying the ASCII-Code of a char in assembly


I'm kinda new to assembly and I want to know how to get a char ASCII code and print out that ASCII code. I'm using MASM (Dosbox).

MOV AX, 'A'  ; -> I want to print out the ASCII code of 'A'

Thanks for the answers!


Solution

  • From comments

    MOV AX, 'A' MOV BX, 10 DIV BL MOV AH, 2 INT 21h

    This byte-sized division will leave a quotient in AL and a remainder in AH.
    But the DOS.PrintCharacter function 02h expects its input in the DL register.

    After DIV: ADD AH, 48 ADD AL, 48

    Fine to convert, but you can do it in one go with ADD AX, 3030h

    I got this output: ##

    Try next code:

    mov ax, 'A'
    mov bl, 10
    div bl
    add ax, 3030h
    mov dx, ax      ; Moving tens "6" to DL for printing and preserving the units in DH
    mov ah, 02h     ; DOS.PrintCharacter
    int 21h
    mov dl, dh      ; units "5"
    mov ah, 02h     ; DOS.PrintCharacter
    int 21h
    

    Displaying numbers with DOS has a detailed explanation about how to deal with even bigger numbers.