Микропроцессорная техника: практический курс : учебное пособие для студентов Физико-технологического института, обучающихся по направлениям подготовки "Ядерная физика и технологии", "Биомедицинская инженерия"


Download 0.63 Mb.
Pdf ko'rish
bet15/74
Sana29.03.2023
Hajmi0.63 Mb.
#1306393
1   ...   11   12   13   14   15   16   17   18   ...   74
Bog'liq
978-5-321-02171-21 2012 (1)

Пример 4. Сбросить все флаги пользователя, расположенные в об-
ласти РПД с адресами от 20H до 2FH. Данную область памяти занима-
ет битовый массив из 128 флагов, определяемых пользователем (класс
памяти BIT), которые сгруппированы в 16 ячеек по одному байту каж-
дая. Для доступа к флагам можно использовать байтовую адресацию
к этим ячейкам, а их обнуление проводить в цикле. Для организации
цикла использована команда DJNZ и счетчик цикла в регистре R1. Ре-
гистр R0 служит регистром косвенного адреса для доступа к ячейкам
памяти.
25


1. Программирование на языке ассемблера
ORG
30H
;
Begin: MOV
R0,#20H
; úÁÄÁÎÉÅ ÎÁÞ. ÁÄÒÅÓÁ
MOV
R1,#16D
; ëÏÌ-×Ï ÂÁÊÔÏ× × ÏÂÌÁÓÔÉ
LOOP:
MOV
@R0,#0
; óÂÒÏÓ ÏÄÎÏÇÏ ÂÁÊÔÁ
INC
R0
; ðÅÒÅÈÏÄ Ë ÓÌÅÄ. ÂÁÊÔÕ
DJNZ R1,LOOP
; ïÒÇÁÎÉÚÁÃÉÑ ÃÉËÌÁ
END
;
Пример 5. Запомнить в ВПД содержимое регистров банка 0. На-
чальный адрес ВПД: 5000H. Переключатель банков расположен в ре-
гистре PSW и занимает два бита PSW.4 и PSW.3. Устанавливаем в
качестве текущего банка банк 1. Копирование восьми регистров ну-
левого банка осуществляется в цикле. В качестве указателей данных
используются регистры DPTR (указатель приемника) и R1 (указатель
источника).
ORG
30H
;
ADDR
EQU
5000H
;
Begin: MOV
PSW,#00001000B
; ÷ÙÂÏÒ ÂÁÎËÁ 1
MOV
R0,#8
; óÞÅÔÞÉË ÃÉËÌÁ
MOV
DPTR,#ADDR
; îÁÞ. ÁÄÒÅÓÁ ÷ðä
MOV
R1,#0
; îÁÞ. ÁÄÒÅÓÁ ÂÁÎËÁ 0
LOOP:
MOV
A,@R1
; (A) <-- ÂÁÎË 0
MOVX @DPTR,A
; ÷ðä <-- (A)
INC
R1
;
INC
DPTR
;
DJNZ R0,LOOP
;
END
;
Пример 6. Осуществить обращение к памяти программ с исполь-
зованием таблицы готовых решений. Есть специальная команда для
работы с таблицами констант, хранящимися в памяти программ – это
команда MOVC. Пусть требуется составить подпрограмму вычисле-
ния синуса угла (меняется в пределах от 0 до 89

с дискретом 1

).
Наиболее быстрое вычисление получают путем выборки готового зна-
чения синуса из таблицы. Такая таблица для диапазона 0–89

займет
90 байтов при погрешности 0.4 %. Каждый байт таблицы будет со-
держать дробную часть двоичного представления синуса. Исходным
параметром для подпрограммы служит значение угла X, находящего-
ся в аккумуляторе.
26


1.2. Типовые программы
Отметим, что данная программа обходится без использования ре-
гистра DPTR. Инкремент аккумулятора перед обращением к таблице
необходим из-за наличия однобайтной команды RET между MOVC и
началом таблицы значений синуса. Обращение к таблице осуществля-
ется путем вызова подпрограммы командой CALL SINX. Аргумент X
передается подпрограмме через аккумулятор. Результат работы под-
программы возвращается также через аккумулятор. Расчет значений
синуса для таблицы проводится заранее любым доступным методом.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;÷ÙÞÉÓÌÅÎÉÅ SIN(X) ÐÏ ÔÁÂÌÉÃÅ ÚÎÁÞÅÎÉÊ ÓÉÎÕÓÁ
;÷ÈÏÄ: (A) <-- X × ÐÒÅÄÅÌÁÈ ÏÔ 0 ÄÏ 89 ÇÒÁÄÕÓÏ×
;÷ÙÈÏÄ (A) <-- ÄÒÏÂÎÁÑ ÞÁÓÔØ ÚÎÁÞÅÎÉÑ ÓÉÎÕÓÁ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG
30H
;
SINX:
INC
A
; éÎËÒÅÍÅÎÔ ÁËËÕÍÕÌÑÔÏÒÁ
MOVC A,@A+PC
; úÁÇÒÕÚËÁ ÉÚ ÔÁÂÌÉÃÙ
RET
;
;ôÁÂÌÉÃÁ ÚÎÁÞÅÎÉÊ ÓÉÎÕÓÁ
SINUS: DB
0
; Sin(0)=0
DB
00000100B
; Sin(1)=0.017
DB
00001001B
; Sin(2)=0.035
DB
00001101B
; Sin(3)=0.052
DB
00010010B
; Sin(4)=0.070
...
;
...
;
DB
11111111B
; Sin(89)=0.999
END
;

Download 0.63 Mb.

Do'stlaringiz bilan baham:
1   ...   11   12   13   14   15   16   17   18   ...   74




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling