| org 100h |
| [map all] |
| |
| section .bss ; follows=.data |
| buffer resb 123h |
| section .data |
| msg db "this is a message", 0 |
| section .text |
| mov ax, msg |
| call showax |
| mov ax, buffer |
| call showax |
| ret |
| |
| ;----------------- |
| showax: |
| push cx |
| push dx |
| |
| mov cx, 4 ; four digits to show |
| |
| .top |
| rol ax, 4 ; rotate one digit into position |
| mov dl, al ; make a copy to process |
| and dl, 0Fh ; mask off a single (hex) digit |
| cmp dl, 9 ; is it in the "A" to "F" range? |
| jbe .dec_dig ; no, skip it |
| add dl, 7 ; adjust |
| .dec_dig: |
| add dl, 30h ; convert to character |
| |
| push ax |
| mov ah, 2 |
| int 21h |
| pop ax |
| |
| loop .top |
| |
| pop dx |
| pop cx |
| ret |
| ;-------------------------- |