⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shiyan6.asm

📁 主要是对成绩进行输入、排序、按名次输出的一个程序
💻 ASM
字号:
data segment
 prmpt db "Input scores here(SPACE to seperate the score,ENTER to stop):",'$'
 warning db "Invalid input! Input terminated!",'$'
 rnk db "Rank:",'$'
 erade dw 50 dup (?)
 rank dw 50 dup (?)
 count dw 0;定义总计数器
data ends
scoresrt segment
	assume cs:scoresrt,ds:data
 
;==============================================================
main proc far
 call input;进入成绩输入过程
 call rankp;进入成绩排序过程
 call output;进入名次输出过程
 mov ah,4ch;退出程序
 int 21H
main endp
;==============================================================
input proc near
 mov ax,data
 mov ds,ax
 mov dx,offset prmpt
 mov ah,9
 int 21H
 call crlf
 mov bp,0;数组指针初始化
cldcb:
 call decibin
 inc count;学生总人数计数器自增
 cmp al,20H;是空格否?
 jne notspce
 mov erade[bp],bx
 add bp,2
 jmp cldcb
notspce:
 cmp al,0dH
 je isetr
 call crlf
 mov ax,data
 mov ds,ax
 mov dx,offset warning
 mov ah,9
 int 21H
 call crlf
isetr:
 mov erade[bp],bx
 add bp,2
 call crlf
 ret
input endp
;==============================================================
output proc near
 mov dx,offset rnk
 mov ah,9
 int 21H
 mov bp,0
 mov cx,count
lpo:call binidec
 add bp,2
 loop lpo
 call crlf
 ret
output endp
;==============================================================
decibin proc near
 mov bx,0
newchar:
 mov ah,1
 int 21H
 sub al,30H
 jl exit
 cmp al,9
 jg exit
 cbw
 xchg ax,bx
 mov cx,10
 mul cx
 xchg ax,bx
 add bx,ax
 jmp newchar
exit:
 add al,30H;将al还原为ascii
 ret
decibin endp
rankp proc near
 mov si,0;外层遍历
 mov cx,count
loopo:
 mov di,0;计大于个数
 mov bp,0;内层遍历
 push cx
 mov cx,count
loopi:
 mov ax,erade[bp]
 cmp erade[si],ax
 jnb nb
 inc di
nb: add bp,2
 loop loopi
 pop cx
 inc di
 mov rank[si],di
 add si,2
 loop loopo
 ret
rankp endp
;==============================================================
binidec proc near
 push cx;保存cx
 mov ax,rank[bp]
 mov si,0
 mov cx,0aH
rotate:
 mov dx,0
 div cx
 add dl,30H
 push dx
 inc si
 cmp ax,0
 jne rotate
printit:
 pop dx
 mov ah,2
 int 21H
 dec si
 jnz printit
 mov dx,20H
 int 21H
 pop cx;还原cx
 ret
binidec endp
;==============================================================
crlf proc near
 mov dl,0dH
 mov ah,2
 int 21H
 mov dl,0aH
 mov ah,2
 int 21H
 ret
crlf endp
;==============================================================
scoresrt ends
end main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -