Объявление 16-битной переменной памяти в сборке - PullRequest
2 голосов
/ 04 мая 2019

Я начинаю изучать сборку для 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

Мне нужно проверить, действительно ли мой код корректен (я совершенно новый в сборке) и как объявить эти 3 переменные в 16-битном формате. Заранее спасибо!

1 Ответ

0 голосов
/ 06 мая 2019

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 дополнения.

...