📄 dialog.asm
字号:
;///////////////////////main window///////////////
mov ax,07h
push ax
mov ax,[bp+10]
push ax
mov ax,[bp+8]
push ax
mov ax,[bp+6]
push ax
mov ax,[bp+4]
push ax
call DrawRect
;////////////////////////////////////////////////
;///////////////////////Left Black///////////////
mov ax,00h
push ax
mov ax,[bp+10]
dec ax
push ax
mov ax,1
push ax
mov ax,[bp+6]
push ax
mov ax,[bp+4]
push ax
call DrawRect
;/////////////////////////////////////////////////
;//////////////////////Top Black//////////////////
mov ax,00h
push ax
mov ax,1
push ax
mov ax,[bp+8]
dec ax
push ax
mov ax,[bp+6]
push ax
mov ax,[bp+4]
push ax
call DrawRect
;/////////////////////////////////////////////////
;///////////////////////Left white////////////////
mov ax,0fh
push ax
mov ax,[bp+10]
sub ax,3
push ax
mov ax,1
push ax
mov ax,[bp+6]
inc ax
push ax
mov ax,[bp+4]
inc ax
push ax
call DrawRect
;/////////////////////////////////////////////////
;//////////////////////upper white////////////////
mov ax,0fh
push ax
mov ax,1
push ax
mov ax,[bp+8]
sub ax,3
push ax
mov ax,[bp+6]
inc ax
push ax
mov ax,[bp+4]
inc ax
push ax
call DrawRect
;///////////////////////////////////////////////
;/////////////////////right gray////////////////
mov ax,08h
push ax
mov ax,[bp+10]
sub ax,2
push ax
mov ax,1
push ax
mov ax,[bp+6]
inc ax
push ax
mov ax,[bp+4]
add ax,[bp+8]
sub ax,1
push ax
call DrawRect
;/////////////////////////////////////////////////
;/////////////////////right black/////////////////
mov ax,00h
push ax
mov ax,[bp+10]
push ax
mov ax,1
push ax
mov ax,[bp+6]
push ax
mov ax,[bp+4]
add ax,[bp+8]
sub ax,1
push ax
call DrawRect
;////////////////////////////////////////////////
;//////////////////////bottom gray///////////////
mov ax,08h
push ax
mov ax,1
push ax
mov ax,[bp+8]
sub ax,2
push ax
mov ax,[bp+6]
add ax,[bp+10]
sub ax,2
push ax
mov ax,[bp+4]
inc ax
push ax
call DrawRect
;////////////////////////////////////////////////
;/////////////////////bottom black///////////////
mov ax,00h
push ax
mov ax,1
push ax
mov ax,[bp+8]
push ax
mov ax,[bp+6]
add ax,[bp+10]
sub ax,1
push ax
mov ax,[bp+4]
push ax
call DrawRect
pop ax
pop bp
ret 8
DrawButtonNoSelected endp
DrawButtonOnSelected proc ;(x [bp+4],y [bp+6],width [bp+8],height [bp+10])
push bp
mov bp,sp
push ax
;///////////////////////main window///////////////
mov ax,07h
push ax
mov ax,[bp+10]
push ax
mov ax,[bp+8]
push ax
mov ax,[bp+6]
push ax
mov ax,[bp+4]
push ax
call DrawRect
;////////////////////////////////////////////////
;///////////////////////Left Black///////////////
mov ax,00h
push ax
mov ax,[bp+10]
dec ax
push ax
mov ax,1
push ax
mov ax,[bp+6]
push ax
mov ax,[bp+4]
push ax
call DrawRect
;/////////////////////////////////////////////////
;//////////////////////Top Black//////////////////
mov ax,00h
push ax
mov ax,1
push ax
mov ax,[bp+8]
dec ax
push ax
mov ax,[bp+6]
push ax
mov ax,[bp+4]
push ax
call DrawRect
;/////////////////////////////////////////////////
;///////////////////////Left white////////////////
mov ax,0fh
push ax
mov ax,[bp+10]
sub ax,3
push ax
mov ax,1
push ax
mov ax,[bp+6]
inc ax
push ax
mov ax,[bp+4]
inc ax
push ax
call DrawRect
;/////////////////////////////////////////////////
;//////////////////////upper white////////////////
mov ax,0fh
push ax
mov ax,1
push ax
mov ax,[bp+8]
sub ax,3
push ax
mov ax,[bp+6]
inc ax
push ax
mov ax,[bp+4]
inc ax
push ax
call DrawRect
;///////////////////////////////////////////////
;/////////////////////right gray////////////////
mov ax,08h
push ax
mov ax,[bp+10]
sub ax,2
push ax
mov ax,1
push ax
mov ax,[bp+6]
inc ax
push ax
mov ax,[bp+4]
add ax,[bp+8]
sub ax,1
push ax
call DrawRect
;/////////////////////////////////////////////////
;/////////////////////right black/////////////////
mov ax,00h
push ax
mov ax,[bp+10]
push ax
mov ax,1
push ax
mov ax,[bp+6]
push ax
mov ax,[bp+4]
add ax,[bp+8]
sub ax,1
push ax
call DrawRect
;////////////////////////////////////////////////
;//////////////////////bottom gray///////////////
mov ax,08h
push ax
mov ax,1
push ax
mov ax,[bp+8]
sub ax,2
push ax
mov ax,[bp+6]
add ax,[bp+10]
sub ax,2
push ax
mov ax,[bp+4]
inc ax
push ax
call DrawRect
;////////////////////////////////////////////////
;/////////////////////bottom black///////////////
mov ax,00h
push ax
mov ax,1
push ax
mov ax,[bp+8]
push ax
mov ax,[bp+6]
add ax,[bp+10]
sub ax,1
push ax
mov ax,[bp+4]
push ax
call DrawRect
;////////////////////////////////////////////////
;/////////////////////Button left black/////////
mov ax,00h
push ax
mov ax,[bp+6]
add ax,4
inc ax
mov bx,ax
push bx
mov dx,[bp+4]
add dx,4
push dx
call DrawPoint
add bx,2
mov ax,[bp+10]
sub ax,7
shr ax,1
mov cl,al
dec cl
lop:
mov ax,00h
push ax
push bx
push dx
call DrawPoint
add bx,2
loop lop
;/////////////////////Button left black/////////
;////////////////////Button right black/////////
mov ax,00h
push ax
mov ax,[bp+6]
add ax,4
inc ax
mov bx,ax
push bx
mov dx,[bp+4]
add dx,[bp+8]
sub dx,5
push dx
call DrawPoint
add bx,2
mov ax,[bp+10]
sub ax,7
shr ax,1
mov cl,al
dec cl
lop1:
mov ax,00h
push ax
push bx
push dx
call DrawPoint
add bx,2
loop lop1
;///////////////////////////////////////////////
;////////////////////Button top black/////////
mov ax,00h
push ax
mov dx,[bp+6]
add dx,4
push dx
mov bx,[bp+4]
add bx,4
inc bx
push bx
call DrawPoint
add bx,2
mov ax,[bp+8]
sub ax,8
shr ax,1
mov cl,al
dec cl
mov ch,0
lop3:
mov ax,0h
push ax
push dx
push bx
call DrawPoint
add bx,2
loop lop3
;///////////////////////////////////////////////////
;////////////////////Button bottom black/////////
mov ax,00h
push ax
mov dx,[bp+6]
add dx,[bp+10]
sub dx,4
push dx
mov bx,[bp+4]
add bx,4
inc bx
push bx
call DrawPoint
add bx,2
mov ax,[bp+8]
sub ax,8
shr ax,1
mov cl,al
dec cl
mov ch,0
lop4:
mov ax,0h
push ax
push dx
push bx
call DrawPoint
add bx,2
loop lop4
;///////////////////////////////////////////////////
pop ax
pop bp
ret 8
DrawButtonOnSelected endp
;DrawBlackBorder proc ;(x,y,width,height,color) bp+4
DrawRect proc ;(x,y,width,height,color) bp+4
push bp
mov bp,sp
pusha
DrawLineV:
mov ax,[bp+4]
mov dx,[bp+8]
DrawLineH:
push word ptr[bp+12]
push word ptr[bp+6]
push ax
call DrawPoint
inc ax
dec dx
jnz DrawLineH
inc word ptr[bp+6]
dec word ptr[bp+10]
jnz DrawLineV
popa
pop bp
ret 10
DrawRect endp
DrawPoint proc near
push bp
mov bp,sp
pusha
mov ax,0a000h
mov es,ax
mov ax,[bp+06h]
shl ax,04h
mov bx,ax
shl ax,02h
add ax,bx
mov bx,[bp+04h]
mov cl,bl
shr bx,03h
add bx,ax ;offset=bx
mov ch,80h
and cl,07h
shr ch,cl ;mask=ch
;Set BMR(Bit Mask Register) - mask
mov dx,03ceh
mov al,08h
out dx,al
inc dx ;dx=03cfh
mov al,ch
out dx,al
;Load latch and Zero the pixel
sub al,al
xchg es:[bx],al
;Set MMR(Map Mask Register) - color
sub dx,0bh ;dx=03c4h
mov al,02h
out dx,al
mov al,[bp+08h]
inc dx ;dx=03c5h
out dx,al
;Set the pixel's value;
mov es:[bx],ch
;Reset BMR - 0ffh
add dx,09h ;dx=03ceh
mov al,08h
out dx,al
inc dx ;dx=03cfh
mov al,0ffh
out dx,al
;Reset MMR - 0fh
sub dx,0bh ;dx=03c4h
mov al,02h
out dx,al
mov al,0fh
inc dx ;dx=03c5h
out dx,al
;
popa
pop bp
ret 06
DrawPoint endp
DrawPointb proc ;(x,y,color)
push bp
mov bp,sp
pusha
mov dx,03C4h
mov al,02h
out dx,al
mov dx,03c5h
mov al,[bp+8]
out dx,al
mov ax,0280h
mov dx,[bp+6]
mul dx
add ax,[bp+4]
adc dx,0
mov cx,8
div cx
mov di,00h
add di,ax
mov ax,0a000h
mov es,ax
mov cl,dl
mov al,7fh
ror al,cl
and es:[di],al
mov al,80h
shr al,cl
or es:[di],al
popa
pop bp
ret 6
DrawPointb endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -