Что вообще из себя представляет МиК?

На занятиях постоянно употребляется слово МиК....Но лично я не припомню примеров МиК.Что это?КПК?Калькулятор?Приветиде пожалуйста примеры МиК.

Посмотрите внимательно.

МиКу посвящены многие материалы сайта. Сам он описан в "Основах компьютерной архитектуры"

Mik

Артем определение МиК есть в сомой первой лекции.
Если нет то могу нописать.

А стате У тебя есть програма

А стате У тебя есть програма МИК. У меня есть тебе нужна могу притащить.

Семинары

Семинары по МИК тоже будут?????

Нет. Это материал для

Нет. Это материал для самостоятельного освоения.

Бонусные задачи по МиК

Следующие задачи запрограммировать на машинном языке МиК:

Задача1. По заданному X вычислить 2X +1.

Задача2. По заданным А и B вычислить 5(A+B).

Задача3. По заданному X вычислить 10 - X.

Задача 4. По заданному X вычислить Y по кусочно заданной формуле:

  1. Y= -5, если X = 0;
  2. Y= 1-X, если X <> 0.

Задача 5. По заданным X,Y,Z вывести наибольшее из них.

Внимание! Участвует только первый курс!

Напоминаю, что умение программировать в МиК включено в аттестационный тест по информатике и что материалы по МиК лежат здесь, здесь и здесь.

Микро компьютер

Микро компьютер

Это задание для всех или

Это задание для всех или только для 1-ого курса?

Ну, Наталья, вы уже большие!

Ну, Наталья, вы уже большие! Только для 1-го.

Молчат что-то все

:)
Молчат что-то все

Задачки нам? )

Задачки нам? )

задача 1

LA 1;
ST ONE;
IN;
ST A;
ADD A;
ADD ONE;
OUT;
HALT;

Настя! Оформляйте правильно код!

Не раз я предупреждал, что рассматриваются только правильно оформленные программы ( с использованием тегов < pre> и < /pre>). И как это делать, тоже неоднократно объяснялось.

LA 1; ST ONE; IN; ST A; ADD

  1. LA 1;
  2. ST ONE;
  3. IN;
  4. ST A;
  5. ADD A;
  6. ADD ONE;
  7. OUT;
  8. HALT;

задача 3

  1. IN;
  2. ST A;
  3. LA 10;
  4. ST TEN;
  5. SUB A;
  6. OUT;
  7. HALT;

задача 2

  1. IN;
  2. ST A;
  3. IN;
  4. ST B;
  5. LA 0;
  6. ADD A;
  7. ADD B;
  8. ST SUMM;
  9. ADD SUMM;
  10. ADD SUMM;
  11. ADD SUMM;
  12. ADD SUMM;
  13. OUT;
  14. HALT;

Настя получает свои бонусы, но ...

1. Решение задач 2 и 3 можно улучшить.
2. Хотелось бы видеть решения не только на Ассемблере.

не получается

Валерий Шахамболетович, у меня не получается просто на МИКе. Если с ';', он выводит ошибку, а если без нее - в содержимом оп одни нули и никаких команд. И еще хотела узнать: на номер строки ссылаться с помощью ')'?

Решение задачи №4

  1. IN;
  2. ST X;
  3. JZ MET;
  4. LA 1;
  5. SUB X;
  6. FN: OUT;
  7. HALT;
  8. MET: LA 5;
  9. ST FIVE;
  10. LA 0;
  11. SUB FIVE;
  12. JMP FN;

Сергей - решение

Сергей - решение принимается.
Правда, это задача 4. И ещё одно замечание - всегда желательно, чтобы была только одна команда остановки и при этом, обязательно В КОНЦЕ текста программы.

Чтобы ввести команду в МиК

Чтобы ввести команду в МиК ...
1. Слева в поле A OП (Адрес ОП) установить адрес команды. Например, 200
2. В поле К ОП (Код операции) установить код операции вводимой команды. Например, 23
3. В поле А (два байта) установить Адресную часть команды. Например, 00 01
4. Щёлкнуть на кнопке "Ввести команду".

Команда появится в ОП по указанному адресу (байты, составляющие команду располагаются по вертикали сверху вниз), а в поле A OП автоматически установится адрес следующего свободного байта. Поэтому можно тут же вводить К ОП следующей команды.

Когда набор команд будет завершён, то адрес первой подлежащей исполнению команды необходимо установить в регистре РА (регистр адреса, слева вверху), после чего можно программу запустить (кнопки слева внизу) либо нормально, либо, в целях поиска ошибок, пошагово.

В последнем случае программа останавливается после выполнения каждой команды, давая вам возможность проследить содержимое всех регистров.

Настя, никакие символы (точки с запятыми, скобки и т.п. ) кроме цифр, при наборе программ на МЯ, конечно не вводятся.

И ещё. Если переключиться на набор в Ассемблере, то всё распределение памяти для откомпилированной программы произойдёт автоматически (с адреса "0000" ) и ни за какими адресами Вам следить не придётся.
Набрал, скомпилировал, запустил!

Отработайте практически оба режима!

Решение задачи №5

  1. IN;
  2. ST A;
  3. IN;
  4. ST B;
  5. IN;
  6. ST C;
  7. SUB A;
  8. JM MET;
  9. LDA B;
  10. ST D;
  11. JMP MET1;
  12. MET: LDA A;
  13. STD D;
  14. MET1: SUB C;
  15. JM MET2;
  16. LDA D;
  17. JMP VIVOD;
  18. MET2: LDA C;
  19. VIVOD:OUT;
  20. HALT;

А Вы попробуйте, Сергей!

А Вы попробуйте, Сергей, на МиК!

Решение задачи №5 на МиК

  1. 0000) 01
  2. 0001) 22 0051
  3. 0004) 01
  4. 0005) 22 0053
  5. 0008) 01
  6. 0009) 22 0055
  7. 0012) 11 0051
  8. 0015) 34 0027
  9. 0018) 21 0053
  10. 0021) 22 0059
  11. 0024) 30 0033
  12. 0027) 21 0051
  13. 0030) 22 0059
  14. 0033) 11 0055
  15. 0036) 34 0045
  16. 0039) 21 0059
  17. 0042) 30 0048
  18. 0045) 21 0055
  19. 0048) 02
  20. 0049) 99

Вроде как-то так

Давайте различать понятия.

Давайте различать понятия.
1. МиК - это машина. А потому "попробовать на МиК" означает попробовать выполнить программу на машине.
2. Программа для машины МиК может быть записана либо непосредственно в абсолютных (числовых) кодах, т.е. на машинном языке (МЯ), либо в символическом виде, т.е. на языке Ассемблера.
Эмулятор предоставляет вам обе эти возможности.

Могу повторить, что предложенные выше программы как в МЯ, так и в Ассемблере нуждаются в проверке на МиК. Не факт, что такую проверку они выдержат. И, без эмулятора такая проверка, естественно не возможна.

Валерий Шахамболетович, так я

Валерий Шахамболетович, так я их на эмуляторе и делал сразу...так что всё работает:)

Ну, как же, Серёжа!

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

