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

📄 form.asm

📁 学分管理系统的分析
💻 ASM
字号:
include macro.lib
extrn  fill:far,rectangle:far,horizontal:far,vertical:far
extrn  clearscreen_in:far
extrn  printf:far,printf1:far,printf2:far,printf3:far,putchar:far,putint:far
extrn  store_m:far,restore_m:far
extrn  busy:byte,mousex:word,mousey:word,num_scroll:word
extrn  chinese_nopass:word,maths_nopass:word,line:word,boy_num:word,lady_num:word
public try_form,write_one_record,draw_table,draw_ge,write_form1,tongji_form1
public tongji_form2,write_form2,draw_form1,draw_form2,restore_line
data   segment  para  public  'data'
string1  db '系号',0,0
string2  db '学号',0,0
string3  db '姓名',0,0
string4  db '性别',0,0
string5  db '语文',0,0
string6  db '数学',0,0
string7  db '总分',0,0
string8  db '平均分',0,0
string9  db '名次',0,0

form1_heading1  db  '系号',0,0
form1_heading2  db  '语文不及格人数',0,0
form1_heading3  db  '数学不及格人数',0,0

form2_heading1  db  '系号',0,0
form2_heading2  db  '男生人数',0,0
form2_heading3  db  '女生人数',0,0
form2_heading4  db  '总数',0,0
data   ends

code   segment  public  'code'
	assume  ds:data,cs:code
.386
draw_table proc  far
	pusha
	rect  120,79,200,99,<RGB 225,128,0>
	out_hz	   140,82,string1,<RGB 255,255,255>
	rect 202,79,300,99, <RGB 225,128,0>
	out_hz	   240,82,string2,<RGB 255,255,255>
	rect  302,79,400,99,<RGB 225,128,0>
	out_hz	   345,82,string3,<RGB 255,255,255>
	rect 402,79,450,99, <RGB 225,128,0>
	out_hz	   415,82,string4,<RGB 255,255,255>
	rect  452,79,500,99, <RGB 225,128,0>
	out_hz	   465,82,string5,<RGB 255,255,255>
	rect 502,79,550,99, <RGB 225,128,0>
	out_hz	   515,82,string6,<RGB 255,255,255>
	rect  552,79,600,99, <RGB 225,128,0>
	out_hz	   565,82,string7,<RGB 255,255,255>
	rect 602,79,670,99, <RGB 225,128,0>
	out_hz	   620,82,string8,<RGB 255,255,255>
	rect  672,79,730,99,<RGB 225,128,0>
	out_hz	   690,82,string9,<RGB 255,255,255>
	call   draw_ge
	popa
	ret
draw_table  endp	
;画表格
draw_ge  proc  far
	pusha

	mov  busy,1
	call  restore_m
	MOV   SI, P_COPY
	background  120,100,730,500,<RGB 50,50,50>
	mov   ax, 120
	mov   bx, 120
	mov   bp, 0h
	mov   cx, 611
	.WHILE	AX < 500
	call  horizontal
	add   ax, 20
	.ENDW
	mov   ax, 100
	mov   bp, 0h
	mov   cx, 401
	mov   bx, 201
	call  vertical
	mov   bx, 301
	call  vertical
	mov   bx, 401
	call  vertical
	mov   bx,451
	call  vertical
	mov   bx,501
	call  vertical
	mov   bx, 551
	call  vertical
	mov   bx, 601
	call  vertical
	mov   bx, 671
	call  vertical
	call store_m

	mov  busy,0
	popa
	ret
draw_ge  endp
;========================================================================	 
;入口参数:bx---num_scroll
restore_line  proc  far
	pusha

	mov  busy,1
	call  restore_m
	mov  ax,num_scroll
	mov  bx,20
	mul  bx
	add  ax,100
	mov  cx,ax
	add  cx,20
	mov  bx,121
	mov  dx,729
	dec  cx
	inc  ax	
	mov   si, P_COPY
	RGB 50,50,50
	call     fill	
	
	mov   ax, 100
	mov   bp, 0h
	mov   cx, 401
	mov   bx, 201
	call  vertical
	mov   bx, 301
	call  vertical
	mov   bx, 401
	call  vertical
	mov   bx,451
	call  vertical
	mov   bx,501
	call  vertical
	mov   bx, 551
	call  vertical
	mov   bx, 601
	call  vertical
	mov   bx, 671
	call  vertical
	call store_m

	mov  busy,0
	popa
	ret
