Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.02.2017
Сообщений: 19
1

Ассемблер микроконтролер aduc812

07.05.2020, 21:40. Показов 1051. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста сделать программу

Задача:

Расположить элементы массива в обратном порядке. Массив находится во
внутреннем ОЗУ (Длина массива = 6, начальный адрес внутреннего ОЗУ=C3H). Новый
массив разместить во внутреннем ОЗУ, начальный адрес которого равен 42H.
Для указанной задачи написать программу на ассемблере, оформив выполняемые
действия в виде подпрограммы, которая должна вызываться из главной программы.
----------------------------------------------------------------------------------------------------

Пример задачи: ;Программа пересылки массива данных из области;памяти программ ППЗУ в область памяти данных;XRAM для микроконтроллера aduc812
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$MOD812                         ;присоединение модуля ADuС812
ADR_ST EQU 03H              ;ст. байт нач. адреса массива XRAM
ADR_ML EQU 00H             ;мл. байт нач. адреса массива XRAM
DL EQU 8                         ;длина массива=8 байт
ORG 0000H                      ;начальный адрес программы
                                       ;Передача параметров в подпрограмму XS_CS
MOV DPTR, #ADR_CS       ;DPTR = нач. адр. масс. в ППЗУ
MOV R0, #ADR_ML           ;R0 = мл. байт адр. масс. в XRAM
MOV P2, #ADR_ST           ;P2 = ст. байт адр. масс. в XRAM
MOV R1, #DL                  ;R1 = длина массива
LCALL XS_CS                  ;вызов подпрограммы XS_CS
SJMP KONEZ                   ;переход в конец программы
 
;-------------------------------------------------------------------------------
                                    ;Подпрограмма XS_CS пересылки массива из ППЗУ в XRAM
                                    ;Вход: DPTR = адрес начало массива в ППЗУ
                                    ; R0 = младший байт адреса начала массива в XRAM
                                    ; P2 = старший байт адреса начала массива в XRAM
                                    ; R1 = длина массива;
                                    ;Массив в области XRAM должен находится в пределах
                                    ;одной 256-байтовой страницы
 
XS_CS:
PUSH ACC                      ;сохранить в стеке АСС
XC:
CLR A                             ;А = 0
MOVC A, @A+DPTR          ;А = очередной байт из ППЗУ
MOVX @R0, A                 ;XRAM = очередной байт
INC DPTR                       ;следующий адрес ППЗУ
INC R0                           ;следующий адрес XRAM
DJNZ R1, XC                   ;пока не все байты переданы,
;продолжить
POP ACC                        ;восстановить из стека содержимое АСС
RET                               ;возврат из подпрограммы
;---------------------------------------------------------------------------
                                     ;Массив пересылаемых данных длиной 8 байт,
                                     ;представляющий собой текст 'Privet !' в коде ASCII
ADR_CS: DB'Privet !'
;---------------------------------------------------------------------------
KONEZ:
END                              ;конец программы
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2020, 21:40
Ответы с готовыми решениями:

Посоветуйте микроконтролер!
Задумался я о создании OSD (он скрин дисплей) посветуйте плиз микроконтролер, требования мин...

Работа с ЦАП в ADUC812
Подскажите,пожалуйста,как запрограммировать ЦАП ADUC812 на С? Подойдет любой простейший пример...

Микроконтролер МСS-51 внешняя память
Микроконтролер МСS-51 зовнишня памятьПідключити до мікроконтролера зовнішню память програм обємом 8...

aduc812 на delphi
Необходимо написать программу на Delphi, такую ,чтобы при нажатии на кнопку клавиатуры компьютера,...

Программирование микроконтроллера ADuC812
Пожалуйста,помогите кто чем может..Чем заливать программу я знаю,мне нужна сама прога на С++ для...

2
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
08.05.2020, 04:01 2
Цитата Сообщение от Dalailama Посмотреть сообщение
Помогите пожалуйста сделать программу
Ну хоть чуть-чуть вы что-нибудь попробовали сделать сами с учетом (MCS-51) Расположить элементы массива в обратном порядке
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,015
08.05.2020, 07:31 3
Цитата Сообщение от Dalailama Посмотреть сообщение
в обратном порядке
Алгоритм выбран?
0
08.05.2020, 07:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2020, 07:31
Помогаю со студенческими работами здесь

Измерение ускорения на микроконтроллере ADuC812
нужна Программа для измерения ускорения на микроконтроллере ADuC 812 (прошивка для акселерометра...

Помогите сделать секундомер для ADuC812
Если в этом шарите, то помогите, пожалуйста. Прибор ADuC812, нужно запрограммировать как секундомер...

(AduC812) Проверка инструкции MUL в симуляторе ADSIM812
Доброго времени суток всем. Наступил очередной семестр второго курса и появился новый предмет, а...

Aduc812. архитектура mcs51. Сравнение числа в R0 с в числами во внешней памяти
их нужно сравнить. те что не совпадают, записать во внешнюю память и посчитать, сколько чисел...

(ADuC812) Удвоить значения каждого элемента массива, находящегося во внутреннем ОЗУ
Задача. Удвоить значения каждого элемента массива, находящегося во внутреннем ОЗУ и переписать его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru