Ste*_*ven 1 c++ assembly translation pic status-register
我的编译器不能使用我拥有的汇编文件和我的其他编译器,它将无法使用我拥有的c文件.我不明白集会.我需要移动它,但我没有快速到达任何地方.那里有人可以提供帮助吗?我无法相信没有翻译.这是文件的开头:
list p=18F4480
#include <p18F4480.inc>
#define _Z STATUS,2
#define _C STATUS,0
GLOBAL AARGB0,AARGB1,AARGB2,AARGB3
GLOBAL BARGB0,BARGB1,BARGB2,BARGB3
GLOBAL ZARGB0,ZARGB1,ZARGB2
GLOBAL REMB0,REMB1
GLOBAL TEMP,TEMPB0,TEMPB1,TEMPB2,TEMPB3
GLOBAL LOOPCOUNT,AEXP,CARGB2
LSB equ 0
MSB equ 7
math_data UDATA
AARGB0 RES 1
AARGB1 RES 1
AARGB2 RES 1
AARGB3 RES 1
BARGB0 RES 1
BARGB1 RES 1
BARGB2 RES 1
BARGB3 RES 1
REMB0 RES 1
REMB1 RES 1
REMB2 RES 1
REMB3 RES 1
TEMP RES 1
TEMPB0 RES 1
TEMPB1 RES 1
TEMPB2 RES 1
TEMPB3 RES 1
ZARGB0 RES 1
ZARGB1 RES 1
ZARGB2 RES 1
CARGB2 RES 1
AEXP RES 1
LOOPCOUNT RES 1
math_code CODE
;---------------------------------------------------------------------
; 24-BIT ADDITION
_24_BitAdd
GLOBAL _24_BitAdd
movf BARGB2,w
addwf AARGB2,f
movf BARGB1,w
btfsc _C
incfsz BARGB1,w
addwf AARGB1,f
movf BARGB0,w
btfsc _C
incfsz BARGB0,w
addwf AARGB0,f
return
Run Code Online (Sandbox Code Playgroud)
我知道我可以大大排除前两行,因为设备定义的是在我的main.c中.这两个#defines就是这样,但最简单的方法(我认为)只是用STATUS,2和STATUS,0替换_Z和_C的实例.下一行(GLOBAL)只是我收集的变量声明.与LSB和MSB相同,但它们也分配值.下一个chunck我想我只是声明了一堆带有这些名字的整数(AARGB0等)然后在那之后的chunck是一个函数.
我甚至懒得翻译这个函数,因为我的编译器有#asm/#end asm指令所以我可以把它放在raw中(只要它包含在一个函数中).
我想我拥有它......直到我构建并且我的编译器尖叫着没有定义STATUS.当然不是.但它是什么?我在网上读到STATUS寄存器是特别的东西,但我真的不知道它是如何工作的.
如果你没有注意到,我甚至不确定它是什么我真的在问.我只想要血腥的东西才能奏效.
你的编译器拒绝你的来源?
您使用的是破坏的工具,或者您的源文件有问题.在这两种情况下,您的问题不是"将ASM转换为C"或类似的东西,而是源/工具链中的错误.不要试图解决问题,解决它们.
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |