用汇编语言实现:统计一个班30个学生成绩的等级(A:90~100,B:80~89,C:70~79,D:60~69,E:60以下)。

统计结果分别存入ABCDE单元中
2025-04-07 17:22:59
推荐回答(1个)
回答1:

; 某班20名同学,编程序将全班优秀的成绩和不及格的成绩分别保存到两个数组。备注:成绩(是指包括学生姓名,学号和分数)
DATA SEGMENT
chengji DB  'xiaoming', '001', 90,
'xiaofang', '002', 91,
'xiaomanj', '003', 45,
'xiaoke0h', '004', 23,
'xiaoheik', '005', 95
YOUXIU  DB   'excellent:',0ah,0dh,100 DUP(0);优秀
BUJIGE  DB   'fail:',0ah,0dh,100 DUP(0);不及格
DATA      ENDS
CODE      SEGMENT
ASSUME DS : DATA, CS : CODE
MAIN      PROC FAR
MOV AX, DATA
MOV DS, AX
LEA SI, YOUXIU+10+2
LEA DI, BUJIGE+4+2
LEA BX, CHENGJI
MOV CX, 5

LL1: MOV AL, [BX + 11]
 CMP AL, 90
 JAE YX
 CMP AL, 60
 Jae NEXT
 push cx
 mov cx, 8
 N1:
                 mov al, [bx]
          mov [di], al
          inc bx
         inc di
 loop N1
     mov ax,0d0ah;回车换行
     mov [di],ax
     mov ax,'$'
     mov [di+2],ax
     add di,2
         add bx,4
     pop cx
 JMP loo
YX :
 push cx
 mov cx, 8
N2 :
        mov al, [bx];复制名字
   mov [si], al
     inc bx
   inc si
    loop N2
     mov ax,0d0ah
     mov [si],ax
     mov ax,'$'
     mov [si+2],ax
     add si,2
         add bx,4
      pop cx 
jmp loo
       NEXT :
        add bx,13
        loo:   
            LOOP LL1
       
          mov ah,09h
          mov dx,offset YOUXIU
            int 21h
            mov dx,offset bujige
            int 21h
       
  MOV AH, 4CH
INT 21H

MAIN ENDP

    ;---------------------
    ;PROC NAMD : COPY
    ;FEATURE : COPY A STRING FORM ONE PLACE TO ANOTHER
    ;INPUT PARAMTER : BUF1,BUF2,COUNT
    ;OUTPUT PARAMETER : NONE
    COPY PROC

   ; MOV SI,OFFSET BUF1 入口参数 si to di
   ; MOV DI,OFFSET BUF2
   ; MOV CX,COUNT     入口参数 :字节数
    CLD    
    REP MOVSB  
    RET
    COPY ENDP
  CODE      ENDS
  END MAIN

}