成绩分类 汇编

下面提供了100名同学AS课成的成绩,请编程序统计其中90~100、60~89、60以下者各有多少人?并把结果连续存放到自RESUT开始的单元中。

当cx为0再loop在我的程序内陷入了无限循环,t命令单步执行搞懂了错因,设置了当碰到cx为0时直接跳出程序

流程图



assume
cs:code,ds:data

data
segment

   db 85, 72, 79, 90, 79, 54, 63, 66, 83, 79,
71, 77, 77, 65, 89, 93

       db 69, 96, 72, 98, 60, 78, 69, 68, 80,
65, 91, 64, 90, 90, 64, 90

       db 99, 55, 84, 56, 80, 54, 55, 66, 53,
54, 83, 61, 52, 92, 66, 51

       db 95, 81, 51, 100, 70, 65, 50, 74, 91,
57, 95, 66, 54, 50, 73, 59

       db 78, 80, 92, 78, 89, 78, 99, 100, 82,
92, 59, 71, 74, 81, 93, 74

       db 98, 57, 57, 96, 76, 79, 57, 67, 52,
84, 87, 54, 67, 72, 59, 75

       db 64, 89, 77, 80

result  db 3 dup(0)

data ends

code
segment

start:

mov
ax,data

     mov ds,ax

     mov si,0

    mov cx,100

s0: cmp
cx,0   ;用了loop,为防止有无限循环

   je over    ;当循环截至时,终止

 mov bl,[si]  
;将要检查的数放入bl中

     cmp bl,90  ;如果>=90,进入s1

      jnb s1 


     cmp bl,60  
;60小,进入s2

     jna s2

     inc si    
;其他的情况,si加1定位到下一位数

     add [result+1],1   ;小于90大于等于60的个数加1

     loop s0
    

;检测下一位数

s1:   cmp cx,0        ;用了loop,为防止有无限循环

   je over

 add [result],1         ;>=90的个数加1

     inc si            ; si加1定位到下一位数

     loop s0          ;检测下一位数

s2:  cmp cx,0         ;用了loop,为防止有无限循环

   je over       

add
[result+2],1       ;<60的个数加1

 inc si

   loop s0          ;检测下一位数

over: 

      mov ax,4c00h

      int 21h

code  ends

      end

结果:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值