要100以内的奇数相加,奇数就是1,3,5,7,9……99,一共50个数字,如果从1开始,那就是每次加2,重复49次到(2*49)+1=99,所以程序这样简单些:
ORG
0000H
CLR
A,
MOV
50H,
A
MOV
51H,
A
MOV
R2,
#01H
从1开始
MOV
R3,#49
重复49次
LOOP:
CLR
C
么次进行加法前先清除C,以免出问题
MOV
A,
R2
ADD
A,
51H
MOV
51H,
A
CLR
A
ADDC
A,
50H
MOV
50H,
A
INC
R2
INC
R2
DJNZ
R3,
LOOP
SJMP
$
END
上课不听讲,要打屁股……0AEH + 81H + 01H = 130H,由于累加器A只有8位,所以超过8位的部分会被自动丢弃,因此结果A=30H。
基本计算你可以列竖式计算……跟十进制无本质不同……
最低位:E+1+1 = 10H,结果是0,进1
次高位:A+8+0+1 = 13H,结果是3,进1
所以加起来是130H。
十六进制基本计算要多练习,像十进制一样熟练……
你没描述你用的是什么单片机啊,如果是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开始的五个字节
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)