本帖最后由 laoxu 于 2016-6-19 09:46 编辑
2. int型 转 long型,库程序有问题,见下图框线中程序。
框中程序的目的,是用 CY - Ia.bit15 - Ib.bit15 , 作为扩展的符号位。
假如: Ia = -1, Ib = 2; 即 Ia = 0xffff, Ib = 0x0002;
相加后值 为:0x0001(正数,无进位,CY=0)
根据 CY - Ia.bit15 - Ib.bit15 计算,扩展的符号位为负数,明显不对。
这部分库程序应改为:
_00009_DS_
BANKSEL r0x1003
000038 **** MOVZ R0, 0x8e MOV R0, r0x1003
000039 9800 MOV R1, #0 MOV R1,# 0x00
00003a 778f JNB R0, 7 JNB R0, 7
00003b 98ff MOV R1, #0xff MOV R1,# 0xff
BANKSEL r0x1009
00003c 5194 MOV 0x94, R1 MOV r0x1009, R1
BANKSEL r0x1004
00003d 5190 MOV 0x90, R1 MOV r0x1004, R1
|