109 lines
2.1 KiB
NASM
109 lines
2.1 KiB
NASM
|
; for tasm
|
||
|
;
|
||
|
cseg segment
|
||
|
assume cs:cseg, ds:cseg
|
||
|
org 100H
|
||
|
begin:
|
||
|
mov es,cs:[video]
|
||
|
|
||
|
mov ax,3
|
||
|
int 10h
|
||
|
mov cs:[col],0fh
|
||
|
mov di,18
|
||
|
lea si,colr2
|
||
|
call mess
|
||
|
|
||
|
mov cx,16
|
||
|
mov di,160
|
||
|
xor al,al
|
||
|
rec1:
|
||
|
push cx
|
||
|
|
||
|
push di
|
||
|
lea si,colour
|
||
|
call mess
|
||
|
call hex2
|
||
|
|
||
|
mov bh,al
|
||
|
push cx
|
||
|
mov cx,16
|
||
|
col2:
|
||
|
mov es:[di],byte ptr "#"
|
||
|
mov es:[di+1],bh
|
||
|
inc bh
|
||
|
add di,2
|
||
|
|
||
|
loop col2
|
||
|
pop cx
|
||
|
|
||
|
|
||
|
pop di
|
||
|
add di,160
|
||
|
add al,10h
|
||
|
|
||
|
add cs:[col],10h
|
||
|
pop cx
|
||
|
loop rec1
|
||
|
|
||
|
|
||
|
mov ah,2
|
||
|
mov bh,0
|
||
|
mov dh,17
|
||
|
mov dl,0
|
||
|
int 10h
|
||
|
|
||
|
|
||
|
mov ah,4ch
|
||
|
int 21h
|
||
|
|
||
|
col db 0
|
||
|
colour db "Colour ",0
|
||
|
colr2 db "0123456789ABCDEF",0
|
||
|
colnum db 0
|
||
|
|
||
|
video dw 0b800h
|
||
|
|
||
|
hex2 proc near
|
||
|
push ax
|
||
|
and al,011110000b
|
||
|
shr al,4
|
||
|
call hex1
|
||
|
pop ax
|
||
|
push ax
|
||
|
and al,01111b
|
||
|
call hex1
|
||
|
pop ax
|
||
|
ret
|
||
|
hex2 endp
|
||
|
hex1 proc near
|
||
|
mov ah,cs:[col]
|
||
|
cmp al,10
|
||
|
jb hnum1
|
||
|
add al,'A'-10
|
||
|
jmp hnum2
|
||
|
hnum1:
|
||
|
add al,'0'
|
||
|
hnum2:
|
||
|
mov es:[di],ax
|
||
|
add di,2
|
||
|
ret
|
||
|
hex1 endp
|
||
|
mess proc
|
||
|
push ax
|
||
|
mov ah,cs:[col]
|
||
|
conmess:
|
||
|
mov al,cs:[si]
|
||
|
or al,al
|
||
|
jz endmess
|
||
|
mov es:[di],ax
|
||
|
inc si
|
||
|
add di,2
|
||
|
jmp conmess
|
||
|
endmess:
|
||
|
pop ax
|
||
|
ret
|
||
|
mess endp
|
||
|
|
||
|
|
||
|
cseg ends
|
||
|
end begin
|