私のコンパイラは、私が持っているアセンブリ ファイルでは動作しません。また、私の他のコンパイラは、私が持っている 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
とにかく、デバイス定義が私のmain.cにあるので、最初の2行をほとんど除外できることがわかりました。2 つの #defines はまさにそれですが、最も簡単な方法 (私が思うに) は、_Z と _C のインスタンスを STATUS,2 と STATUS,0 に適宜置き換えることです。次の行 (GLOBAL) は、私が収集している単なる変数宣言です。LSB と MSB も値を割り当てることを除いて同じです。次のチャンクは、それらの名前 (AARGB0 など) を持つ整数の束を宣言するだけで、その後のチャンクは関数です。
私のコンパイラには #asm/#end asm ディレクティブがあるので、その関数を変換することさえ気にしません。
私はそれをすべて持っていると思います...ビルドして、コンパイラが STATUS が定義されていないことを叫ぶまで。そしてもちろんそうではありません。しかし、それは何ですか?ネットで STATUS レジスタが何か特別なものだと読んだのですが、実際にどのように機能するのかわかりません。
あなたが気づいていないなら、私はそれが本当に何を求めているのかさえわかりません. 私は血まみれのことを機能させたいだけです。