Тема: Сайт групп факультета ИТ МИРЭА :: Лабораторные работы по ОргЭВМ
Прислано BuHTOPE3 29.02.2012 16:33
#1
Дамп папки с лабораторок по оргэвм. В архиве прога, старая методичка (Новую отфотаную выложу попозже, варианты берем из новой). Программа работает на вин7 обеих версий и на хр sp3.
Лично мне предмет понравился, довольно интересно.
Прислано paxeefixee 29.02.2012 17:07
#2
Все то же самое (кроме, пожалуй, файла org.xls (кусок таблицы из методички из doc-а, записанный в таблицу excel-я)) есть в
этом посте. Смысл?
Редактировал paxeefixee 29.02.2012 17:08
Прислано paxeefixee 26.03.2012 11:39
#3
< Скоро здесь будут лабы, руководства к ним и слегка грязно-патченый эмулятор :) Скорее всего до конца этой недели. >
1я часть: небольшой патч для эмулятора.
Эмулятор (кто запускал - тот уже заметил, наверное) изобилует неочевидностями и порой просто кривизной, и это не может не печалить. Исправить бы в нем много чего было бы неплохо, но боюсь, исправлять пришлось бы слишком много, и "дешевле" было бы просто написать свой эмулятор ;)
Но что раздражало более всего (меня, по крайней мере) по части использования, не считая необходимости вбивать команды не мнемоникой, а сразу кодами и не самая удобная система ввода - так это окна, разворачивающиеся во весь экран и их взаимная блокировка.
Посему сделал патчик, который правит эти 2 вещи:
- окна теперь нормального размера
- окна не блокируют друг друга, поэтому можно свободно переключаться между ними
У него там было нечто вроде (не вполне понятно, зачем):
Код
myWindows[] = EnumThreadWindows();
for (i = 0 ; i < myWindows.size; i++ )
{
if (myWindows[i].Visible && myWindows[i].Enabled)
{
myWindows[i].Enabled = false;
}
}
Мелькала у нас также идея написания своего эмулятора (потому что этот уж очень не устраивал) и нормального редактора ASM-команд. Насчет первого не знаю пока, второе уже начато, формат образов эмулятора поковырял (а там... лучше и не заглядывать). Да, заметьте одну из немногих полезных фич - полный дамп состояния эмулятора (Файл->Сохранить как, Файл->Открыть, некоторые не заметили).
Хотел еще пропатчить неочевидность работы указателя команд (PC), но задав вопрос на лабе получил ответ "это не баг, это фича". Попробуйте перезаписать кнопками "PcL"/"PcH" (изменение младшего/старшего байта PC) адрес следующей команды и нажать на "Выполнить" в покомандном режиме - значение счетчика изменится только визуально. Там почему-то 2 адреса, по которым хранится значение его, и для того чтобы и правда перейти к другой команде придется еще и нажать "ОЗУ" и ввести в поле ввода адреса ОЗУ еще раз желаемый адрес для PC (!)
Действительно, надпись над полем после выполнения затем меняется на "Младший байт счетчика команд", но это происходит не всегда, и не вполне понятна связь между регистром PC и полем ввода адреса ОЗУ (а вам?). Более того - ввод любого адреса в поле адреса для ОЗУ приведет к перезаписи им PC (!).
2я часть: первая лаба.
Лабы у нас как вы видите две. Первая заключается в тупом вбивании команд в эмулятор и потактовой записи их работы в таблицу. Это задание также сразу захотелось автоматизировать (ибо совсем не улыбалось каждый такт руками копировать-вставлять данные со схемы в таблицу), но оказалось, что все уже сделано до нас :-D
Благодаря ув.
Nosferatu с vv206 в соотв. дампе вы можете обнаружить софтинку "EVM.exe", которая путем дергания FindWindowEx/SendMessage(WM_GETTEXT) не стесняясь берет нужные для таблицы данные прямо из структурной схемы эмулятора CPU580.exe (проверить легко - напр. напишите на структурной схеме в поле "PSW" что-нибудь свое, а затем после нажатия F1 посмотрите в поле "комментарий" в EVM).
Т.е. запускаем эмулятор, запускаем EVM, вводим нужные по варианту команды, начинаем потактово выполнять и после каждого такта переключаемся на EVM, нажимаем F1 и заполняем таким образом очередную строку таблицы.
Я хотел автоматизировать выполнение, но по заданию там таки просят чтобы напр. если команда перемещает данные из регистра в память (напр. MOV M,B - передача из регистра B в ОЗУ по адресу H:L), то нужно чтобы в этом регистре было что-то, (а для данной команды еще и что-то в H:L), также там и встречаются JNZ/CALL (переход), из которых потом надо бы вернуться обратно, дабы продолжить выполнение варианта. Если у кого есть идеи как это лучше сделать - скажите.
Посему что могу предложить пока - сделать глобальную комбинацию клавиш для EVM.exe (т.е. чтобы не нужно было переключаться постоянно на его окно) и сгенерить дампы для эмулятора для вашего варианта.
Анализировать логику, что я привел выше (записать в зав. от команды что-то в регистры, вернуться назад после JMP, ведь по тому участку памяти, куда мы перейдем скорей всего пусто, нет перехода обратно) я пока увы, не готов. Для примера посмотрите в том же архиве vv206 примеры сделанных 1х лаб - несложно, не забывать только вписывать что-нибудь типа 0xABCD в регистры, к которым идет обращение, и если эмулятор делает что-то не совсем верно (а такое у него бывает) - отразить это в комментарии.
3я часть: лаба 2.
Вот тут уже интереснее - нужно реализовать 7 простых алгоритмов (разве что умножение/деление вспомнить придется в 5м и 6м задании). Свои решения с комментариями будут позже (не делал свой вариант пока), вам же пока предлагаю заглянуть все в тот же архив с вв206, взять любой готовый вариант, и если не хочется разбираться - просто переписать его, изменив цифры (алгоритмы-то у всех одни и те же).
Вот-с. Пока это все, что я могу вам предложить. Дел навалилось немало, как я уже говорил, поэтому остальное если хотите - ждите чуть позже.
// UPD. Еще одна грязно-патченая версия, альфа, теперь по F1 не открывается справка (то что обещал сделать для облегчения выполнения 1й лабы), и не мешает отлову его нажатия EVM-ом, у него итак был глоб. хоткей. Поэтому можно теперь запускать их вместе и не переключаясь жать F1. Прилагаю не патч, а готовый exe. Также отдельно кладу EVM.
Редактировал paxeefixee 28.03.2012 10:10
Прислано FiLLiPPoFF 26.03.2012 14:29
#4
DASM32,
Дел навалилось немало
Мажешься?! :|
Прислано paxeefixee 26.03.2012 15:45
#5
FiLLiPPoFF, как тебе будет угодно.
Прислано Saraf 28.03.2012 10:55
#6
1
Прислано FiLLiPPoFF 15.04.2012 06:26
#7
Мой 4 вариант 1 лабораторки
Редактировал FiLLiPPoFF 15.04.2012 13:26
Прислано paxeefixee 17.04.2012 10:47
#8
Вот мой черновой вариант второй (вар. 8). Не хватает 5, 6 и 7 заданий, ибо в первых двух умножение (тут есть мысли как сделать), а в 7м - деление (тут еще пока мыслей не особо). Извиняйте, что так торможу, не столь давно вспомнил что скоро лабы :-D.
Делал утром сильно невыспавшись, могут быть ляпы.
// UPD. Договнокодил 5 и 7
Редактировал paxeefixee 17.04.2012 23:48
Прислано paxeefixee 18.04.2012 13:39
#9
В ближайшее время постараюсь дооформить, приведу к cdecl/stdcall, сделаю деление (там кстати не такой сложный алгоритм как казалось). И да, в 8м пункте 2й лабы можно через регистры, как делал я, искренне не понимая зачем в данной задаче стек, но сегодня мне пояснили, что там имелось ввиду сделать все же "канонично", как в
стековой машине - сделал нечто похожее, доделаю до нормального.
Как и советовал в .doc-е - не советую пользоваться методичкой как справочником команд, они там описаны не полностью (например поймете из нее, что при RAR у вас старший разряд заполнится флагом C?) и не все (напр. нет STAX, логичного приложения к LDAX), вместо этого рекомендую вместе с ней (если не "вместо", то "вместе") например
http://affon.narod.ru/Posobie.htm, там есть даже таблица, поясняющая какие команды и как "трогают" флаги, да и по мнемонике код искать удобней, описания полнее и т.д.
Также только вчера дошло (и как раньше не доходило, не могу понять, читал ведь), что ведь наш КР580ВМ80А == i8080, под который есть солидное количество
хороших эмуляторов и
хороших же манов с описаниями команд, примеров кода и всего-всего. У i8085 (КР1821ВМ85А) должен быть схожий набор команд и такая же разрядность регистров и шин, а под него эмуляторов еще больше. Тут вам и
под Windows, и
под DOS, и
"гнутый" кроссплатформенный, и
еще, и
еще, и
еще... И с нормальными макроассемблерами/дизассемблерами, отладчиками, прерываниями, I/O, даже с периферией, причем можно сделать любую - знай пиши плагинную dll с устройством или пользуйся готовыми! Снова "все уже написано до нас".
i8080 на JS,
на bash,
еще на JS с кнопкой "Транслировать прелесть" (транслятор только правда походу),
под KP580BM80, еще
более скромный,
еще.
Также он использовался в "Радио-86РК", "УМПК-86/80", поэтому эмуляторы для них тоже подойдут (напр.
здесь).
Тоже есть на JS, и
еще один (новая версия).
В общем, есть из чего выбирать (надеюсь, накидал ключевых слов), и вы можете сделать свой выбор. Если сделаете хороший - предлагаю отписать, я например еще свой не сделал :)
Для второй лабы Бражникова сказала, что не обидится, если мы будем использовать другие эмуляторы; по ее словам в первой же мы должны пользовать все-таки этот, ибо не столько узнавать как работает данный процессор и как выполнит данные по варианту команды, сколько вылавливать баги в нашем CPU580...
Редактировал paxeefixee 08.10.2012 22:29
Прислано Olorin 15.05.2012 18:59
#10
Мои лабы (если кому нужно). 6 вариант.
UPD: Забыл таблицу для 1 лабы.
Редактировал Olorin 15.05.2012 19:14
Прислано Olorin 16.05.2012 10:42
#11
Варианты заданий для ИТВ-2-09:
1-Кемлер
2-Ладик
3-Мавзолевский
4-Филиппов
5-Федоров
6-Черкасов
7-Ершова
8-Фролов
9-Шебалкин
10-Акишин
11-Грабарчук
Прислано paxeefixee 16.05.2012 13:32
#12
Да, насчет первой лабы. Кто делает первую - не попадитесь на недопонимание, на которое попался я. Байты в таблице из методички - это НЕ дамп памяти (не команды + операнды), это отдельные команды, т.е. для двух-трех-байтных команд операнды нужно также придумывать самим. В итоге я потерял несколько команд в отчете.
К Бражниковой можно подойти в пятницу после 4й пары.
Редактировал paxeefixee 16.05.2012 13:47
Прислано dhmhd 16.05.2012 19:14
#13
А теперь пусть отзовутся те, кто подумал, что это дамп памяти...
Прислано paxeefixee 16.05.2012 19:55
#14
dhmhd, статистику составляешь? Могу тыкнуть в имена и назвать пальцы :-D
Прислано dhmhd 16.05.2012 19:58
#15
Нет:D, не можешь, ты их замазал, ничего не видно. Кстати, ничего смешнее в жизни не видел...
Прислано paxeefixee 16.05.2012 20:05
#16
dhmhd, имена-то вполне видно.
Прислано dhmhd 16.05.2012 20:10
#17
НЕТ, HARM, СКАЗАЛ, НЕ ВИДНО НИЧЕГО!!! НИ ИМЕН, НИ ВАРИАНТОВ, БЛЕАТЬ!
Редактировал dhmhd 16.05.2012 20:11
Прислано HARM_x64 17.05.2012 17:59
#18
Вот кому надо мои лабы по ОРГ ЭВМ (1 вариант).