Тема: Сайт групп факультета ИТ МИРЭА :: Лабораторные работы по ОргЭВМ

Прислано 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 вещи:
  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 вариант).