zhaoyuhangyuan
2021-06-28 15:44
采纳率: 66.7%
浏览 32

帮我设计一个微机原理专题报告

帮我设计一个专题报告。

题目: 1、定义10以上个学生分数字数据,设计汇编语言程序对全部成绩进行统计分析,分5段统计人数(90-99,80-89,70-79,60-69,60以下),并输出平均分,最高分和最低分。

a,一、专题题目与要求 

二、问题分析 

三、概要设计 

四、详细设计 

五、运行过程及结果 

六、源代码及注释 

 

 

 

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 王大师王文峰 2021-06-28 15:57
    已采纳

    源码如下 望采纳,谢谢

    首先 流程如下

    一、 实验目的

    二、 实验所用仪器

    三、 实验内容及基本原理

    四、 实验数据记录

    五、 实验结果分析及回答问题(或测试环境及测试结果)

    最后 代码

    CRLF    MACRO
            MOV     DL,0DH
            MOV     AH,02H
            INT     21H
            MOV     DL,0AH
            MOV     AH,02H
            INT     21H
    ENDM
    
    
    DATA    SEGMENT                         ;数据段,成绩区
    DATA1   DB      89H,92H,74H,85H,96H,73H,62H,78H
            DB      49H,59H,97H,66H,84H,81H,79H,67H
            DB      90H,88H,76H,82H,71H,69H,84H,81H
            DB      79H,65H,94H,86H,76H,82H,75H,83H
    DA90    DB      16 DUP (0)              ;首字节为人数,随后为成绩
    DA80    DB      16 DUP (0)
    DA70    DB      16 DUP (0)
    DA60    DB      16 DUP (0)
    DA50    DB      16 DUP (0)
    KKK     EQU     DA90 - DATA1            ;总人数
    DATA    ENDS
    
    CODE    SEGMENT
    MAIN    PROC    FAR
            ASSUME  CS:CODE,DS:DATA,ES:DATA
    START:  PUSH    DS
            SUB     AX,AX
            PUSH    AX
            MOV     AX,DATA
            MOV     DS,AX
            MOV     ES,AX
            LEA     SI,DATA1                ;SI 指向成绩表首
            MOV     CX,KKK                  ;循环数(总人数)送 CX
    LOOP1:  MOV     AL,[SI]                 ;将成绩按字节送入AL
            CMP     AL,90H
            JNC     KK90                    ;成绩 >= 90 转
            CMP     AL,80H
            JNC     KK80                    ;成绩 >= 80 转
            CMP     AL,70H
            JNC     KK70                    ;成绩 >= 70 转
            CMP     AL,60H
            JNC     KK60                    ;成绩 >= 60 转
            LEA     DI,DA50                 ;不及格区首地址送 DI
            JMP     TTT
    KK60:   LEA     DI,DA60                 ;60分区首地址送 DI
            JMP     TTT
    KK70:   LEA     DI,DA70                 ;70分区首地址送 DI
            JMP     TTT
    KK80:   LEA     DI,DA80                 ;80分区首地址送 DI
            JMP     TTT
    KK90:   LEA     DI,DA90                 ;90分区首地址送 DI
    TTT:    MOV     BL,[DI]                 ;BL = 存放人数地址
            INC     BL                      ;该段人数+1
            MOV     [DI],BL                 ;存该段人数
            MOV     AL,[SI]
            XOR     BH,BH
            MOV     [DI+BX],AL              ;成绩存入该段
            INC     SI                      ;修改地址指针
            LOOP    LOOP1
            LEA     SI,DA90
            CALL    DISPL                   ;显示 90 - 99分人数及成绩
            LEA     SI,DA80
            CALL    DISPL                   ;显示 80 - 89分人数及成绩
            LEA     SI,DA70
            CALL    DISPL                   ;显示 70 - 79分人数及成绩
            LEA     SI,DA60
            CALL    DISPL                   ;显示 60 - 69分人数及成绩
            LEA     SI,DA50
            CALL    DISPL                   ;显示 60分以下人数及成绩
            RET
    
    DISPL   PROC    NEAR                    ;子程序:显示某段人数及成绩
            MOV     BL,[SI]                 ;取人数
            MOV     AL,BL
            MOV     CL,10
            CBW                             ;符号扩展指令,AL的内容扩展到AH,形成AX中的字。
            ;如果AL的最高有效位是0,则AH = 00,AL的最高有效位为1,则AH = FFH。AL不变。(即将AL的符号位移至AH)
            DIV     CL                      ;8位除法,被除数放在AX中,除数为8位在CL中,
            ;AL存储除法操作的商(即十位),AH存储除法操作的余数(即个位)
            MOV     DX,AX
            ADD     DL,30H                  ;将十位加30H转换为ASCII码,后面类似
            MOV     AH,02                   ;调用INT 21H中断的2号功能进行显示输出,输出字符存在DL中
            INT     21H                     ;显示十位
            MOV     DL,DH
            ADD     DL,30H
            MOV     AH,02
            INT     21H                     ;显示个位
            MOV     DL,20H                  ;空格的ASCII码
            MOV     AH,02
            INT     21H                     ;显示空格
    DISP1:  INC     SI                      ;指向下一单元
            MOV     DL,20H
            MOV     AH,02
            INT     21H
            MOV     DL,[SI]                 ;取成绩
            MOV     CL,04
            ROL     DL,CL
            AND     DL,0FH
            ADD     DL,30H
            MOV     AH,02
            INT     21H                     ;显示十位
            MOV     DL,[SI]
            AND     DL,0FH
            ADD     DL,30H
            MOV     AH,02
            INT     21H                     ;显示个位
            DEC     BL
            JNZ     DISP1
            CRLF                            ;回车换行
            RET
    DISPL   ENDP
    
    MAIN    ENDP
    CODE    ENDS
            END     START
    
    已采纳该答案
    打赏 评论
  • 打赏 评论

相关推荐 更多相似问题