汇编语言实现10以内10个数字的求和,平均,统计大于6的数字个数

目录
    本文上次更新于 1591 天前,其内容可能已经过时,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

    2018-6-21
    微机原理大作业
    题目:计算10个0-9之间数字的总和,平均值并统计大于6的数字的个数
    要求:
    (1)屏幕显示功能-欢迎界面
    (2)键盘输入具体数值,限制输入范围在0-9之间
    (3)屏幕显示计算结果
    (4)控制程序的循环和退出方式

    此程序以前成功运行过,程序是没有问题的,但是在汇编过程中会出现不属于程序的问题。

    INPUT MACRO ;从键盘输入字符,读取 ASCII 码
    MOV AH,01H
    INT 21H
    ENDM
    OUTPUTS MACRO A ;显示字符串 A
    LEA DX,A
    MOV AH,09H
    INT 21H
    ENDM
    OUTPUTN MACRO A ;读取 A 的 ASCII 码,并显示 ASCII 码所对应的值
    MOV DL,A
    MOV AH,02H
    INT 21H
    ENDM
    DATA SEGMENT ;定义数据段,一些显示信息
    O_WEL DB 0DH,0AH,'WELCOME TO THIS SYSTEM!INPUT CTRL+C OR Q OR q TO QUIT
    O_INC DB 0DH,0AH,'NAME:QUCHAO NUMBER:201521180 CLASS:WU1501
    O_WAR DB 0DH,0AH,'NOT FROM 0 TO 9
    O_SUM DB 0DH,0AH,'THE SUM IS:
    O_AVE DB 0DH,0AH,'THE AVE IS:
    O_GT DB 0DH,0AH,'THE NUM OF GREATER THAN SIX IS:
    O_QUIT DB 0DH,0AH,'DO YOU REALLY WANT TO QUIT!
    O_INPUT DB 0DH,0AH,'PLEASE INPUT A NUM:
    O_REA DB 0DH,0AH,'PLEASE INPUT Y OR y TO COMFIRE:
    O_PASS DB 'ALL PASSED
    O_EXPLAIN DB 0AH,0DH,'WORKED ENVIROMENT--WINDOWS XP ASSEMBLY LANGUAGE ENVIROMENT--WIN-MASM ATTENTION!!
    O_LEAVE DB 0AH,0DH,'THANK FOR YOUR USING BYE
    SUM DW ?
    X DB ?
    COUNT DB 0AH
    SHANG DB ? ;商存放位置
    YUSHU DB ? ;余数存放位置
    FORCYCLE DB ?
    HUNDRED DW 12CH
    TEN DB 0AH
    GEWEI DB ? ;总和的个位存放位置
    SHIWEI DB ? ;总和的十位存放位置
    BUFF DW ?
    DATA ENDS
    CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
    BEGIN:
    MOV AX,DATA
    MOV DS,AX
    OUTPUTS O_WEL
    OUTPUTS O_EXPLAIN
    OUTPUTS O_INC
    START: ;初始化数据
    MOV FORCYCLE,0AH ;循环 10 次
    MOV SUM,0H
    MOV X,30H
    XOR CX,CX ;cx 置 0
    XOR BX,BX ;bx 置 0
    FIRST: ;判断是否为 Q 或者OUTPUTS O_INPUT
    OUTPUTN X
    OUTPUTN '>'
    INPUT
    SUB AL,51H
    JE QUIT
    ADD AL,51H
    SUB AL,71H
    JE QUIT
    ADD AL,71H
    CMP AL,30H
    JGE NEXT
    OUTPUTS O_WAR
    JMP FIRST
    NEXT: ;判断是为 0 到 9 的数字
    CMP AL,39H
    JLE THIRD
    OUTPUTS O_WAR
    JMP FIRST
    THIRD: ;判断是否大于 6
    CMP AL,36H
    JG JISHU
    JMP QIUHE
    JISHU:
    INC BH
    QIUHE: ;数据求和
    INC X
    MOV CL,AL
    ADD SUM,CX
    QINGLING:
    DEC FORCYCLE
    CMP FORCYCLE,0H
    JLE DISPLAY
    JMP FIRST
    DISPLAY: ;输出显示信息
    OUTPUTS O_SUM
    XOR AX,AX
    MOV AX,SUM
    DIV COUNT
    MOV SHIWEI,AL
    MOV GEWEI,AH
    OUTPUTN SHIWEI
    ADD GEWEI,30H
    OUTPUTN GEWEI
    OUTPUTS O_AVE
    XOR AX,AX
    MOV AX,SUM
    DIV COUNT
    MOV SHANG,AL
    ADD AH,30H
    MOV YUSHU,AH
    OUTPUTN SHANG
    OUTPUTN 2EH
    OUTPUTN YUSHU
    OUTPUTS O_GT
    ADD BH,30H
    CMP BH,39H
    JG LIWAI
    OUTPUTN BH
    JMP START
    LIWAI:
    OUTPUTS O_PASS
    JMP START
    IEND: ;结束程序
    OUTPUTS O_LEAVE
    MOV AH,4CH
    INT 21H
    QUIT: ;判断是否要退出,Y 或者 y 退出
    OUTPUTS O_QUIT
    OUTPUTS O_REA
    INPUT
    SUB AL,59H
    JE IEND
    ADD AL,59H
    SUB AL,79H
    JE IEND
    JMP FIRST
    CODE ENDS
    END BEGIN

    欢迎转载,不需注明出处,就说是你写的

    源码及测试效果图

    如果在这个过程中遇到了其它问题,欢迎在评论区留言,如果你已解决,也欢迎把具体的解决方法留在评论区,以供后来者参考
    ×

    感谢您的支持,请扫码打赏

    微信打赏 支付宝打赏
    guest

    这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

    0 评论
    内联反馈
    查看所有评论