Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056

область памяти XDATA для микроконтроллера MSC-51 (i8051, АТ89С52)

07.10.2019, 21:51. Показов 4031. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здр.. имеется следующее задание.. нужно в области памяти XDATA задать массив целых беззнаковых двухбайтных чисел arr[i].. все это должно быть написано в среде Keil uVision 4 для микроконтроллера MCS-51 (8051, АТ89С52).. пжл, проверьте правильность написания мной кода конкретно для этого задания и вообще всей структуры программы.. прошу указать мне и исправить ошибки, если таковые имеются..
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
;Общие для модуля директивы
$NOMOD51
$NOLIST
$INCLUDE(REG52.INC)                    ; или #include <reg52.h>
$LIST
 
?STACK SEGMENT  IDATA              ; размещение сегмента стека ?STACK в главном модуле
       RSEG     ?STACK
       DS   20
 
xdata_seg  SEGMENT XDATA            
        RSEG    xdata_seg          
arr:        dd 1,2,3,4,5           ; в области памяти XDATA задан массив целых беззнаковых двухбайтных чисел arr[i]               
 
;переход на стартовый адрес (0) в главном модуле
CSEG AT 0
LJMP START
 
START:      MOV SP,#?STACK-1           ; установка начала стека
 
;здесь размещается остальной код
 
CSEG AT 0
 
END                                    ; конец файла
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2019, 21:51
Ответы с готовыми решениями:

Поэлементное арифметическое вычитание массивов X и Y для микроконтроллера MSC-51 (i8051, АТ89С52)
Добрый день. Есть следующая задача: Даны массивы X и Y, состоящие из 7-ти двухбайтных целых чисел, расположенные в сегменте памяти...

Передача данных массива Y через последовательный порт на Си для микроконтроллера MSC-51 (i8051, АТ89С52)
Была дана задача на Assembler: Инициализируйте последовательный порт со следующими параметрами: 9 бит данных, присутствует стоп-бит,...

Мерцание светодиода с периодом на языке Assember для микроконтроллера i8051
Всем привет, нужно написать код под это условие Написать программу, которая обеспечивает мерцание светодиода, подключенного по ниже...

24
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
09.10.2019, 17:42  [ТС]
Студворк — интернет-сервис помощи студентам
Intel4004, а как можно толкнуть/вытолкнуть в/из стек(а) значение любого из общих регистров R0-R7 ??
первое, что пришло в голову не выполняется и выдает ошибку..
Assembler
1
2
3
PUSH R0
.....
POP R0
0
 Аватар для Intel4004
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
09.10.2019, 18:02
В ассемблере x51 инструкций PUSH/POP регистр - нет.
Но регистры замаплены на память. Т.е. DATA:0x00-0x07 - первый банк регистров, DATA:0x08-0x0f - второй, и т.д. Всего банков 4.
Если вы не играетесь с переключением банков - то по умолчанию активен первый банк, и регистры R0-R7 - это DATA:0x00-0x07
И, соответственно, вместо PUSH R2 можно использовать PUSH 2, где 2 - это адрес памяти)
Но лучше этим не злоупотреблять. Когда вам окажется мало восьми регистров и вы начнете использовать переключение банков - огребете глюки.
Лучше делать так:
Assembler
1
2
MOV A,R2
PUSH ACC
Добавлено через 4 минуты
hint: кроме аккумулятора A есть еще регистр B. Его тоже можно в некоторых случаях использовать как аккумулятор.
1
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
09.10.2019, 18:06  [ТС]
Intel4004, а почему используется инструкция..
Assembler
1
PUSH ACC
вместо..
Assembler
1
PUSH A
??
0
 Аватар для Intel4004
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
09.10.2019, 18:20
А - когда использование аккумулятора входит в опкод.
ACC - это алиас (адрес памяти, на который замаплен A). Используется с инструкциями, в которых аккумулятор передается в качестве аргумента.

ADD A,#5 - тут A - не адрес. ADD A,#const - это двухбайтовая инструкция. Первый бай инструкции: ADD A(A - не аргумент, а опкод), Второй байт: аргумент #const.
PUSH ACC - тут ACC это адрес. Первый байт инструкции: PUSH, Второй байт - аргумент адрес ACC.

Добавлено через 1 минуту
Т.е. PUSH A - это была-бы однобайтовая инструкция без аргументов. Такой инструкции в ассемблере x51 нет.
1
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
10.10.2019, 01:52
Цитата Сообщение от Intel4004 Посмотреть сообщение
Такой инструкции в ассемблере x51 нет
Какой-то странный у вас ассемблер х51. В классическом ассемблере от intel 8051 имя A используется в байтовых операциях, включая PUSH и POP. А вот ACC используется для битовых операций.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.10.2019, 01:52
Помогаю со студенческими работами здесь

Выбор чисел из массива в диапазоне от 105 до 115 для микроконтроллера i8051
Как можно выбирать числа от 105 до 115

программирование микроконтроллера i8051
Написать программу в пинакле(эмулятор кристала 8051) и прикипит ее к протеусу и проверить правильность написанной программы №1 ЧИМ-1...

(i8051) Вычислить среднее арифметическое для массива чисел, расположенного во внутренней памяти
Вообщем всю жизнь сижу на языках высокого уровня и лезть в дебри ассемблера до сих пор не приходилось, однако на кафедре моего университета...

Область памяти для переменной и её значения. Это одна и та же область?
Добрый день! Задумался над таким вопросом. Есть переменная, а есть её значение. При создани переменной (без инициализации), насколько я...

Куплю Zyxel MSC-1000A (MSC-1000) Управляющий контроллер. Б/У
Куплю бу модуль управления DSLAM Zyxel MSC-1000A или MSC-1000. Стоят в шасси IES-2000 или IES-3000.


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru