从键盘输入N个十进制数,求它们的和
来源:互联网 发布:知乎 神人 常凯申 编辑:程序博客网 时间:2024/05/17 03:27
从键盘输入N个十进制数,求它们的和(累加和要求不大于65535),并将累加结果在屏幕上显示出来。
要求给出必要的提示信息(用宏调用完成);
累加功能由子程序调用实现;
二进制数形式的累加和转换为十进制数并显示由子程序调用实现。
悬赏分:100 | 解决时间:2011-11-08 15:15:00
;==============================================
最佳答案:
;从键盘输入N个十进制数(数与数之间用空格隔开),以回车结束
;求它们的和(累加和要求不大于65535)
;并将累加结果在屏幕上显示出来
;给出必要的提示信息(用宏调用完成)
;累加功能由子程序调用实现
;以上要求均已满足。
;程序如下:
;----------------------------------------------
DISP_STR MACRO X ;宏定义.
MOV DX, OFFSET X
MOV AH, 9
INT 21H
ENDM
;----------------------------------------------
DATA SEGMENT ;数据段.
MSG1 DB 13, 10, 'Please Input : $'
MSG2 DB 13, 10, 'I can not count so much ! $'
MSG3 DB 13, 10, 'The SUM is : $'
x DW ? ;存放新输入数据.
y DW ? ;求和.
DATA ENDS
;----------------------------------------------
CODE SEGMENT ;代码段.
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
;--------------------------------
DISP_STR MSG1 ;宏调用,提示 Please Input :
MOV y, 0 ;和 清零.
;--------------------------------
IN_LOOP:
MOV x, 0 ;数据清零.
_INX:
MOV AH, 1 ;输入字符.
INT 21H
CMP AL, 13 ;回车?
JZ _IN_END ;全部数字结束.
CMP AL, ' ' ;空格?
JZ _INY ;本数字结束.
CMP AL, 30H
JB _IN_ERR ;小于'0',输入错误.
CMP AL, 3AH
JNB _IN_ERR ;大于'9',输入错误.
;--------------------------------
SUB AL, 30H
MOV AH, 0
MOV CX, AX
MOV AX, x
MOV BX, 10 ;老数据乘以10
MUL BX
AND DX, DX
JNZ _IN_ERR ;输入过大,错误.
ADD AX, CX ;加上新数据.
JC _IN_ERR
MOV x, AX ;保存.
JMP _INX ;继续输入.
;--------------------------------
_INY:
CALL SUM
JC _IN_ERR
JMP IN_LOOP ;继续输入.
;--------------------------------
_IN_END:
CALL SUM
JC _IN_ERR
DISP_STR MSG3 ;宏调用,提示 The SUM is :
MOV AX, y
CALL PRINTAX ;调用显示子程序
JMP EXIT
;--------------------------------
_IN_ERR:
DISP_STR MSG2 ;宏调用,提示 can not count so much !
EXIT:
MOV AH, 4CH
INT 21H
;--------------------------------
SUM PROC
MOV AX, x ;完整的新数据.
ADD AX, y ;求和.
MOV y, AX ;保存.
RET
SUM ENDP
;--------------------------------
PRINTAX PROC
MOV BX, 10
OR AX, AX
JZ _0_
LOOP_P:
XOR DX, DX
DIV BX
MOV CX, AX ;商.
OR CX, DX
JZ _E_
PUSH DX
CALL LOOP_P ;递归.
POP DX
ADD DL, '0'
JMP _1_
_0_:MOV DL, '0'
_1_:MOV AH, 2
INT 21H
_E_:RET
PRINTAX ENDP
;------------------------------
CODE ENDS
END START
;==============================================
回答者: 做而论道 | 十五级 采纳率:42% 名人 达人
回答时间:2011-11-8 15:03
提问者对于答案的评价:非常感谢
原题网址:http://zhidao.baidu.com/question/339194291.html
;==============================================
- 从键盘输入N个十进制数,求它们的和
- 从键盘输入10个实数,并输出它们的平均数和比平均数大的数
- 编制程序,输入n个整数(n从键盘输入,n>0),输出它们的偶数和。
- (c++)编制程序,输入n个整数(n从键盘输入,n>0),输出它们的偶数和。
- 从键盘输入两个正整数,求它们的最大公约数和最小公倍数
- C语言:从键盘输入一个数n,求n的阶乘(n!)
- 【项目1扩展(选做)】从键盘输入20个整数,输出它们的和
- 第九周项目5 从键盘输入20个整数,输出它们的和
- 从键盘输入两个十以内的数求和,并把和用十进制在显示器上将显示
- 5-36 求n以内最大的k个素数以及它们的和 (20分)
- PTA 求n以内最大的k个素数以及它们的和
- pta 习题集 5-14 求n以内最大的k个素数以及它们的和
- PTA教辅 求n以内最大的k个素数以及它们的和
- 求n以内最大的k个素数以及它们的和
- 汇编语言:从键盘输入十进制数,输出该十进制数的十进制,二进制(B),十六进制(H),八进制(Q)表示
- 汇编语言(二):从键盘输入十进制数,输出该十进制数的十进制,二进制(B),十六进制(H),八进制(Q)表示
- 【100题】第三十 求从1到n这n个整数的十进制表示中1出现的次数
- 求从1到n这n个整数的十进制表示中1出现的次数
- 从键盘输入不多于四位的16进制数,以十六位二进制数形式输出
- 比较有符号数的大小
- Linux网络编程--网络知识介绍
- 移码和补码
- 汇编能实现小数的四舍五入么?
- 从键盘输入N个十进制数,求它们的和
- UITableViewcell分割线满格显示
- 数字 0 - 9 转换成对应的格雷码
- 在原码当中查找最大、最小值
- 跨境和农村电商成热点
- 串口通信的优化
- 基于 8086 汇编语言——减奇数法开平方
- 基于51单片机的00-99秒表--C语言
- 用80x86汇编语言,编写一个输出16进制数字的程序