;============================================================== Buildfile : push ax push cx push dx
mov ah, 3ch mov cx, 00 lea dx, FName int 21h
jc CreateFileError mov FileHandle, ax jmp CreateFileOk CreateFileError: mov ah, 09h
mov dx, offset CreateFileError int 21h CreateFileOk: pop dx pop cx pop ax ret
WriteToFile: push ax push bx push cx push dx push di push si
lea di, [si].SName mov dx, di add dx, 2
mov cl, [di+1] mov ch, 0
mov bx,FileHandle mov ah, 40h int 21h
jc WriteFileError call WriteSpace
lea di, [si].SNumber mov dx, di
add dx, 2
mov cl, [di+1] mov ch, 0
mov bx, FileHandle mov ah, 40h int 21h
jc WriteFileError call WriteSpace
lea di, [si].ChineseScore mov dx, di add dx, 2
mov cl, [di+1] mov ch, 0
mov bx, FileHandle mov ah, 40h int 21h
jc WriteFileError call WriteSpace
lea di, [si].MathScore mov dx, di add dx, 2
mov cl, [di+1] mov ch, 0
mov bx, FileHandle mov ah, 40h int 21h
jc WriteFileError call WriteSpace
lea di, [si].EnglishScore mov dx, di add dx, 2
mov cl, [di+1] mov ch, 0
mov bx, FileHandle mov ah, 40h int 21h
jc WriteFileError call WriteSpace
lea di, [si].SumScore mov dx, di
add dx, 2
mov cl, [di+1] mov ch, 0
mov bx, FileHandle mov ah, 40h int 21h
jc WriteFileError
call WriteEndLine
jmp WriteFileOk WriteFileError:
lea dx,WriteFileError mov ah, 09h int 21h WriteFileOk: pop si pop di pop dx pop cx pop bx pop ax ret
;******************************************************************** WriteSpace: mov cx, 2
lea dx, FileSpace mov bx, FileHandle mov ah, 40h int 21h ret
;******************************************************************** WriteEndLine: mov cx, 2
lea dx, OtherLine mov bx, FileHandle mov ah, 40h int 21h ret CloseFile:
mov ah, 40h
mov bx, FileHandle mov cx, 2
lea dx, EndOfFile
int 21h
mov ah, 3eh
mov bx, FileHandle int 21h ret
;============================================================== ;子程序名:GetSum
;功能:用于计算出每个学生的各科成绩的总分
;============================================================== GetSum proc near push ax push di push si push bx push cx
lea di,EnglishScore lea si,SumScore
mov cx,10 mov al,0 LoopSum:
mov ah,0 mov al,[di]
mov word ptr[si],ax inc di add si,2 loop LoopSum
lea di,ChineseScore lea si,SumScore mov cx,10 mov al,0 LoopSum1:
mov ah,0 mov al,[di]
add word ptr[si],ax inc di add si,2
loop LoopSum1 lea di,MathScore lea si,SumScore mov cx,10 mov al,0 LoopSum2:
mov ah,0 mov al,[di]
add word ptr[si],ax inc di add si,2
loop LoopSum2 pop cx pop bx pop si pop di pop ax ret
GetSum endp
;============================================================== ;子程序名:SumAverage
;功能:用于计算出平均成绩,并输出总分高于平均分的学生记录
;============================================================== SumAverage proc near push ax push bx push cx push dx push si
mov cl, NumbersOfStudent mov ch, 0 mov bx, cx mov ax, 0 mov dx, 0
mov si, offset SumScore AverageLoop:
add ax, word ptr [si] adc dx, 0 add si, 2
loop AverageLoop
div bx
mov Average, ax
;输出高于平均成绩的同学
mov dx, offset ShowBigThanAverage mov ah, 09h