📄 排序.asm
字号:
;PROGRAM TITLE GOES HERE--result
;******************************************
.model small
.stack 40h
;******************************************
.data
put db 'Please input scores:'
sc dw 100,?,100 dup(?)
s5 dw 0
s6 dw 0
s7 dw 0
s8 dw 0
s9 dw 0
s10 dw 0
num dw ?
max dw ?
min dw ?
ave dw ?
;*******************************************
.code
;-------------------------------------------
begin proc far
mov ax,@data
mov ds,ax
mov es,ax
lea dx,put
mov ah,02h
int 21h
lea dx,sc
mov ah,0ah
int 21h
call crlf
mov cx,'$'/2
mov num,cx
lea di,sc
call count
call crlf
call sort
ret
begin endp
;---------------------------------------------
count proc near
mov s5,0
mov s6,0
mov s7,0
mov s8,0
mov s9,0
mov s10,0
mov cx,num
lea bx,sc
AGAIN:
mov ax,ds:[bx]
cmp ax,60
jl five
cmp ax,70
jl six
cmp ax,80
jl seven
cmp ax,90
jl eight
cmp ax,100
jne nine
inc s10
jmp short change_addr
nine:inc s9
jmp short change_addr
eight:inc s8
jmp short change_addr
seven:inc s7
jmp short change_addr
six: inc s6
jmp short change_addr
five:inc s5
change_addr:
add bx,2
loop AGAIN
add s5,30h
call crlf
add s6,30h
call crlf
add s7,30h
call crlf
add s8,30h
call crlf
add s9,30h
call crlf
add s10,30h
call crlf
ret
count endp
;---------------------------------------------
sort proc near
mov bx,0
mov cx,num
loop1:
mov ax,sc[bx]
cmp ax,sc[bx+2]
jge continue
xchg ax,sc[bx+2]
mov sc[bx],ax
continue:add bx,2
loop loop1
mov ax,sc[bx]
mov min,ax
add min,30h
call crlf
mov ax,sc[bx+2]
call crlf
ret
sort endp
;-------------------------------------------------
crlf proc near
mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
crlf endp
;--------------------------------------------------
end begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -