⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialog.asm

📁 高手所写模拟WINDOWS界面的汇编源码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	    
	    ;///////////////////////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 + -