📄 mycode_bubblesort.asm
字号:
NAME MYCODE_BUBBLESORT
GETCHAR MACRO
MOV AH,1
INT 21H
ENDM
DISPLAY MACRO CHAR
MOV DL,CHAR
MOV AH,2
INT 21H
ENDM
DISPLAY_STRING MACRO STRING
MOV DX,OFFSET STRING
MOV AH,9
INT 21H
ENDM
CRT_CR MACRO
MOV DL,0AH
MOV AH,2
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
ENDM
DATA1 SEGMENT
SCOREBUFFER DB 100 DUP(0)
SCOREBLOCK DB 10 DUP(0)
TEMPSCORE DW 0
DECIL DB 100,10,1
WARNING DB "THE SCORE YOU ENTERED IS NOT VALID. ENTER AN INTEGER BETWEEN 0 AND 100",0DH,0Ah,"$"
MSG1 DB "ENTER STUDENT No. 'S SCORE",0DH,0Ah,"$"
DATA1 ENDS
STACK SEGMENT PARA STACK'STACK'
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1,SS:STACK
START PROC FAR
BEGIN:
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA1
MOV DS,AX
MOV CX,0
MOV SI,0
MOV DI,0
MOV CX,10
INPUT: CRT_CR
CRT_CR
MOV MSG1[17],DI
ADD MSG1[17],30h
DISPLAY_STRING MSG1
MOV DH, SCOREBLOCK[DI-1]
GETCHAR
MOV SI,0
MOV TEMPSCORE,0
MOV BL,0
ONEINPUT:
GETCHAR
CMP AL,0DH
JE ONEINPUTEND
MOV AL,SCOREBUFFER[SI]
SUB SCOREBUFFER[SI],30H
CMP AL,0Dh
JE ONEINPUTEND
CMP AL,0DH
JE ENTER
CMP AL,30h
JL NOTNUM
CMP AL,39h
JG NOTNUM
JMP ISNUM
NOTNUM: MOV BL,1
ISNUM: SUB AL,30H
MUL DECIL[SI]
ADD TEMPSCORE,AX
INC SI
JMP ONEINPUT
ONEINPUTEND:
MOV AX,TEMPSCORE
MOV SCOREBLOCK[DI],AL
CRT_CR
CMP SI,0
JE INVALID
CMP SI,1
JNE SINOT1
MOV AL,SCOREBUFFER[0]
MOV SCOREBLOCK[DI],AL
SINOT1: CMP SI,2
JNE SINOT2
MOV AL,SCOREBUFFER[1]
MOV SCOREBLOCK[DI],AL
MOV AL,SCOREBUFFER[0]
MUL DECIL[1]
ADD SCOREBLOCK[DI],AL
SINOT2: CMP SI,3
JG INVALID
CMP BL,1
JE INVALID
MOV AL,SCOREBLOCK[DI]
CMP AL,100
JG INVALID
INC DI
JMP VALID
INVALID:
INC CX
DISPLAY_STRING WARNING
VALID: LOOP INPUT
ENTER:
START ENDP
CODE ENDS
END BEGIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -