📄 taxis.asm
字号:
INCLUDE filefuc.mac
PUBLIC PAIXU
STACKS SEGMENT
DW 32 DUP(?) ;此处输入堆栈段代码
STACKS ENDS
DATA SEGMENT
GILF DB '0'
REPMM DW ?
NGF DW ?
GIFL DB ?
SHUZU DW 40 DUP(?)
DB '$'
FILENAME DB 'F:\first.txt',0
CT EQU $-BUFFER
FILEHANDLE DW 2
SAS DB 7
DB ?
DB 7 DUP(?)
BUF DB 10
DB ?
DB 10 DUP(?)
BUFS DB 1020 DUP(?)
DATA ENDS
CODES SEGMENT
PAIXU PROC FAR
ASSUME CS:CODES ,DS:DATA,SS:STACKS
PUSHREG
push DS
LOADDS DATA
OPENFILE FILENAME,FILEHANDLE
READFILE 1020,BUFS,FILEHANDLE
CLOSEFILE FILEHANDLE
MOV BX,-6
MOV DI,0
MOV AL,0
KKSS:
ADD BX,36
CMP BX,1020
JA PPSS
MOV CL,1
MOV DX,0
XOR AH,AH
MOV AL,BUFS[BX]
SUB AL,48
CMP AL,0
JL KK
CMP AL,9
JA KK
MUL CL
MOV DX,AX
MOV AL,CL
PUSH BX
MOV BL,10
MUL BL
POP BX
MOV CL,AL
KK: XOR AH,AH
DEC BX
MOV AL,BUFS[BX]
SUB AL,48
CMP AL,0
JL KKS
CMP AL,9
JA KKS
MUL CL
ADD DX,AX
MOV AL,CL
PUSH BX
MOV BL,10
MUL BL
POP BX
MOV CL,AL
KKS:
XOR AH,AH
DEC BX
MOV AL,BUFS[BX]
SUB AL,48
CMP AL,0
JL PPSS
CMP AL,9
JA PPSS
MUL CL
ADD DX,AX
MOV SHUZU[DI],DX
INC DI
INC DI
JMP KKSS
PPSS:;按总分进行排序
MOV CX,DI;将记录个数值赋给CX
MOV SI,0;初始化SI为0
MOV DI,0;初始化DI为0
MOV AX,CX
MOV BL,2
DIV BL
MOV CL,AL
XOR CH,CH
MOV BX,0
DEC CX
LP:
MOV AX,SHUZU[BX];初始化当前总分最大值
PUSH CX
LP1:INC BX
INC BX
MOV DX,SHUZU[BX]
CMP AX,DX;将当前总分最大值与后面的总分进行比较
JB X;若小于,则跳转
LOOP LP1
JMP DONE;一次扫描后跳转进行交换
X:
MOV AX,DX;当前记录赋于最大值
MOV DI,BX
LOOP LP1
DONE:;交换缓冲区对应记录
MOV AX,SHUZU[SI]
MOV BX,SHUZU[DI]
MOV SHUZU[SI],BX
MOV SHUZU[DI],AX
PUSH CX
PUSH SI
PUSH DI
MOV AX,SI
MOV BL,17
MUL BL
MOV SI,AX
MOV AX,DI
MUL BL
MOV DI,AX
MOV CX,30
CNSS:MOV BL,BUFS[SI]
MOV BH,BUFS[DI]
MOV BUFS[SI],BH
MOV BUFS[DI],BL
INC SI
INC DI
LOOP CNSS
POP DI
POP SI
POP CX
INC SI
INC SI
MOV DI,SI
MOV BX,SI
POP CX
LOOP LP
OPENFILE FILENAME,FILEHANDLE
WRITEFILE 1020,BUFS,FILEHANDLE
CLOSEFILE FILEHANDLE
POP DS
POPREG
RET
PAIXU ENDP
CODES ENDS
END PAIXU
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -