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

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

帮我设计一个专题报告。

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

a,一、专题题目与要求 

二、问题分析 

三、概要设计 

四、详细设计 

五、运行过程及结果 

六、源代码及注释 

 

 

 

  • 写回答

1条回答 默认 最新

  • 王大师王文峰 企业官方账号 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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题