Микропроцессорная техника: практический курс : учебное пособие для студентов Физико-технологического института, обучающихся по направлениям подготовки "Ядерная физика и технологии", "Биомедицинская инженерия"
Download 0.63 Mb. Pdf ko'rish
|
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. Пусть требуется составить подпрограмму вычисле- ния синуса угла X (X меняется в пределах от 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling