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

📄 ifc.asm

📁 学生成绩管理系统
💻 ASM
字号:
;ifc.asm文件为系统的界面显示模块。功能有显示开始画面、主界面(表格与菜单)和帮助信息。
extrn	pag:byte,findf:byte,frow:byte
public	ifc,start,help												;主界面模块ifc,开始界面模块start,帮助信息模块help
stacksg segment stack 's'
	dw 64 dup('st')
stacksg ends
data	segment public
w1	db 0dh,0ah,'                       Students Grades Management System$'					;开始画面
w2	db 0dh,0ah,'                             Developed by Li Cheng$'
w3	db 0dh,0ah,'              Class 12110503 Computer Science & Technology School$'
w4	db 0dh,0ah,'                        Beijing Institute of Technology$'
w5	db 0dh,0ah,'    Welcome to Use! Press Enter to Input Data, Press Esc to Close Programme.$'
w6	db 0dh,0ah,'     Pay Attention to the Menu Bar at the Bottom. Press F8 for More Helps.$'
w7	db 0dh,0ah,'                          Press Any Key to Continue...$'
w8	db 0dh,0ah,'                      Copyright (C) 2008 L1Chn SGMS-ver1.1$'
w9	db 0dh,0ah,'                              All Rights Rserved$'
m	db ?
n	db ?
nn	db ?
cnt	db '   $'												;表头
t1	db 'No.$'
t2	db 'StuNumber $'
t3	db 'Name  $'
t4	db 'ASM$'
t5	db 'CT $'
t6	db 'OS $'
t7	db 'TOT$'
t8	db 'POS$'
menu	db 'NEW-F1 | LOAD-F2 | SAVE-F3 | SORT-F4 | FIND-F5 | DEL-F6 | HELP-F7 | EXIT-F8'			;菜单
ml	equ $-menu
h1	db '	TableHead:$',0dh,0ah										;帮助信息
h11	db 0dh,0ah,'ASM  --Assembly Programming Language$',0dh,0ah
h12	db 0dh,0ah,'CT   --Compsing Theory of Computer$',0dh,0ah
h13	db 0dh,0ah,'OS   --Operating System$',0dh,0ah
h2	db 0dh,0ah,0dh,0ah,'	Operations:$',0dh,0ah
h21	db 0dh,0ah,'Input--Enter/Space/Insert	--Input in Cursor Blank$'
h22	db 0dh,0ah,'Close--Esc/End/F8		--Exit and Close Programme$'
h23	db 0dh,0ah,'NEW  --F1/n			--Create a New Table$'
h24	db 0dh,0ah,'LOAD --F2/l			--Load Data from an Existing File$'
h25	db 0dh,0ah,'SAVE --F3/s			--Save Data to a File$'
h26	db 0dh,0ah,'SORT --F4/F9			--Sort Data as Total Points$'
h27	db 0dh,0ah,'FIND --F5/f			--Search Data as Student Name$'
h28	db 0dh,0ah,'DEL  --F6/d			--Delete Data in Appointed Line$'
h29	db 0dh,0ah,'HELP --F7/h			--View Helps$'
h210	db 0dh,0ah,'Del  --Delete			--Delete Data in Cursor Line$'
h211	db 0dh,0ah,'Back --Home			--Back to Start Window$'
h3	db 0dh,0ah,0dh,0ah,'	Cursor:$',0dh,0ah
h31	db 0dh,0ah,'Up   --UpArrow			--Move Cursor Up 1 Line$'
h32	db 0dh,0ah,'Down --DownArrow		--Move Cursor Down 1 Line$'
h33	db 0dh,0ah,'Left --LeftArrow/Backspace	--Move Cursor Left 1 Column$'
h34	db 0dh,0ah,'Right--RightArrow/Tab		--Move Cursor Right 1 Column$'
h35	db 0dh,0ah,'PageU--PgUp			--Move Cursor Up 10 Lines$'
h36	db 0dh,0ah,'PageD--PgDn			--Move Cursor Down 10 Lines$'
h4	db '	Rules:$',0dh,0ah
h41	db 0dh,0ah,'1.Sort, Find and Delete Operations Can Only Aim to Lines with Integrated Data.$',0dh,0ah
h42	db 0dh,0ah,'2.Points Sum Automatically Operated, Points Range: 0 ~ 255.$',0dh,0ah
h43	db 0dh,0ah,'3.Lines of Data Range: 0 ~ 100, Page Range: 1 ~ 10.$',0dh,0ah
h44	db 0dh,0ah,'4.The Difference between DEL and Del: DEL Function Can Delete Data after$',0dh,0ah
h45	db 0dh,0ah,'  Inputting the No. of the Deleted Line; while Del Function can Delete Data$',0dh,0ah
h46	db 0dh,0ah,'  in the Current Line where Cursor is Located Presently.$',0dh,0ah
h47	db 0dh,0ah,'5.The SGMS Can Load and Save 30 Items of Data at Most.$',0dh,0ah
hp	db ?
data	ends
code	segment

start	proc far												;开始画面
	assume cs:code,ds:data,es:data,ss:stacksg
	mov ax,data
	mov ds,ax
	mov es,ax

	mov ah,0
	mov al,3
	int 10h

	mov ah,6
	mov al,0
	mov bh,0f1h
	mov cx,0
	mov dx,184fh
	int 10h

	mov ah,2
	mov bh,0
	mov dh,0
	mov dl,0
	int 10h

	mov ah,2
	mov cx,5
sl1:	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h
	loop sl1
	mov ah,9
	lea dx,w1
	int 21h
	lea dx,w2
	int 21h
	lea dx,w3
	int 21h
	lea dx,w4
	int 21h

	mov ah,2
	mov cx,5
sl2:	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h
	loop sl2
	mov ah,9
	lea dx,w5
	int 21h
	lea dx,w6
	int 21h

	mov ah,2
	mov cx,1
sl3:	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h
	loop sl3
	mov ah,9
	lea dx,w7
	int 21h

	mov ah,2
	mov cx,1
sl4:	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h
	loop sl3
	mov ah,9
	lea dx,w8
	int 21h
	lea dx,w9
	int 21h

	mov ah,0
	int 16h

	ret
start	endp

ifc	proc far												;主界面
	assume cs:code,ds:data,es:data,ss:stacksg
	mov ax,data
	mov ds,ax
	mov es,ax

	mov ah,0
	mov al,3
	int 10h

	mov ah,6
	mov al,0
	mov bh,1fh
	mov cx,0
	mov dx,184fh
	int 10h

	mov ah,2												;表格框架第一行
	mov cx,20
s1:	mov dl,32
	int 21h
	loop s1
	mov dl,0c9h
	int 21h
	mov cx,3
fn:	mov dl,0cdh
	int 21h
	loop fn
	mov dl,0d1h
	int 21h
	mov cx,10
fnam:	mov dl,0cdh
	int 21h
	loop fnam
	mov dl,0d1h
	int 21h
	mov cx,6
fno:	mov dl,0cdh
	int 21h
	loop fno
	mov m,4
lopm1:	mov dl,0d1h
	int 21h
	mov cx,3
fo:	mov dl,0cdh
	int 21h
	loop fo
	dec m
	cmp m,0
	jnz lopm1
	mov dl,0bbh
	int 21h
	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h

	mov ah,2												;表头
	mov cx,20
s2:	mov dl,32
	int 21h
	loop s2
	mov dl,0bah
	int 21h
lsn:	mov ah,9
	lea dx,t1
	int 21h
	mov ah,2
	mov dl,0b3h
	int 21h
lsnam:	mov ah,9
	lea dx,t2
	int 21h
	mov ah,2
	mov dl,0b3h
	int 21h
lsno:	mov ah,9
	lea dx,t3
	int 21h
	mov ah,2
	mov dl,0b3h
	int 21h
ls1:	mov ah,9
	lea dx,t4
	int 21h
	mov ah,2
	mov dl,0b3h
	int 21h
ls2:	mov ah,9
	lea dx,t5
	int 21h
	mov ah,2
	mov dl,0b3h
	int 21h
ls3:	mov ah,9
	lea dx,t6
	int 21h
	mov ah,2
	mov dl,0b3h
	int 21h
ls4:	mov ah,9
	lea dx,t7
	int 21h
	mov ah,2
	mov dl,0bah
	int 21h
	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h

	mov al,pag
	mov bl,10
	mul bl
	mov n,al
	mov nn,0
lopn:														;表格框架第二行至倒数第二行
	inc n
	mov ah,2
	mov cx,20
s3:	mov dl,32
	int 21h
	loop s3
	mov dl,0c7h
	int 21h
	mov cx,3
sn:	mov dl,0c4h
	int 21h
	loop sn
	mov dl,0c5h
	int 21h
	mov cx,10
snam:	mov dl,0c4h
	int 21h
	loop snam
	mov dl,0c5h
	int 21h
	mov cx,6
sno:	mov dl,0c4h
	int 21h
	loop sno
	mov m,4
lopm2:	mov dl,0c5h
	int 21h
	mov cx,3
so:	mov dl,0c4h
	int 21h
	loop so
	dec m
	cmp m,0
	jnz lopm2
	mov dl,0b6h
	int 21h
	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h

	mov ah,2
	mov cx,20
s4:	mov dl,32
	int 21h
	loop s4
	mov dl,0bah
	int 21h
	call ono												;显示序号
tn:	mov ah,9
	lea dx,cnt
	int 21h
	mov ah,2
	mov dl,0b3h
	int 21h
	mov cx,10
tnam:	mov dl,32
	int 21h
	loop tnam
	mov dl,0b3h
	int 21h
	mov cx,6
tno:	mov dl,32
	int 21h
	loop tno
	mov m,4
lopm3:	mov dl,0b3h
	int 21h
	mov cx,3
to:	mov dl,32
	int 21h
	loop to
	dec m
	cmp m,0
	jnz lopm3
	mov dl,0bah
	int 21h
	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h

	inc nn
	cmp nn,9
	jna lopn

	mov ah,2												;表格框架最后一行
	mov cx,20
s5:	mov dl,32
	int 21h
	loop s5
	mov dl,0c8h
	int 21h
	mov cx,3
ln:	mov dl,0cdh
	int 21h
	loop ln
	mov dl,0cfh
	int 21h
	mov cx,10
lnam:	mov dl,0cdh
	int 21h
	loop lnam
	mov dl,0cfh
	int 21h
	mov cx,6
lno:	mov dl,0cdh
	int 21h
	loop lno
	mov m,4
lopm4:	mov dl,0cfh
	int 21h
	mov cx,3
lo:	mov dl,0cdh
	int 21h
	loop lo
	dec m
	cmp m,0
	jnz lopm4
	mov dl,0bch
	int 21h
	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h

	mov dl,0dh
	int 21h
	mov dl,0ah
	int 21h

men:	mov ah,6												;菜单栏
	mov al,0
	mov bh,70h
	mov ch,24
	mov cl,0
	mov dh,24
	mov dl,79
	int 10h

	mov ah,13h
	mov al,1
	mov bh,0
	mov bl,70h
	mov cx,ml
	mov dh,24
	mov dl,2
	lea bp,menu
	int 10h

	cmp findf,0												;显示查找标志(如果找到)
	jz quit
	mov ah,2
	mov bh,0
	mov dh,frow
	mov dl,19
	int 10h
	mov ah,2
	mov dl,16
	int 21h

quit:	ret
ifc	endp

ono	proc													;计算并显示序号的子函数ono,根据页号pag,计算起始序号(pag*10+1),转换为ASCII码输出
	mov al,n
	mov bl,10
	lea si,cnt
	mov [si],' '
	mov [si+1],' '
	lea si,cnt+2
cno:
	xor ah,ah
	div bl
	add ah,30h
	mov [si],ah
	dec si
	cmp al,0
	jnz cno

	ret
ono	endp

help	proc far												;帮助信息
	assume cs:code,ds:data,es:data,ss:stacksg
	mov ax,data
	mov ds,ax
	mov es,ax
	mov hp,0
hj1:	cmp hp,0
	jnz p2

p1:	mov ah,0
	mov al,3
	int 10h

	mov ah,6
	mov al,0
	mov bh,0f1h
	mov cx,0
	mov dx,184fh
	int 10h

	mov ah,2
	mov bh,0
	mov dh,0
	mov dl,0
	int 10h

	mov ah,9
	lea dx,h1
	int 21h
	lea dx,h11
	int 21h
	lea dx,h12
	int 21h
	lea dx,h13
	int 21h
	lea dx,h2
	int 21h
	lea dx,h21
	int 21h
	lea dx,h22
	int 21h
	lea dx,h23
	int 21h
	lea dx,h24
	int 21h
	lea dx,h25
	int 21h
	lea dx,h26
	int 21h
	lea dx,h27
	int 21h
	lea dx,h28
	int 21h
	lea dx,h29
	int 21h
	lea dx,h210
	int 21h
	lea dx,h211
	int 21h
	lea dx,h3
	int 21h
	lea dx,h31
	int 21h
	lea dx,h32
	int 21h
	lea dx,h33
	int 21h
	lea dx,h34
	int 21h
	lea dx,h35
	int 21h
	lea dx,h36
	int 21h
	jmp hj2

p2:	mov ah,0
	mov al,3
	int 10h

	mov ah,6
	mov al,0
	mov bh,0f1h
	mov cx,0
	mov dx,184fh
	int 10h

	mov ah,2
	mov bh,0
	mov dh,0
	mov dl,0
	int 10h
	
	mov ah,9
	lea dx,h4
	int 21h
	lea dx,h41
	int 21h
	lea dx,h42
	int 21h
	lea dx,h43
	int 21h
	lea dx,h44
	int 21h
	lea dx,h45
	int 21h
	lea dx,h46
	int 21h
	lea dx,h47
	int 21h

hj2:	mov ah,0												;响应键盘
	int 16h

	cmp ah,48h	;UpArrow
	jz up
	cmp ah,50h	;DownArrow
	jz down
	cmp ah,4bh	;LeftArrow
	jz up
	cmp ah,4dh	;RightArrow
	jz down
	cmp ah,49h	;PgUp
	jz up
	cmp ah,51h	;PgDn
	jz down
	jmp hqu

up:	cmp hp,0
	jz sta
	mov hp,0
	jmp hj1

down:	cmp hp,1
	jz sta
	mov hp,1
	jmp hj1

sta:	mov ah,14
	mov al,7
	mov bh,0
	int 10h
	jmp hj1

hqu:	ret

help	endp

code	ends
	end

⌨️ 快捷键说明

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