📄 ifc.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 + -