汇编语言:成绩统计

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

assume cs:code,ds:data,ss:stack
data segment
   buf 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
resut  db 3 dup(0) 
data ends

stack segment stack
     db 100H dup(0)
stack ends

code segment
start:mov ax,data
    mov ds,ax
    mov ax,stack
    mov ss,ax
    mov sp,100h
    mov cx,offset resut-offset buf;得到数据个数
    mov bx,0
    mov si,0

  s:mov al,[si];将第一个数据放入al
    cmp al,90;然后将数据跟90比较
    jae next;大于等于90则跳转到next

    jmp c;比90小则跳到c
next:inc [resut];resut符号处第一个单元的数据加一

    jmp z
  c:cmp al,60 ;比90小在跟60比较
    jae zero  ;大于等于60则跳到zero

    inc [resut+2] ;比60还小则在resut符号处第三个单元的数据加一
    jmp z
zero:inc [resut+1] ;在resut符号处第二个单元的数据加一

  z:inc si
    loop s ;循环cx次
    mov ax,4c00h
    int 21h
code ends 
end start
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值