restore_line  endp
;========================================================================	 
;向表格写一个记录
;入口参数:di,该记录的指针,bx,所在行
write_one_record   proc  far
	pusha
	push   ds
	push   es
	mov    ax, 150
	mov    si, P_COPY
	RGB    0,255,0
	call   printf1       ;输出系号
	add    di, 4
	mov    ax, 205
	call   printf1	    ;输出学号
	add    di, 9
	mov    ax, 305
	call   printf1        ;输出姓名
	add    di, 10
	mov    cx, bx
	push   bx
	mov    al, [di]
	mov    bx, 420
	call   putchar        ;输出性别
	pop    bx
	inc    di
	
	mov    ax, 470         ;输出语文成绩
	mov    dl, [di]
	mov    dh, 0
	.IF    DX < 60
	RGB    255,0,0
	.ENDIF
	call   putint

	inc    di
	RGB    0,255,0
		
	mov    ax, 520	      ;输出数学成绩
	mov    dl, [di]
	mov    dh, 0
	.IF    DX < 60
	RGB   255,0,0
	.ENDIF
	call   putint
	inc    di
	RGB   0,255,0
	
	mov    ax, 570		;输出总分
	mov    dl, [di]
	mov    dh, 0
	call   putint
	inc    di
	
	mov    ax, 620           ;输出平均分
	mov    dl, [di]
	mov    dh,  0
	.IF    DX < 60
	RGB    255,0,0
	.ENDIF
	call   putint
	inc    di
	
	mov    cx, bx
	push   bx
	mov    bx, 644         ;输出小数点
	mov    al, '.'
	call   putchar
	pop    bx
	mov    ax,652
	mov    dl, [di]
	mov    dh, 0
	call   putint
	inc    di
	
	mov    ax, 690
	mov    dl, [di]
	mov    dh, 0
	call   putint
	pop    es
	pop    ds
	popa
	ret
write_one_record   endp	
	
	
;========================================================================	 

try_form  proc   far
	push  ds
	mov   ax, data
	mov   ds, ax
	setxy 300,100,500,400
	call  clearscreen_in
        
        call   tongji_form2
        
        PAUSE
        
        pop   ds
        ret
try_form  endp        
;=======================================================================
tongji_form1   proc  far
        pusha
        setxy  300,100,500,400
	call   clearscreen_in
        mov    SI, P_COPY
	rect   250,79,349,99,<RGB 225,128,0>
	out_hz 290,82,form1_heading1,<RGB 255,255,255>
	rect   351,79,499,99,<RGB 225,128,0>
	out_hz 370,82,form1_heading2,<RGB 255,255,255>
	rect   501,79,650,99,<RGB 255,128,0>
	out_hz 520,82,form1_heading3,<RGB 255,255,255>
	call   draw_form1
	popa
	ret
tongji_form1   endp
draw_form1    proc   far
	pusha
	mov    busy, 1
	mov    si,  P_COPY
	call   restore_m
	background 250,100,650,500,<RGB 50,50,50>
        mov    ax, 100
        mov    bp, 0H
        mov    bx, 250
	mov    cx, 400
        .WHILE  AX < 500
        CALL   horizontal
        add    ax,  20
        .ENDW
        
        mov     ax,100
        mov     bx,350
        mov     cx,400
        call    vertical
        
        mov     ax, 100
	mov	bx, 500
        mov     cx, 400
	call	vertical
	call	store_m
	mov	busy,0
        popa
        ret
draw_form1	  endp


;输出一行统计结果
;入口参数:chinese_nopass,maths_nopass,line,DI----指向系号字符串
write_form1     proc     far
	pusha
	mov     bx,  line
	mov     ax,  290
	mov     si,  P_COPY
	RGB     0,   255,0
	CALL    printf1
	add	ax,  140
	mov     dx,  chinese_nopass
	call    putint
	add     ax , 150
	mov     dx,  maths_nopass
	call    putint
	popa
	ret
write_form1     endp	
     
;=======================================================================
tongji_form2   proc  far
        pusha
        setxy  300,100,500,400
        call   clearscreen_in

        mov    SI, P_COPY
	rect   250,79,349,99,<RGB 225,128,0>
	out_hz 290,82,form2_heading1,<RGB 255,255,255>
	rect   351,79,449,99,<RGB 225,128,0>
	out_hz 370,82,form2_heading2,<RGB 255,255,255>
	rect   451,79,550,99,<RGB 255,128,0>
	out_hz 470,82,form2_heading3,<RGB 255,255,255>
        rect   551,79,650,99,<RGB 225,128,0>
        out_hz 570,82,form2_heading4,<RGB 255,255,255>
	call   draw_form2
	popa
	ret
tongji_form2   endp
draw_form2     proc   far
	pusha
	mov    busy, 1
	call   restore_m
	mov    si,  P_COPY
	background 250,100,650,500,<RGB 50,50,50>
        mov    ax, 100
        mov    bp, 0H
        mov    bx, 250
	mov    cx, 400
        .WHILE  AX < 500
        CALL   horizontal
        add    ax,  20
        .ENDW
     
        mov     ax,100
        mov     bx,350
        mov     cx,400
        .WHILE  BX < 650
        call    vertical
        add     bx, 100
        .ENDW
        
	call	store_m
	mov	busy,0
        popa
        ret
draw_form2	  endp

;输出一行统计结果
;入口参数:boy_num,lady_num,line,DI----指向系号字符串

write_form2	proc	 far
	pusha
	mov     bx,  line
	mov     ax,  290
	mov     si,  P_COPY
	RGB     0,   255,0
	CALL    printf1
	add     ax,  100
	mov     dx,  boy_num
	call    putint
	add     ax , 100
	mov     dx,  lady_num
	call    putint
	add     ax,  100
	add     dx,  boy_num
	call    putint
	popa
	ret
write_form2	endp
	

;=======================================================================


code    ends
	end	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -