?? zonghe.asm
字號:
print MACRO a
MOV AH,2
MOV DL,a
ADD DL,30h
INT 21h
ENDM
crlf MACRO
MOV AH,2
MOV DL,0dh
INT 21h
MOV AH,2
MOV DL,0ah
INT 21h
ENDM
data SEGMENT
mes1 DB 'please input grade: $'
mes2 DB 'no grade rank$'
mes3 DB ' $'
grade DB 50 DUP(?)
rank DB 50 DUP(1)
zancun DW ?
count DW ?
no DB ?
data ENDS
code SEGMENT
ASSUME CS:code,DS:data
start: MOV AX,data
MOV DS,AX
MOV AH,9
MOV DX,OFFSET mes1
INT 21h
CALL input
crlf
CALL compare
crlf
MOV AH,9
MOV DX,OFFSET mes2
INT 21h
crlf
CALL output
MOV AH,1
INT 21h
MOV AH,4ch
INT 21h
input PROC
LEA SI,grade
shu: MOV AH,01h
INT 21h
CMP AL,0dh
JE exit
SUB AL,30h
SHL AX,1
MOV BX,AX
SHL AX,1
SHL AX,1
ADD BX,AX
MOV AH,01h
INT 21h
SUB AL,30h
ADD AL,BL
MOV [SI],AL
INC SI
MOV AH,2
MOV DL,20h
INT 21h
INC count
LOOP shu
exit: RET
input ENDP
compare PROC
MOV CX,count
LEA SI,grade
MOV DI,0
lop1:
MOV zancun,CX
MOV AL,[SI]
MOV CX,count
MOV BX,0
lop2:
CMP AL,grade[BX]
JL mczz
INC BX
LOOP lop2
JMP next
mczz:
INC rank[DI]
INC BX
LOOP lop2
next:
INC SI
INC DI
MOV CX,zancun
LOOP lop1
RET
compare ENDP
output PROC
MOV SI,0
MOV BX,0
MOV CX,count
shuchu:
MOV zancun,CX
CALL xh
MOV AH,9
MOV DX,OFFSET mes3
INT 21h
CALL cj
MOV AH,9
MOV DX,OFFSET mes3
INT 21h
CALL mc
crlf
MOV CX,zancun
LOOP shuchu
RET
output ENDP
cj PROC
MOV AX,0
MOV AL,grade[SI]
MOV CL,10
DIV CL
MOV DH,AH
print AL
print DH
INC SI
RET
cj ENDP
mc PROC
MOV AX,0
MOV AL,rank[BX]
MOV CL,10
DIV CL
MOV DH,AH
print AL
print DH
INC BX
RET
mc ENDP
xh PROC
ADD no,1
MOV AX,0
MOV AL,no
MOV CL,10
DIV CL
MOV DH,AH
print AL
print DH
RET
xh ENDP
code ENDS
END start
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -