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

Составить на ассемблере МК-51 и отладить программу

18.10.2021, 12:01. Показов 1465. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Составить на ассемблере МК-51 и отладить программу сравнения содержимого ячейки внешней памяти данных с адресом 0503h и регистра R2 банка 1. Если содержимое равно, то в ячейку внешней памяти данных записать число 10h, иначе 01h.
Вот как я записала, исправьте пожалуйста:
Assembler
1
2
3
4
MOV DPTR,#0503H
MOVX A,@DPTR
CJNE A,R2,01H
MOVX R2,10H
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2021, 12:01
Ответы с готовыми решениями:

МК-51. Составить на ассемблере МК51 и отладить программу
СОСТАВИТЬ НА АССЕМБЛЕРЕ МК-51 И ОТЛАДИТЬ ПРОГРАММУ, КОТОРАЯ ПО ОПРОСУ СОДЕРЖИМОГО ЯЧЕЙКИ С АДРЕСОМ 09H ВНУТРЕННЕЙ ПАМЯТИ ДАННЫХ ВЫПОЛНЯЕТ...

МК-51. Составить на ассемблере МК51 и отладить программу
СОСТАВИТЬ НА АССЕМБЛЕРЕ МК-51 И ОТЛАДИТЬ ПРОГРАММУ, КОТОРАЯ ПО ОПРОСУ СОДЕРЖИМОГО ЯЧЕЙКИ С АДРЕСОМ 0006H ВНЕШНЕЙ ПАМЯТИ ПРОГРАММ ВЫПОЛНЯЕТ...

МК-51. Составить на ассемблере МК51 и отладить программу - Микроконтроллеры
Помогите решить задачу: Составить на ассемблере МК51 и отладить программу, которая по опросу содержимого ячейки с адресом 0004Н внешней...

9
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
19.10.2021, 14:59
Задача с небольшим подвохом, прежде чем использовать банк 1, надо установить стек
См по этому поводу статью

https://what-when-how.com/8051... and-stack/

(автоматически переводится в Yandex-браузере)

Кстати, а как вы отлаживаете программу (с помощью какого отладчика) ?

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
start code 0
    org start
    mov sp,#60h ; перемещаем стек, т к после сброса он находится в банке 1
    using 1   ; указать, что используется банк 1
    setb rs0  ; установить банк 1
    clr  rs1
    mov R2,#1 ; заносим значения в память
    mov A,#2
    MOV DPTR,#0503H
        movx @dptr,a
 
    mov dptr,#0503h ; искомая программа
    movx a,@dptr
    cjne a,ar2,way2 ; см using по поводу значения ar2
way1:   mov a,#10h
    movx @dptr,a
    jmp $    ; останов
way2:   mov a,#01h
    movx @dptr,a
    jmp $    ; останов
    end
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,611
22.10.2021, 02:32
Цитата Сообщение от qbfan Посмотреть сообщение
Кстати, а как вы отлаживаете программу (с помощью какого отладчика) ?
А я бы вас спросил каким компилятором ассемблера вы пользуетесь?
Вот что означает
Assembler
1
2
3
    using 1   ; указать, что используется банк 1 
    setb rs0  ; установить банк 1
    clr  rs1
И что означает
Assembler
1
jmp $    ; останов
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
22.10.2021, 08:16
Цитата Сообщение от qbfan Посмотреть сообщение
Задача с небольшим подвохом, прежде чем использовать банк 1, надо установить стек
стек то здесь каким боком?
0
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
22.10.2021, 10:54
А я бы вас спросил каким компилятором ассемблера вы пользуетесь?
Это M-IDE 51 http://www.opcube.com с ассемблером asem и компилятором Си SDCC

Что означает using 1 ?
Регистры могут адресоваться как с помощью регистровой, так и с помощью прямой адресации (в этом примере - ar2)
using 1 означает, что значение ar2 соответствует банку 1, т е ar2=8*1+2=0Ah.
Но команда using в процессоре ничего не переключает, поэтому биты rs0, rs1 устанавливаются явно.

