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

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

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

源码及测试效果图

发表评论

电子邮件地址不会被公开。

*

code