在程序集中声明16位内存变量

时间:2019-05-04 19:41:32

标签: variables assembly pic mplab

我开始研究PIC18f4550的组装,并且我一直在尝试做一些活动,但我不知道如何解决。根据活动“使用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个变量。预先感谢!

1 个答案:

答案 0 :(得分:0)

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。