统计90分以上人数、不及格人数、输出最高分(数据在数据段中定义)
数据:35,26,90,80,92,52,93,65,73,25,86,98,66,88,37,96,66,74,26,84,34,67,89,38
汇编 统计90分以上人数
答案:1 悬赏:40 手机版
解决时间 2021-01-02 17:34
- 提问者网友:原来太熟悉了会陌生
- 2021-01-02 03:19
最佳答案
- 五星知识达人网友:第幾種人
- 2021-01-02 04:20
data segment
credit db 35,26,90,80,92,52,93,65,73,25,86,98,66,88,37,96,66,74,26,84,34,67,89,38
len equ $-credit;成绩个数
str1 db ">90:$";大于90的个数提示
num1 dw 0;大于90的个数
str2 db "<60:$";小于60的个数提示
num2 dw 0;小于60的个数
str3 db "max:$";最大值的提示
max dw 0;最大值
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
;---统计大于90和小于60的个数,分别存于num1和num2中---
mov si,0
mov cx,len
loop1:
cmp credit[si],90
jg m1
cmp credit[si],60
jl m2
jmp m3
m1:
add num1,1
jmp m3
m2:
add num2,1
jmp m3
m3:
add si,1
loop loop1
;------------------------------------------------------
;--------------找出最大的数存于max中-----------------
mov cx,len-1
mov si,0
mov bl,credit[len-1]
loop2:
cmp credit[si],bl
jg m4
jmp m5
m4:
mov bl,credit[si]
jmp m5
m5:
inc si
loop loop2
mov bh,0
mov max,bx
;---------------------------------------------------
;以下是数据显示部分,均采用三位数显示,如93则显示093
;--------显示大于90的个数
;提示
mov dx,offset str1
mov ah,09h
int 21h
;个数显示
mov bx,num1
call bini
call crlf
;--------------------------
;--------显示小于60的个数
mov dx,offset str2
mov ah,09h
int 21h
mov bx,num2
call bini
call crlf
;--------------------------
;--------显示最大的数
mov dx,offset str3
mov ah,09h
int 21h
mov bx,max
call bini
;--------------------------
mov ah,4ch
int 21h
;----------------------------
;针对多位数,依次分解,
;然后输出,从最高位开始输出
;为了更好的理解此段程序,
;最好拿具体数据比如111代入,
;查看程序的执行流程
bini proc near
mov cx,100d
call bin
mov cx,10d
call bin
mov cx,1d
call bin
ret
bini endp
bin proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,02h
int 21h
ret
bin endp
;--------------------------
;----回车换行程序------
crlf proc near
mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
crlf endp
;---------------------
code ends
end start
credit db 35,26,90,80,92,52,93,65,73,25,86,98,66,88,37,96,66,74,26,84,34,67,89,38
len equ $-credit;成绩个数
str1 db ">90:$";大于90的个数提示
num1 dw 0;大于90的个数
str2 db "<60:$";小于60的个数提示
num2 dw 0;小于60的个数
str3 db "max:$";最大值的提示
max dw 0;最大值
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
;---统计大于90和小于60的个数,分别存于num1和num2中---
mov si,0
mov cx,len
loop1:
cmp credit[si],90
jg m1
cmp credit[si],60
jl m2
jmp m3
m1:
add num1,1
jmp m3
m2:
add num2,1
jmp m3
m3:
add si,1
loop loop1
;------------------------------------------------------
;--------------找出最大的数存于max中-----------------
mov cx,len-1
mov si,0
mov bl,credit[len-1]
loop2:
cmp credit[si],bl
jg m4
jmp m5
m4:
mov bl,credit[si]
jmp m5
m5:
inc si
loop loop2
mov bh,0
mov max,bx
;---------------------------------------------------
;以下是数据显示部分,均采用三位数显示,如93则显示093
;--------显示大于90的个数
;提示
mov dx,offset str1
mov ah,09h
int 21h
;个数显示
mov bx,num1
call bini
call crlf
;--------------------------
;--------显示小于60的个数
mov dx,offset str2
mov ah,09h
int 21h
mov bx,num2
call bini
call crlf
;--------------------------
;--------显示最大的数
mov dx,offset str3
mov ah,09h
int 21h
mov bx,max
call bini
;--------------------------
mov ah,4ch
int 21h
;----------------------------
;针对多位数,依次分解,
;然后输出,从最高位开始输出
;为了更好的理解此段程序,
;最好拿具体数据比如111代入,
;查看程序的执行流程
bini proc near
mov cx,100d
call bin
mov cx,10d
call bin
mov cx,1d
call bin
ret
bini endp
bin proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,02h
int 21h
ret
bin endp
;--------------------------
;----回车换行程序------
crlf proc near
mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
crlf endp
;---------------------
code ends
end start
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