Составители:
11
MOVLW d’166' ; десятичное число
MOVLFSRW 0A6 ; шестнадцатиричное число
Далее в основном используется шестнадцатиричная форма пред
ставления чисел.
В обычном тексте и поле комментария мы будем использовать за
пись типа A6, однако на Ассемблере следует записывать 0A6, так как
шестнадцатиричное число должно начинаться с цифры.
Для большинства команд байтовой обработки возможны 2 вари
анта, например:
ADDWF Adr1,w ; W=W+(Adr1)
ADDWF Adr1,f ; (Adr1)=W+(Adr1)
В первом случае бит d в коде команды равен 0 и сумма остается
в аккумуляторе W, во втором случае d = 1 и сумма остается в ячейке
с адресом Adr1.
Адрес Adr1 может быть определен в начале программы как 8раз
рядный, однако в код команды транслятор помещает только 7 млад
ших разрядов, а старший разряд адреса выбирается из 5го бита ре
гистра STATUS (это бит регистрового банка RP0). Если Adr1 = 20, то
при RP0 = 0 полный адрес будет 20, а при RP0 = 1 полный адрес со
ставит A0.
Необходимость переключения регистрового банка RP0 создает
определенные неудобства при составлении программ. Их можно из
бежать при использовании косвенной адресации, если предварительно
загрузить 8разрядный адрес в регистр косвенной адресации FSR:
MOVLW Adr1 ; W=Adr1
MOVWF FSR ; (FSR)=W
ADDWF INDF,f ; ((FSR))=((FSR))+W
Нулевой адрес INDF в коде команды инициирует выборку полного
8разрядного адреса из регистра FSR, т. е. последняя команда всегда
работает с полным адресом 20. Косвенную адресацию обычно исполь
зуют при необходимости модификации адреса в программе, для чего
достаточно изменить содержимое FSR.
При выполнении работы необходимо для заданного варианта про
граммы указать в поле комментария динамику изменения содержи
мого аккумулятора W и ячеек 20, 21, 22, 23. В качестве примера
рассмотрим следующий вариант программы:
Title “Lab1.asm”
;
list p=16c74 ; processor type
errorlevel 1, (305)
Страницы
- « первая
- ‹ предыдущая
- …
- 9
- 10
- 11
- 12
- 13
- …
- следующая ›
- последняя »