67 lines
802 B
NASM
67 lines
802 B
NASM
BITS 16
|
|
CPU 8086
|
|
|
|
org 0x7000
|
|
|
|
_start:
|
|
jmp main
|
|
|
|
hexdigits:
|
|
db "0123456789abcdef"
|
|
|
|
putc:
|
|
push bx
|
|
push bp
|
|
mov ah, 0x0e
|
|
xor bh, bh
|
|
int 0x10
|
|
pop bp
|
|
pop bx
|
|
ret
|
|
|
|
printnibble:
|
|
push si
|
|
push bx
|
|
mov si, hexdigits
|
|
xor bh, bh
|
|
mov bl, al
|
|
and bl, 0xf
|
|
mov al, cs:[si+bx]
|
|
call putc
|
|
pop bx
|
|
pop si
|
|
ret
|
|
|
|
printi8:
|
|
push bx
|
|
mov bl, al
|
|
mov cl, 4
|
|
shr al, cl
|
|
call printnibble
|
|
mov al, bl
|
|
call printnibble
|
|
pop bx
|
|
ret
|
|
|
|
printi16:
|
|
push bx
|
|
mov bx, ax
|
|
mov al, ah
|
|
call printi8
|
|
mov al, bl
|
|
call printi8
|
|
pop bx
|
|
ret
|
|
|
|
main:
|
|
mov bp, sp
|
|
mov si, [bp+4]
|
|
mov si, [si]
|
|
mov ax, [si]
|
|
call printi16
|
|
mov al, 0x0d
|
|
call putc
|
|
mov al, 0x0a
|
|
call putc
|
|
retf 2
|