Что означает jmp $ ; останов
jmp $ означает бесконечный переход на текущий адрес для отладчика. Кстати, в M-IDE 51 очень удобный
отладчик, хотя и демо версия на 2 кб кода.

стек то здесь каким боком?
По reset устанавливается SP=7, т е стек будет заполнять ячейки 8, 9, 0Ah и т д, т е область банка 1.
Поэтому любая реальная программа в которой есть подпрограммы и прерывания нормально работать не будет.
(Можно конечно возразить, что в этом примере нет подпрограмм. Но на такие моменты следует обращать внимание).
1
22.10.2021, 12:30

Не по теме:

Всё это замечательно, но Евгении это до лампочки.

0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,611
23.10.2021, 01:19
Цитата Сообщение от qbfan Посмотреть сообщение
Но команда using в процессоре ничего не переключает
А на кой хрен она тогда нужна?
Цитата Сообщение от qbfan Посмотреть сообщение
jmp $ означает бесконечный переход на текущий адрес для отладчика
Это то понятно. Но почему JMP? В наборе инструкций 51-го нет такой инструкции. Компилятор сам что-ли выбирает какой их трех вариантов выбрать?
Цитата Сообщение от qbfan Посмотреть сообщение
По reset устанавливается SP=7, т е стек будет заполнять ячейки 8, 9, 0Ah и т д, т е область банка 1.
В вашем коде стек никак не задействован. Так что формально это лишнее. Но я в принципе с вами согласен. Устанавливать указатель стека в начале программы для 51-го нужно всегда. Это как мыть руки перед едой.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
23.10.2021, 02:01
Цитата Сообщение от qbfan Посмотреть сообщение
По reset устанавливается SP=7, т е стек будет заполнять ячейки 8, 9, 0Ah и т д, т е область банка 1.
разве стек вверх растет?
Цитата Сообщение от qbfan Посмотреть сообщение
Можно конечно возразить, что в этом примере нет подпрограмм
вот именно
Цитата Сообщение от ValeryS Посмотреть сообщение
стек то здесь каким боком?
не надо загромождать примеры программ не относящимися сущностями, это мешает восприятию главной идеи
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,611
23.10.2021, 02:59
Цитата Сообщение от ValeryS Посмотреть сообщение
разве стек вверх растет?
В 51-м именно так. Так что лучше всегда мыть руки перед едой, даже если не до чего не дотрагивался ранее.
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
23.10.2021, 08:09
Цитата Сообщение от northener Посмотреть сообщение
В 51-м именно так.
не знал
Цитата Сообщение от northener Посмотреть сообщение
Так что лучше всегда мыть руки перед едой, даже если не до чего не дотрагивался ранее.
"И саго, употребленное не в меру, может принести вред"
"Без надобности носимый набрюшник - вреден"(с) Козьма Прутков
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2021, 08:09
Помогаю со студенческими работами здесь

Разработать на ассемблере и отладить программу, которая выполняет
Разработать на ассемблере и отладить программу, которая выполняет: 1) ввод с клавиатуры двух 4-значных шестнадцатеричных чисел (для ввода...

Написать на Ассемблере и отладить программу реагирования курсор мыши Вывести меню с первыми, вторыми кушаньями и десертом. Против каждого кушанья дол
Написать на Ассемблере и отладить программу реагирования курсор мыши Вывести меню с первыми, вторыми кушаньями и десертом. Против каждого...

Составить и отладить программу
Составить и отладить программу нахождения расстояния на плоскости между точками (х1,у1) и (х2,у2). (d=корень из всего этого(x2-x1)^2...

Составить и отладить программу
Составить и отладить программу вычисления значения функции с помощью бесконечного ряда Тейлора с точностью заданного ε по формуле:

Средствами С++ составить и отладить программу
Средствами С++ составить и отладить программу, позволяющую определить лежит ли точка с произвольной координатой (Х и У) внутри...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru