在汇编中声明 16 位内存变量

Declaring 16bit memory variable in assembly

我开始研究 PIC18f4550 的汇编,我一直在尝试做一些活动,但我不知道如何解决它。根据 activity,使用 MPLABX,我应该对 2 个 16 位变量求和并将结果存储在第三个 16 位变量上。

我能够对结果求和并将结果存储在第三个变量上,但我不知道如何在 16 位中声明这些变量。

; TODO INSERT CONFIG CODE HERE USING CONFIG BITS GENERATOR
INCLUDE
RES_VECT CODE 0x0000 ; processor reset vector GOTO START ; go to beginning of program

; TODO ADD INTERRUPTS HERE IF USED

MAIN_PROG CODE ; let linker place main program

START

clrw        ;clear the w register

num1 equ 00000  ;declares 3 variables and their initial values
num2 equ 00001
result equ 00002
movlw H'4F'
movwf num1
movlw H'8A'
movwf num2

movf num1,W     ;moves num1 value to w register
addwf num2,W    ;sums num2 and w and stores it in w itself
movwf resultado ;moves w to the result register

END

我需要检查我的代码是否真的正确(我是全新的汇编代码)以及如何以 16 位格式声明这 3 个变量。提前致谢!

PIC18 是一个 8 位控制器。如果你想添加两个 16 位变量,你必须逐字节添加。
也许您不想使用绝对地址并使用链接器:

 udata_acs H'000'
num1_LSB     RES  1     ;reserve one byte on the access bank
num1_MSB     RES  1     ;

您也可以为名称保留两个字节:

 udata_acs H'000'
num1     RES  2     ;reserve two bytes on the access bank

知道你可以访问第二个字节:

movwf num1+1

并且永远记得检查进位位以获得加法的 MSB。