欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编语言:成绩统计

程序员文章站 2024-02-02 18:27:28
...

下面提供了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