programming-examples/assembly/Colours routine.asm

109 lines
2.1 KiB
NASM
Raw Normal View History

2019-11-15 12:59:38 +01:00
; 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