输入格式必须是A +或 - 或/或 B =
;按Enter年底计算数(0255)
DATAS段
所述DB 20 dup的(?)
DB'CHU痤勒','$'
DATAS ENDS
CODES分部
ASSUME <CS:CODES过,DS的人:DATAS START如下:
MOV AX,DATAS
MOV DS,AX
。JMPA
KAISHI:
;回车换行符
MOV DL,0DH MOV的AH,02H INT 21H
MOV DL,0AH
INT 21H
的LEA SI中,X
SUB AX的,AX
SUB的BX,BX
SUB CX,CX
SUB DX,DX
;输入数字
- 答:MOV AH,01H
INT 21H
CMP AL,0DH
> JZ
的CMP AL,30H
JBB
的CMP AL,3AH
JNB F
SUB AL,30H
MOV CH,AL的
> MOV AL,BL
MOV BL,0AH
的MUL BL
ADD AL,CH
MOV BL,AL的
。JMP
;的判断+ - / =
B:的CMP AL,2BH
JNZ MOV X [SI],BL
INC的SI
MOV CL,0H
AND BL, 0
JMPA
K:的CMP AL,2DH
JNZe
MOV X [SI],BL
INC的SI
MOV CL,01H
title>和BL,0 JMPA
D:的CMP AL,2AH
JNZê
MOV X [SI],BL
INC SI
MOV CL,02H
AND BL,0
JMPA
E:的CMP AL,2FH
JNZ
MOV X [的SI],BL
INC的SI
,03H MOV CL
和BL,0
JMPá
;计算
F:MOV [SI],BL
CMP AL,3DH BR /> JNZ
的LEA SI中,X
MOV的AL中,X [SI]
INC的SI
MOV BL中,X [SI]
CMP CL,0 BR /> JNZ
ADD AL,BL
JMP
G:的CMP CL,01H
JNZ SUB AL,BL
JMP J BR /> H:的CMP CL,02H
JNZ我
AND AH,0
的MUL BL
JMP
我:AND AH,0
CMP CL,03H
DIV BL
;输出
J:和AH,0
的CMP AL,100
JB ER
MOV的BL,100
> DIV BL
MOV CL,AH
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,CL BR /> ER“:●CMP AL,10个
JB毅
MOV BL,10
AND AH,0
DIV BL
ADD AL,30H
MOV DL,AL
MOV CL,AH
MOV的AH,02H
INT 21H
MOV AL,CL
YI“:ADD AL,30H
MOV DL的, AL
MOV的AH,02H
INT 21H
JMP KAISHI
T:LEA的DX,Y。 MOV AH,09H
INT 21H
JMP KAISHI
L:MOV的AH,4CH的
INT 21H
CODES ENDS ”END START“
//程序如下,加法 减法各25道
#include<stdioh>
#include<timeh>
#include<stdlibh>
void main()
{
int i,a,b,c,score=0;
srand((unsigned)time(NULL));
for(i=1;i<=50;i++)
{ a=rand()%89+10;
b=rand()%89+10;
c=rand()%198;
if(i<=25)
{
printf("%d+%d=%d\n",a,b,c);
if(c==a+b)
{printf("正确!\n");
score+=2;
}
else
printf("错误!\n");
}
else
{
printf("%d-%d=%d\n",a,b,c);
if(c==a-b)
{printf("正确!\n");
score+=2;
}
else
printf("错误!\n");
}
}
printf("总分为:%d\n",score);
}
所谓的每个未知数有一个系数,就是像这样吧a+2b+3c+4d+5e之类的吧,因此程序应该只要实现乘法和加法既可。
下面程序就可以实现任意数目的加法和乘法混合运算,应该合你的题意。
以下程序没有对错误的输入做判断,因此输入时要严格按照格式来输入,该程序可以测试任意多位,和在111位数之间的+和乘,当然还要做更大的计算,可以把数组改得更大既可,比如你可以输入1+222+2+3+2345+22来测试结果是否正确。而且本程序可以计算任意位数长的加法和乘法计算,比如你可以使用1+111111112+3,来测试计算结果
void main()
{
int a[111]={0},m[111]={0}; //a用于接收输入的数字,m用于计算之后的结果
char b[111]; //用于接收+和字符。
int i=0,j=0,k=0; //三个计数器
int s=0; //计算结果存于此数。
while(1) //此循环用于接收输入的数字和字符。
{
scanf("%d",&a[i++]); //数组a接收数字,因为整型数组a不接收字符,所以把字符留给后面的字符数组b来接收。
scanf("%c",&b[j++]); //数组b接收字符
if(b[j-1]=='\n') break; //如果数组b接收到回车字符,则表示输入完毕
}
int n=0; //好像没有用到这个变量。
for(int j=0;j<i;j++) //此循环用于做乘法和连乘运算
{
if(b[j]==''){m[k]=a[j]a[j+1];a[j]=0;a[j+1]=0;k++; //如果b[j]为乘法,则先计算乘法,也就是乘法的两个数是a[j]和a[j+1]
while(1){ //以下循环用于做连乘
if(b[j+1]==''){--k;m[k]=m[k]a[j+2]; a[j+2]=0;k++;j++;} //这个计算比较复杂,自已想想,是用于计算连乘的。
else break;}
}
else if(b[j+1]=='\n')break;
}
for(int j=0;j<i;j++) //此运算用于做加法
s=s+a[j]+m[j];
printf("%d\n",s);
system("pause");
}
你没描述你用的是什么单片机啊,如果是32位的单片机那就直接加很简单了,如果是8位51单片机的话那就是如下:
ORG 0000H
CLR C
MOV A,30H//被加数低八位
ADDC A,40H
MOV 50H,A//最低八位放于50H
MOV A,31H//被加数次低八位
ADDC A,41H
MOV 51H,A//次低八位放于51H
MOV A,32H//被加数次高八位
ADDC A,42H
MOV 52H,A//次高八位放于52H
MOV A,33H//被加数高八位
ADDC A,43H
MOV 53H,A//最高八位放于53H
MOV 54H,C
SJMP $
END
被加数放于30H开始的4个字节中,加数放于40H开始的4个连续字节,结果放在50H开始的五个字节
用excel算加法步骤如下:
1、打开excel,输入需要计算的数据。
2、按住鼠标左键,拖动选择要计算加法的数据。途中蓝色部分即为选中的部分。
3、然后,点击excel上部工具栏中的“∑”,这是“自动求和”的符号。
4、在选中数据的下方就会自动出现数字,这个数字就是竖列数据的和。
5、以此类推,可以计算处所有竖列数据的和。
Office Excel的功能非常强大,也非常好用, 一般的文字排版、表格、计算、函数的应用等都用EXCEL来解决。它能够方便的制作出各种电子表格,使用公式和函数对数据进行复杂的运算;用各种图表来表示数据直观明了;利用超级链接功能,用户可以快速打开局域网或Interner上的文件,与世界上任何位置的互联网用户共享工作薄文件。
以上就是关于如何用汇编语言编一个计算加法的程序全部的内容,包括:如何用汇编语言编一个计算加法的程序、怎么用C语言编写一个随机两位数的加减法的程序、请人设计一个c语言程序,实现加法运算,急,急!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)