在汇编中声明 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。
我开始研究 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。