Консультация № 177153
09.03.2010, 00:16
0.00 руб.
0 20 1
Здравствуйте. У меня вопрос: нуеобходимо написать программу на Assemblel. Есть только условие, дополнительные данные (тип процессора, платформа) не указаны. Наверно имеется ввиду "наиболее стандартное" сейчас - TASM, Windows.
---
Условие:
Составить программу на Ассемблере для арифметического выражения:
R2 = (01011010b + 10010011b)-03h*R1
Дополнительно к тексту программы добавить блок-схему алгоритма исполнения микропроцессором заданой последовательности команд. Привести описание использованных команд микропроцессора с определением типа адресования, состав команд и операндов.
Условные обозначения:
R - регистор общего предназначения
() - произвольный параметр.
---
Заранее благодарю.

Обсуждение

Неизвестный
09.03.2010, 09:59
общий
Точно ничего не сказано о процессоре? Дело в том, что название регистра R1 - специфическое, не у всех процессоров есть
Неизвестный
09.03.2010, 10:17
общий
та я сам удивился, когда ничего этого не было указано, никаких данных, только условие - то что я написал, и все.
давно
Посетитель
7438
7205
09.03.2010, 10:27
общий
Тогда скажите, что Вы изучаете?
Как правильно заметил Boriss, задание говорит скорее о процессоре типа 51-го
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
09.03.2010, 10:34
общий
Да, какой предмет?
Неизвестный
09.03.2010, 10:50
общий
контроллер MCS-51, предмет - микропроцессорная техника
Неизвестный
09.03.2010, 10:56
общий
также я в затруднительном положении, скачанный мною TASM что-то глючит. Если знаете, подскажите ссылку для скачивания Ассемблера. Таже интересует ProView - он приведен в конспекте в качестве примера, но найти его в интернете я так и не смог.
давно
Посетитель
7438
7205
09.03.2010, 11:14
общий
Serg90:
Вот и ответ: MCS-51...
По крайней мере, для данной задачи TASM Вам не нужен ... Это совершенно разные платформы.
Разве что, хотите кроме ассемблера MCS-51 еще изучить Ассемблер x86.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
09.03.2010, 11:36
общий
так в какой ассемблере мне лучше начать делать задание, а также какая литература подойдет лучше всего для изучения и выполнения данного задание с примерами(их у меня еще 2):
2. Для параллельного порта интерфейса КР580ВВ55 записать управляющее слово для программирования в режиме 1. Канал А-ввод. Привести пояснения про структуру управляющего слова и фрагмент программы на Ассемблере, которая позволяет загрузить управляющее слово, если адрес DEh
3. Объяснить значение основных узлов и блоков программируемого интервального таймера КР580ВИ53. Записать управляющее слово для одного из режимов его работы. СТ0=1, N=4.
---
PS: учусь заочно.
давно
Посетитель
7438
7205
09.03.2010, 12:36
общий
Не может быть, чтобы Вам не давали никаких рекомендаций... Хотя бы список литературы должен был быть. Или дали задания и все?
Или Вы, как большинство заочников, все пропустили "мимо ушей"?
2-е задание, на мой взгляд, предполагает написание программы уже для КР580, хотя и не обязательно. Данным интерфейсом можно управлять и 51-м...
Только вот непонятно, что значит: "если адрес DEh"? Адрес чего?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
09.03.2010, 13:07
общий
Или Вы, как большинство заочников, все пропустили "мимо ушей"?
очень сложно выучить, я хотел найти легкие пути, найти похожие примеры решения. А то я начал делать задания, а даже не могу найти Ассемблер, в котором писать программы.
давно
Посетитель
7438
7205
09.03.2010, 14:37
общий
В программировании легких путей не бывает. Надо во все вникнуть и во всем разобраться. Если, конечно, Вы не изучаете сей предмет "для галочки"
На данном этапе Вам, по сути, никакой Ассемблер не нужен. Достаточно любого текстового редактора.
Программки настолько просты, что сложность не в написании собственно программ, а в понимании того, что происходит.

Про ProView никогда не слышал, ничего сказать не могу. Вполне возможно, может помочь отлаживать пограммы.
Лично я, в основном, по старинке использую "умственную эмуляцию". В сложных случаях прибегаю к отладке на аппаратуре путем "моргания" разрядом порта и т.п.

