8086 program to convert hexadecimal to ascii Edit
8086 assembly language program to convert from hex or decimal to ASCII. Ideally what you are trying to do is to display a number as a numeric character. In this program, we will display decimal 356 or hex 164 as a string 250
The first thing to do would be to run the program.
8086 code hex or decimal to ASCII
;---------------------------------------- ;Program : clear screen ;FileName : hextoasc.asm ;I/P : number (365 decimal) in ax ;O/P : displays 365 ;---------------------------------------- .model tiny .code org 100h main proc near mov ax,365d mov si,offset message mov cx,00h mov bx,0ah hexloop1: mov dx,0 div bx add dl,'0' push dx inc cx cmp ax,0ah jge hexloop1 add al,'0' mov [si],al hexloop2: pop ax inc si mov [si],al loop hexloop2 inc si mov [si],'$' mov ah,09h mov dx,offset message int 21h mov ah,4ch mov al,00 int 21h endp message db 10 dup(?) end main
Output
I am using emu8086 to run the program. You can also run the program using tasm or masm
Generate executable using
tasm filename.asm tlink /t filename
let's improve the code a little bit. The output will be the same. I am going to modify the code to display two numbers instead of one. For this the main thing, I have to do is to write a procedure for converting from hexadecimal to ASCII. Check the improved code below
Improved code
;---------------------------------------- ;Program : clear screen ;FileName : hextoasc.asm ;I/P : number (365 decimal) in ax & number (969 decimal) in ax ;O/P : displays 365 & 969 ;---------------------------------------- .model tiny .code org 100h main proc near mov ax,356d mov si,offset message call hexToAsc mov ah,09h mov dx,offset message int 21h mov ah,09h mov dx,offset newline int 21h mov ax,969d mov si,offset message call hexToAsc mov ah,09h mov dx,offset message int 21h mov ah,4ch mov al,00 int 21h endp newline db 0ah,0dh,'$' message db 10 dup(?) value dw 0 hexToAsc proc near ;AX input , si point result storage addres mov cx,00h mov bx,0ah hexloop1: mov dx,0 div bx add dl,'0' push dx inc cx cmp ax,0ah jge hexloop1 add al,'0' mov [si],al hexloop2: pop ax inc si mov [si],al loop hexloop2 inc si mov [si],'$' ret endp end main