простите:( не аккуратный

простите:( не аккуратный набор..

  1. IN;
  2. ST A;
  3. IN;
  4. ST B;
  5. IN;
  6. ST C;
  7. SUB A;
  8. JM MET;
  9. LDA B;
  10. ST D;
  11. JMP MET1;
  12. MET: LDA A;
  13. ST D;
  14. MET1: SUB C;
  15. JM MET2;
  16. LDA D;
  17. JMP VIVOD;
  18. MET2: LDA C;
  19. VIVOD:OUT;
  20. HALT;

Без D короче получается

Без D короче получается

Дело, конечно, не только в наборе ...

Ваша последняя версия, Сергей, так же не рабочая.
И зря Вы не следуете моему совету всё проверять на МиК.

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

Вопрос к другим. Кто, во-первых, сможет найти и исправить ошибки в приведённых решениях и, во-вторых (с учётом, возможно, замечания Натальи) предложить более короткие решения?

У меня такой вопрос: сколько

У меня такой вопрос: сколько байт в задаче №5 занимает вводимое число?

Любое число в памяти МиК

Любое число в памяти МиК занимает 2 байта

Не найду ошибку:(

Валерий Шахамболетович...Я всё таки не могу понять почему у меня ошибка и где она. На Мике этот текст программы работает правильно и выводит в результате мне правильный ответ, максимальное из трёх чисел... Объясните пожалуйста.

Как оказалось, Сергей, всё не

Как оказалось, Сергей, всё не так просто.
У Вас в Ассемблер-программе действительно ошибка. Команды LDA (это загрузка адресная) в данной реализации Ассемблера попросту нет (там загрузка адресная представлена как команда LA, о чём, кстати, сказано в справочнике по данной реализации МиК). Поэтому компилятор должен был бы команду LDA интерпретировать как ошибочную.
Но из-за его собственного изъяна, он эту ошибку не заметил и просто проигнорировав последнюю в коде операции букву A , распознал данную команду как LD (просто загрузка).
Т.е. компилятор, не заметив ошибки, среагировал именно так, как Вам и было НУЖНО, что есть чистая случайность!
На уровне программы в МЯ всё нормально.

Спасибо за подробное

Спасибо за подробное разъяснение.

Спасибо, а то я уже забыла. А

Спасибо, а то я уже забыла.
А можно разместить свое решение? Оно принципиально не отличается от решения Сергея, только на 2 строки короче.

Можно, Наташа. Думаю,

Можно, Наташа. Думаю, большего из народа не выжать ...
Кстати, я вижу решение последней задачи, где экономия 5 команд.

Я придумала, как сэкономить 5

Я придумала, как сэкономить 5 команд:

  1. IN
  2. ST X
  3. IN
  4. ST Y
  5. IN
  6. SUB X
  7. JM M1
  8. JMP M4
  9. M1: LA X
  10. M4: SUB Y
  11. JM M2
  12. JMP M3
  13. M2:LA Y
  14. M3: OUT
  15. HALT

Вы что, сговорились с Сергеем?

Вы что, сговорились с Сергеем?
Почему-то Вы упрямо используете команду LA (загрузка адреса) вместо обычной загрузки LD.

Извиняюсь, перепутала

Извиняюсь, перепутала действие команд lda и ld...
Действительно, вместо la должно стоять ld

Да, но это не работает, когда

Да, но это не работает, когда Z -максимум, например.
Но гребёте в нужном направлении!

Кажись, дошло: IN ST X IN ST

Кажись, дошло:

  1. IN
  2. ST X
  3. IN
  4. ST Y
  5. IN
  6. CMP X
  7. JM M1
  8. JMP M4
  9. M1: LD X
  10. M4: CMP Y
  11. JM M2
  12. JMP M3
  13. M2: LD Y
  14. M3: OUT
  15. HALT

Да.

Да.

улучшения

Валерий Шахамболетович, на задачи 2 и 3 более рационального решения я не нашел, как быть если в МиК нет операции умножения??? Думаю Настя решила задачи с наименьшими операциями

Как раз, задачи 2 и 3, Ярослав, и можно решить короче

Как раз, задачи 2 и 3, Ярослав, и можно решить короче.
Насчёт умножения. Мы уже на лекции говорили - в общем случае оно может быть запрограммировано как многократно повторяющееся в цикле сложение, что, впрочем, в этих задачах вряд ли целесообразно.

Упрощённый вариант решения задачи №2

  1. IN;
  2. ST A;
  3. IN;
  4. ST B;
  5. ADD A;
  6. ST S;
  7. ADD S;
  8. ADD S;
  9. ADD S;
  10. ADD S;
  11. OUT;
  12. HALT;

Упрощённый вариант решения задачи №3

Я нашёл как сократить только одну команду:(

  1. IN;
  2. ST A;
  3. LD 10;
  4. SUB A;
  5. OUT;
  6. HALT;

№2 можно ещё подправить

№2 можно ещё подправить, а №3 - не рабочий ...

№3 ассемблер

  1. IN;
  2. ST A;
  3. LA 10;
  4. SUB A;
  5. OUT;
  6. HALT;

сократил зад.2 Анастасии

  1. IN;
  2. ST A;
  3. IN;
  4. ST B;
  5. ADD A;
  6. ST SUMM;
  7. ADD SUMM;
  8. ADD SUMM;
  9. ADD SUMM;
  10. ADD SUMM;
  11. OUT;
  12. HALT;

В голове крутиться ещё можно как-то сократить, но увы. Возможно что и нельзя уже.