По MCS-51 можно почитать, например, вот это описание
Пока почитайте, прониктесь "духом" микропроцессора.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Старший Модератор
31795
6196
09.03.2010, 17:23
общий
Serg90:
Цитата: 292126
Для параллельного порта интерфейса КР580ВВ55 записать управляющее слово для программирования в режиме 1

Практическое применение микросхемы КР580ВВ55(pdf).
Описание микросхемы КР580ВВ55(pdf), правда на украинском, на русском пока нет(вру вот русское описание микросхемы КР580ВВ55(pdf)). Есть описание управляющего регистра и режимов работы.
Передача данных с помощью микросхемы КР580ВВ55 между двумя ЭВМ.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
7438
7205
09.03.2010, 17:54
общий
Serg90:
А по таймеру КР580ВИ53 можно почитать, например, это
Правда,чего-то с трудом понимаю, что значит "СТ0=1, N=4"...
N=4 - возможно, имеется в виду режим 4 - программно-управляемый строб
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
09.03.2010, 19:58
общий
спасибо за помощь, пока буду изучать теорию. как буду писать программы - опубликую для проверки :)
давно
Посетитель
7438
7205
09.03.2010, 21:41
общий
Serg90:
Отлично , пробуйте разобраться самостоятельно
Что непонятно, спрашивайте, поможем
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
13.03.2010, 13:02
общий
в общем результатов пока нет. изучил я конспект, вот этот:
Цитата: Лысков Игорь Витальевич
По MCS-51 можно почитать, например, вот это описание
Пока почитайте, прониктесь "духом" микропроцессора.

но так и не понял как именно сделать задание. Может теперь подскажите литературу для решения этих задач, то есть написания программ на Ассемблере. БЕз практики я думаю не смогу написать программы, так что если есть информация, нужны примеры задач.
давно
Старший Модератор
31795
6196
13.03.2010, 18:12
общий
Serg90:

Ассемблер это не просто язык программирования - это язык процессора. В Вашем случае микропроцессора.
Смотрим что Вам нужно:
Условие: Составить программу на Ассемблере для арифметического выражения:
R2 = (01011010b + 10010011b)-03h*R1

(01011010b + 10010011b) = константа вычисляется в момент компиляции, т.е.
Вам нужно умножить содержимое регистра R1 на 03 и добавить константу которая вычислена в момент компеиляции.
Самое простое, что от Вас требуется, это написать программу ввиде:
R0:=3
R1:=xxxx?
R2:=01011010b + 10010011b
R3:=R1 * R0
R4:= R3 + R2
Заметьте, что я не опитимизировал саму работу с регистрами(просто как рабочий вариант), в АСМх86(оптимизировано) это выглядело бы так:
MOV AX,xxxx?
MUL 0x03
ADD AX,01011010b + 10010011b

Думаю, что переложить на х51 у Вас получится.
ps:капельку напутал с операциями, но попытайтесь понять сами.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
13.03.2010, 18:57
общий
то есть я как понял весь код может состоять из трех строчек?
После вашего примера я начинаю понимать что к чему. Просто я не видел нужно примера на ассемблере и думал, что надо расписывать программы как на С++ и т.д., а начал его изучать только в начале недели. То есть надо логически описать данное выражение с помощью команд. Буду работать над этим.
давно
Старший Модератор
31795
6196
13.03.2010, 20:16
общий
Serg90:
Я Вам уже писал, что ассемблер, это не только язык программирования, но и 3-4-е килограмма(байтов), которые Вы экономите на написании кода.

Давайте попробую подсказать ещё.
Процессор(микропроцессор) выполняет только заложенные в него операции(команды), к примеру факториал нужно(можно) считать с использованием нескольких команд процессора(приблизительно тоже строчек три).
MOV CX,xx
MOV AX,1
LoopA: Mul CX
Loop LoopA
(это типа считаем сам факториал)


Разложите Вашу задачу на более мелкие и посмотрите как можно упростить сам код.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
7438
7205
14.03.2010, 00:40
общий
это ответ
Здравствуйте, Serg90.
Вот Вам решение...
Код:

mov a,r1 ;умножение производится только регистров a и b,
mov b,#3 ; поэтому грузим сомножители в a и b
mul ab ;умножаем a и b. Результат в паре b:a. Считаем, что результат
; помещается в один байт a
cpl a ;поменяем знак, для этого сначала проинвертируем (not a)
inc a ; затем проинкрементируем
add a,#10010011b+01011010b ;добавим слагаемые
mov r2,a ;результат в r2
end
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа