单片机汇编加法

来源:百度知道 编辑:UC知道 时间:2024/05/26 17:51:36
为避免两个数据相加,很可能超出寄存器的最大容量时程序上应该怎么做?
最好写个例子说明一下。追加50分

采用多字节加法。
程序在一般的单片机书上都有。

加数与被加数及结果均可以无限大

MOV A, ADD00
ADD A, ADD10
MOV RES0, A

MOV A, ADD01
ADDC A, ADD11
MOV RES1, A

MOV A, ADD02
ADDC A, ADD12
MOV RES2, A
......

MOV A, ADD0N
ADDC A, ADD1N
MOV RESN, A

两个8位直接相加,然后判断是否进位,进位则在高8位加1。
低八位为AD_RESULT,高八位为AD_TEMP。
以下是PIC汇编:
MOVF ADRES,W
ADDWF AD_RESULT,F
BTFSC STATUS,C
INCF AD_TEMP,F

你可以用C语言写一个加法,然后反汇编看看是编译器怎么给你加的

一般都是分为两部分的,一部放结果的高字节,一部分放结果的低字节,这样就不会超出范围了。