用单片机汇编语言编写1+2+3 +‥‥‥+99+100的求和运算程序, 结果用十进制显示在单片机实验系统数码管上。

如题所述

用C语言可以实现的代码如下:

#include
typedef unsigned int uint;
typedef unsigned char uchar;
uchar smgcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff};//共阳数码管
uchar smgbit[]={0xfe,0xfd,0xfb,0xf7};
uchar value[]={0,0,0,0};
void delay(uint x)//延时函数
{
uchar i;
while(x--)for(i=0;i<120;i++);
}
void main(void)
{
uchar i,j;
uint s=0;
for(i=1;i<=100;i++)
s+=i; value[0]=s;
value[1]=s0/10;
value[2]=s00/100;
value[3]=s000/1000;
while(1)
{
for(j=0;j<4;j++)
{
P1=smgbit[j];
P2=smgcode[value[j]];
delay(10);
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-06
设AX=1 BX=0 AXX =0 BXX=0
LOOP:
MOV A,AX
ADD A,BX
DAA BX ;AX+BX换做10进制放入BX
MOV A,AXX
ADC A,BXX
DAA BXX ;AXX带进位标志+BXX换做10进制放入BXX
mov A,1H
ADD A,AX
DAA AX 递增AX(10进制)
MOV A,00H
XOR A,AX
SNZ Z AX=0结束 ≠0循环
JMP LOOP
END追问

有AX这些是86汇编语言啊,我们作业是要单片机汇编

追答

AX BX是自己随便设定的寄存器 这个是合泰单片机的汇编程序

本回答被提问者采纳
第2个回答  2012-06-05
用c来写简单
第3个回答  2012-06-05
我知道

编写程序如何求1+2+3+...+ n的和?
一、简述 INPUT:n,S=0,i=1,WHILE:i<=n,,S=S+i,i=i+1,WEND,PRINT“S=”;S,END。二、编写程序 1、编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。2、为了使计算机能够理解人...

编程计算S=1+2+3+…+100的值
int s=0;for(int i=0;i<100;i++){ s+=i;} System.out.print(s);

用汇编语言,就是单片机语言写1²+2²+...
这里你只要编一个循环程序段即可,从题中可知应该已有一个求平方的子程序供调用。循环体中只要完成调用及相加就行了。

单片机汇编语言1加到100怎么编?
mov r0,#100 ;共100个数 mov a,#0 ;累加结果先清0 mov r1,#1 ;第1个数为1 loop:add a,r1 ;把数累加起来 inc r1 ;下一个数 djnz r0,loop;共100个数,未完转 LOOP循环 sjmp $ ;完成 end

单片机用汇编写两个数码管显示0到99循环的程序
要实现单片机用汇编语言编写的数码管循环显示0到99的程序,首先,你需要创建一个新的项目并做好初始化准备工作。接着,创建一个数码管段选表,它将决定每个数码管的显示模式。延时函数在此过程中也至关重要,以控制数码管的刷新速度。定义一个名为i的uchar变量,初始化一个名为wk的标志位,用于控制...

51单片机汇编语言按键控制数码管加1加到999
思路是对的,细节描述有问题,算法描述要严谨。为什么要99时清零啊,这可能就是错误的地方了。系统初始化时,清除使用到的寄存器!!然后,当需要加1时做如下动作 寄存器a = a+1 如果寄存器a == 100,{寄存器b=b+1;寄存器a = 0} 这样就可以了,b中的1代表100,a中的1就是1 ...

我用单片机汇编语言让4个数码管同时显示1234,结果显示的是乱码?
MAIN: LCALL DISP MOV 00H,#1 MOV 01H,#2 MOV 02H,#3 MOV 03H,#4 AJMP MAIN DISP: MOV A,00H ACALL SEG7 MOV P1,A MOV P0,#01H ACALL DLY MOV A,01H ACALL SEG7 MOV P1,A MOV P0,#02H ACALL DLY MOV A,02H ACALL SEG7 MOV P1,A MOV P0,#04H ACALL DLY MOV A,...

...单片机 汇编语言 计算 1+2+3+4+5+...+10的结果, (不要告诉我用10个...
分太少了,加点分吧!org 0 mov r0,#10 ;共10个数 mov a,#0 ;累加结果先清0 mov r1,#1 ;第1个数为1 loop:add a,r1 ;把数累加起来 inc r1 ;下一个数 djnz r0,loop;共10个数,未完转 LOOP循环 sjmp $ ;完成 end

求一MCS-51系列单片机指令表
4、二-十进制调正指令: DA A若[(A0-3)>9]或[(AC)=1),则(A0-3)(A0-3)+06H本指令是对A的BCD码加法结果进行调正。两个压缩型BCD码按二进制数相加之后,必须经本指令调正,才能得到压缩型BCD码的和数。本指令的操作为:若累加器A的低4位数值大于9或者第3位向第4位产生进位,即AC辅助进位位为1,则...

用汇编语言编写一段程序实现两个六位的十进制数的加法,把运算结果显 ...
num equ 6 ;数字位数(最好为偶数),若为奇数需稍微改动程序 msg1 db 'Enter the first number(ESC to exit) : ','$'msg2 db 'Enter the second number(ESC to exit) : ','$'msg3 db 0dh,0ah,'ERROR! Enter again(ESC to exit) : ','$'num1 db num dup(0) ;存第一个...

相似回答