Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.01.2017
Сообщений: 2

Intel 8051 модификация функции под косвенную арессацию

16.01.2017, 00:50. Показов 1028. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллеги программисты, помогите разобраться с косвенной адресацией на ассемблере.
Вот, например, есть у меня подпрограмма для вычитания одного числа из другого:
Assembler
1
2
3
4
5
6
7
8
9
10
SUBSTRUCTION:
       MOV A,R3
       CLR C
       SUBB A,R5
       MOV R7,A
 
       MOV A,R2
       SUBB A,R4
       MOV R6,A
       RET
Перед вызовом этой подпрограммы я записываю в регистры R2 и R3 число от которого отнимаю,
а в регистры R4 и R5 число которое отнимаю, результат потом беру из R6-R7.

Так вот, как я понял, для косвенной адресации используются только регистры R0 и R1...
Мне в них поместить указатели на байты первого и байты второго числа?
Если да то как это сделать, как потом по указателям поместить байты в регистры, нужно ли это?
Или я вообще суть не уловил?

Возможно вопрос глупый, но я для работы использую C# и ассемблер вообще тёмный лес какой-то.
Мне очень поможет если вы покажите на примере как тут использовать косвенную адресацию =)
Также буду благодарен если поделитесь годным местом для изучения ассемблера, где на пальцах разжёвывают как с этим всем работать...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2017, 00:50
Ответы с готовыми решениями:

Intel 8051
1 В сегменте CODE помещена строка-константа неопределенной длины, но для строки задан конечный символ, например, “This is long string...

Intel 8051 - pinnacle
Задача: МП контроллер сейфа Код замка от 0000 до 9999 Установка кода по последовательному каналу с центрального пульта охраны (ЦПО). ...

Intel 8051. УСАПП
Добрый вечер, может быть кто нибудь показать как реализуется УСАПП с асинхронным режимом. Не понимаю как сделать чтобы усапп тактировался...

3
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,078
16.01.2017, 10:48
Содержимым регистра R0 адресуйте ячейку памяти, в которой находится младший (старший) байт уменьшаемого, и т.д.
0
0 / 0 / 0
Регистрация: 15.01.2017
Сообщений: 2
16.01.2017, 18:05  [ТС]
Цитата Сообщение от pyzhman Посмотреть сообщение
Содержимым регистра R0 адресуйте ячейку памяти, в которой находится младший (старший) байт уменьшаемого, и т.д.
Непонятно

Вот, скажем, младший байт первого числа лежит по адресу 40h, перед выполнением подпрограммы я этот адрес записываю в R0, а в самой подпрограмме записываю в аккумулятор значение младшего байта с помощью MOV A, @R0, правильно?
Но как тогда быть с остальными байтами, в какой момент мне мне менять адрес который лежит в R0?
Делать это внутри подпрограммы? Но откуда она будет знать этот адрес?

Добавлено через 16 минут
А, вроде разобрался, просто записываем следующий байт по следующему адресу перед запуском подпрограммы, а в ней используем инкремент на R0, так же?
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
16.01.2017, 19:26
Цитата Сообщение от Obelus Посмотреть сообщение
момент мне мне менять адрес который лежит в R0?
Делать это внутри подпрограммы? Но откуда она будет знать этот адрес?
так он лежит в R0
примерно так
Assembler
1
2
3
4
5
6
7
MOV A, @R0; значение по адресу 40
INC R0; увеличили адрес
MOV A, @R0; значение по новому адресу 41
INC R0; увеличили адрес
MOV A, @R0; значение по новому адресу 42
INC R0; увеличили адрес
MOV A, @R0; значение по новому адресу 43
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2017, 19:26
Помогаю со студенческими работами здесь

Intel 8051. Арифметические действия
Есть однобайтный микроконтроллер Intel 8051 и нужно с учетом этого посчитать арифметические действия – как бы они выполнились на этом чипе....

Работа со стеками intel 8051
1 Реализовать программу. Пользователь устанавливает в Р0 некоторое число N. Программа должна занести в стек натуральные числа от 1 до N....

Intel 8051. Сравнение двух чисел
Доброго времени суток! Нужна Ваша помощь. Задачка для программирования на языке Ассемблер. Содержание задачи: составить программу на...

Программа с использованием подпрограмм intel 8051
Реализовать три подпрограммы (вызываемые с помощью команд call), принимающие в качестве аргументов в регистрах R0–R3 первое беззнаковое ...

Таймер для светофора на микропроцессоре intel 8051
Реализовать модель светофора, если принять что включение каждой лампы обусловливается «1» на одном из первых трех контактах P1....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru