datareasegment
englishdw10dup(?)
mathematicsdw10dup(?)
physicaldw10dup(?)
rankdw10dup(?)
rank1dw10dup(?)
rank2dw10dup(?)
count1dw?
count2dw?
count3dw?
mess1db'english?$'
mess2db'mathematics?$'
mess3db'physical?$'
mess4db13,10,'InputError!',13,10,'$'
mess5db'Rank:$'
mess6db'studentgrademanagementsystem',0ah,0dh,'$'
datareaends
showmacroaddrs
leadx,addrs
movah,9
int21h
endm
prognamsegment
mainprocfar
assumecs:prognam,ds:datarea
START:
;setupstackforreturn
pushds
subax,ax
pushax
movax,datarea
movds,ax
callclear
movah,2
movdh,1
movdl,8
movbh,0
int10h
showmess6
callinput1
callrankp
calloutput1
callinput2
callrankp1
calloutput2
callinput3
callrankp2
calloutput3
ret
mainendp
input1procnear
leadx,mess1
movah,09
int21h
movsi,0
movcount1,0
enter:
calldecibin
inccount1
cmpdl,','
jestore
cmpdl,13
jeexit2
jneerror
store:
movenglish[si],bx
addsi,2
jmpenter
error:
leadx,mess4
movah,09
int21h
exit2:
movenglish[si],bx
callcrlf
ret
input1endp
input2procnear
leadx,mess2
movah,09
int21h
movsi,0
movcount2,0
enter1:
calldecibin
inccount2
cmpdl,','
jestore1
cmpdl,13
jeexit3
jneerror1
store1:
movmathematics[si],bx
addsi,2
jmpenter1
error1:
leadx,mess4
movah,09
int21h
exit3:
movmathematics[si],bx
callcrlf
ret
input2endp
input3procnear
leadx,mess3
movah,09
int21h
movsi,0
movcount3,0
enter3:
calldecibin
inccount3
cmpdl,','
jestore2
cmpdl,13
jeexit4
jneerror3
store2:
movphysical[si],bx
addsi,2
jmpenter3
error3:
leadx,mess4
movah,09
int21h
exit4:
movphysical[si],bx
callcrlf
ret
input3endp
rankpprocnear
movdi,count1
movbx,0
loop1:
movax,english[bx]
mov
wordptrrank[bx],0
movcx,count1
leasi,english
next:
cmpax,[si]
jgno_count
incwordptrrank[bx]
no_count:
addsi,2
loopnext
addbx,2
decdi
jneloop1
ret
rankpendp
rankp1procnear
movdi,count2
movbx,0
loop2:
movax,mathematics[bx]
movwordptrrank1[bx],0
movcx,count2
leasi,mathematics
next1:
cmpax,[si]
jgno_count1
incwordptrrank1[bx]
no_count1:
addsi,2
loopnext1
addbx,2
decdi
jneloop2
ret
rankp1endp
rankp2procnear
movdi,count3
movbx,0
loop3:
&nbs