Мне нужно создать файл ASM для PIC18F452, который выполняет следующие действия:
(a) определяет метку MapName
как первый из 8 последовательных регистров, содержащих завершенную нулем строку не более 7 символов. (б) получить доступ к 8-разрядной целочисленной переменной без знака с именем MapIndex
, которая была объявлена в C-файле. (c) определить функцию ASM getMapChar
, которая может быть вызвана из C с использованием прототипа функции char getMapChar(void)
. Функция должна возвращать соответствующий символ, если значение MapIndex
равно <= 7 или значение 255, если <code>MapIndex равно> 7. (d) сделать метки MapName
и getMapChar
доступными для внешнего файла C.
Мой код пока показан ниже:
; Configuration word : WDT off, power-up timer on, code protect off, RC oscillator
list = p18f452
MapName equ 0x20
MapName1 equ 0x21
MapName2 equ 0x22
MapName3 equ 0x23
MapName4 equ 0x24
MapName5 equ 0x25
MapName6 equ 0x26
MapName7 equ 0x27
CurrentChar equ 0x28
extern MapIndex
org 0x00
goto getMapChar
getMapChar
movlw 0x00
movwf MapName7
GLOBAL getMapChar
GLOBAL MapName
END
Я уже выполнил части (a), (b) и (d), но у меня возникли некоторые проблемы с написанием кода, который автоматически проходит через каждый из последовательных регистров, используя значение MapIndex
. Может ли кто-нибудь помочь мне, пожалуйста? Это будет высоко ценится.