如何用汇编语言编一个计算加法的程序

如何用汇编语言编一个计算加法的程序,第1张

输入格式必须是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语言程序,实现加法运算,急,急!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9459502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存