![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
blackhard |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
помогите сделать задание
![]() Система команд-арифметические операции над содержимым регистров ввод и вывод значений регистров,условный и безусловный переход к команде заданного номера.длинна команды 3 байта включает в себя код операции (6бит) и номер 3х регистров (по 6 бит),в первых 2Х содержаться операнды, в 3й заносится результат операции. дать описание системы команд и программу для вычисления суммы квадратов первых n натуральных чисел.препод вообще ниче не обьяснил по этой теме и я блин даже не представляю как это сделать в паскале.мнеб хотяб понять как это делать ![]() |
![]() ![]() |
blackhard |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
опять проблема и опять с условием: если на ассемблере у меня условие выглядело так
case 1=2 add 1 2 3 если число в регистре 1 = число в регистре 2 то складываем их и помещаем в регистр 3 в машинных кодах это будет выглядеть както длинно и не по заданию поэтому я хочу сделать так case 1=2 001001 000001 000010 000000 add 1 2 3 в машинных кодах примерно так 000011 000001 000010 000100 но вот какая проблема у меня возникла получается что add 1 2 3 выполняется 2 раза если 1=2 и выполняется даже если они не равны подскажите как этого можно избежать я выделю строки которые отвечают за это Program processor; |
Malice |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
У тебя при выполнении условия должен выполнятся переход к команде с номером обозначенном в 3-ем регистре.. Т.е должна измениться пременнная k в процедуре ras. И еще я не понял - у тебя же по условию 3 байта на команду, а ты работаешь со строками. Это для отладки, а потом переделаешь ? Мне кажется проще делать сразу правильно.
|
blackhard |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
У тебя при выполнении условия должен выполнятся переход к команде с номером обозначенном в 3-ем регистре.. Т.е должна измениться пременнная k в процедуре ras. И еще я не понял - у тебя же по условию 3 байта на команду, а ты работаешь со строками. Это для отладки, а потом переделаешь ? Мне кажется проще делать сразу правильно. да по поводу строк я ж преподу отправлял программу которая работала с ассемблерными командами и там работа была тоже со строками он мне написал что прога работает правильно токо нужно переделать с ассемблерных команд на машинный код так что я думаю так тоже правильно. но если в 3ем регистре будет хранится номер команды то где хранить параметры этой команды? Сообщение отредактировано: blackhard - 1.12.2007 22:22 |
Malice |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
но если в 3ем регистре будет хранится номер команды то где хранить параметры этой команды? Не понимаю в чем сложность. Эмулируется по сути такая команда: если А>Б тогда переход 5; ( или if a>b then goto 5;) И выглядит это так: 0000111 000001 000010 000101 (если 7 - это проверка на больше например) |
blackhard |
![]()
Сообщение
#6
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Не понимаю в чем сложность. Эмулируется по сути такая команда: если А>Б тогда переход 5; ( или if a>b then goto 5;) И выглядит это так: 0000111 000001 000010 000101 (если 7 - это проверка на больше например) if a>b then goto 5 ну для такого условия проблем никаких а если if a>b then c:=a+b? |
Malice |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
blackhard |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 17:19 |