Как запустить i8086
Re: Как запустить i8086
Шину А\Д надо смотреть относительно управляющих сигналов. То что адреса перебирает - скорее всего, завис.
Ваши команды- загрузить число 1234 в рег АХ и выдать в 112 порт вывода.
Ваши команды- загрузить число 1234 в рег АХ и выдать в 112 порт вывода.
- Реклама
Re: Как запустить i8086
Минябы так дрючили....Tacho писал(а):Шину А\Д надо смотреть относительно управляющих сигналов. То что адреса перебирает - скорее всего, завис.
Ваши команды- загрузить число 1234 в рег АХ и выдать в 112 порт вывода.
кстати вопрос из праздного любопытства какие порты в процессоре????? насколько я понимаю там только шина адреса\данных и куча управляющиих и прерываний
или эта команда ложит данные в определённый адрес в оперативе и этот адресс наш порт ввода вывода.... а откель он знает что этот тот самый порт? если он выбран заранее значит они уже заранее жостко назначены?
-
Tolmi
- Говорящий с текстолитом
- Сообщения: 1658
- Зарегистрирован: Вс дек 11, 2011 05:25:04
- Откуда: Киев, Украина
- Контактная информация:
Re: Как запустить i8086
Не запутывайте ТС, в i8086 раздельное адресное пространство памяти и портов в/вdinets писал(а):Минябы так дрючили....Tacho писал(а):Шину А\Д надо смотреть относительно управляющих сигналов. То что адреса перебирает - скорее всего, завис.
Ваши команды- загрузить число 1234 в рег АХ и выдать в 112 порт вывода.
кстати вопрос из праздного любопытства какие порты в процессоре????? насколько я понимаю там только шина адреса\данных и куча управляющиих и прерываний
или эта команда ложит данные в определённый адрес в оперативе и этот адресс наш порт ввода вывода.... а откель он знает что этот тот самый порт? если он выбран заранее значит они уже заранее жостко назначены?
Посмотрите из праздного любопытства на ножку M/IO в минимальном режиме.
In theory, theory and practice are the same. In practice, they're not.
-
Tolmi
- Говорящий с текстолитом
- Сообщения: 1658
- Зарегистрирован: Вс дек 11, 2011 05:25:04
- Откуда: Киев, Украина
- Контактная информация:
Re: Как запустить i8086
Скорее не завис, а слетел по прерыванию с HLT и теперь бродит по пустому ОЗУTacho писал(а):Шину А\Д надо смотреть относительно управляющих сигналов. То что адреса перебирает - скорее всего, завис.
Ваши команды- загрузить число 1234 в рег АХ и выдать в 112 порт вывода.
kras, поставьте бесконечный цикл вокруг
out 112, ax
чтобы хорошо было видно сигналы на ножках.
PS Я когда-то так с платой от PC/XT развлекался, навесил тучу светодиодов на все шины и смотрел, как при работе всё мигает и переливается. Осталась любовь к инженерным пультам от больших ЭВМ
In theory, theory and practice are the same. In practice, they're not.
Re: Как запустить i8086
Поставил, стало что-то похожее на норм работу. Сейчас не хочу отвлекаться, проблема в том, что сигнал меняется и в отрицательную сторону. То есть проверяю 16 битов двумя аналоговыми осциллографами, изменяю адрес, вроде поведение более-менее, адрес короче данных, константы примерно получаются, но возникают странности, особенно с тем, что сигнал бывает отрицательным! Если это серьезно странно, смоделирую попозже и дам скрин. Не хочу отвлекаться потому, что решил все-таки пробовать программную реализацию сначала, а 6 февраля уже выгоняют, то есть мне сегодня-завтра надо закончить с самой курсовой, а я программной реализации пока знаю, как делать под эмулятор. Кстати, а нужны какие-нибудь дополнительные команды для реального микропроцессора, чтобы он загрузился? Ну и по завершению работы.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- Реклама
-
Tolmi
- Говорящий с текстолитом
- Сообщения: 1658
- Зарегистрирован: Вс дек 11, 2011 05:25:04
- Откуда: Киев, Украина
- Контактная информация:
Re: Как запустить i8086
Это не понял.kras писал(а): проблема в том, что сигнал меняется и в отрицательную сторону.
Нет, он сразу начинает работать. Но можно поразрешать/позапрещать/настроить прерывания, по вкусу. А вообще и так всё должно работать.Кстати, а нужны какие-нибудь дополнительные команды для реального микропроцессора, чтобы он загрузился?
По завершению работы нужно выключить приборы и оборудование, закрыть воду и погасить светНу и по завершению работы.
In theory, theory and practice are the same. In practice, they're not.
Re: Как запустить i8086
Что-то я пока не успел повторить отрицательный сигнал, но попробую. Зато запустил процессор в отдельном проекте, но я тогда не понимаю, как передаются данные по шине АД. Прилагаю скрин, на CLK счетчиков - 5МГц, тактовая частота процессора 1кГц, программа такая:
Почему-то сигнал передается каждый 15 тактовый импульс, как я понял. Но при чем здесь вообще ША и ШД? Когда действует адрес, а когда данные? Хотя, вроде, написано об этом неплохо в литературе, но что-то не доходит.
Код: Выделить всё
m1:
mov al,1
out 1,al
jmp m1Почему-то сигнал передается каждый 15 тактовый импульс, как я понял. Но при чем здесь вообще ША и ШД? Когда действует адрес, а когда данные? Хотя, вроде, написано об этом неплохо в литературе, но что-то не доходит.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Re: Как запустить i8086
Вот тут, как я считаю, минус.
И вообще, если не смотреть на знаки, вот что пока не понимаю:
mov al,1
out 0,al - выдает на первом канале короткий ноль и единицу
mov al,2
out 0,al - на втором канале короткий ноль и единица
mov al,3
out 0,al - сигналы первого и второго канала одинаковы - короткий ноль и единица
mov al,3
out 1,al - по моей логике первый канал всегда "1", а второй - короткий ноль и единица. Реально все так: на первом канале короткая единица и ноль, на втором - вечный ноль. Почему?
И вообще, если не смотреть на знаки, вот что пока не понимаю:
mov al,1
out 0,al - выдает на первом канале короткий ноль и единицу
mov al,2
out 0,al - на втором канале короткий ноль и единица
mov al,3
out 0,al - сигналы первого и второго канала одинаковы - короткий ноль и единица
mov al,3
out 1,al - по моей логике первый канал всегда "1", а второй - короткий ноль и единица. Реально все так: на первом канале короткая единица и ноль, на втором - вечный ноль. Почему?
- Вложения
-
- Безымянный864.png
- (210.62 КБ) 274 скачивания
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
-
Tolmi
- Говорящий с текстолитом
- Сообщения: 1658
- Зарегистрирован: Вс дек 11, 2011 05:25:04
- Откуда: Киев, Украина
- Контактная информация:
Re: Как запустить i8086
Я не знаю, как работает модель, и как в симуляторе работает цифровой осцилограф, но я точно знаю, что у i8086 совмещенная шина адреса и данных. Это значит, что в нормальном состоянии, без разделения на данные и программу через какие-нибудь внешние дешифраторы, понаблюдать за одними только данными на осциллографе, тыкая его на ноги процессора, не получится. Там в первом такте каждой команды сначала будет присутствовать адрес ( для считывания команды из ОЗУ ), в это время выдается строб ALE в минимальном режиме и потом в третьем-четвертом такте будут присутствовать данные, и строб DEN. Всё, что выводится в адресное пространство I/O, можно определить по низкому уровню на ноге M/IO, при этом DEN тоже дожен быть активен. Прежде чем что-то симулировать в симуляторе, хорошо самому представлять, что именно можно увидеть в этом симуляторе.
In theory, theory and practice are the same. In practice, they're not.
Re: Как запустить i8086
Ну у меня на последнем скрине 3 сигнал сверху - это ALE. Прикладываю тогда еще рисунок. Программа для него такая:
Но на порту A0 вижу только одну единицу - адрес. Видно, что ALE - B, DEN - C. А где единица для данных? А М/IO# всегда 0, так и должно быть, я ведь работаю без mov. mov вообще не работает, скрин:
То есть даже ALE нету!:(
А код такой:
Проблема, может быть, в компиляторе, бинарник такой:
b0 05 88 06 05 00 eb f8.
Я не знаю насчет 88 06 05.
Кстати, а есть какие-нибудь книжки рода "подайте в мк такой-то код, получите на выходе такой-то сигнал"? Ну на элементарнейшем уровне. Кстати, если есть для других микропроцессоров, тоже интересно почитать.
Код: Выделить всё
m1:
mov al,5
mov dx,5
out dx, al
jmp m1А код такой:
Код: Выделить всё
m1:
mov al,5
mov 5, al
jmp m1b0 05 88 06 05 00 eb f8.
Я не знаю насчет 88 06 05.
Кстати, а есть какие-нибудь книжки рода "подайте в мк такой-то код, получите на выходе такой-то сигнал"? Ну на элементарнейшем уровне. Кстати, если есть для других микропроцессоров, тоже интересно почитать.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
-
Tolmi
- Говорящий с текстолитом
- Сообщения: 1658
- Зарегистрирован: Вс дек 11, 2011 05:25:04
- Откуда: Киев, Украина
- Контактная информация:
Re: Как запустить i8086
Посмотрел я на модель 8086 Demo Board в протеусе. Насколько я понял, модель сильно упрощенная. т.е. моделью предполагается, что внутри 8086 есть некоторая "программная память", которой на самом деле реально нет, но такое упрощение позволяет приравнять процессор к микроконтроллеру. И писать для модели программы в виде обычных exe файлов, что тоже сильное упрощение. Реальной работе с процессором по такой модели не научиться и без понимания, что на самом деле упрощено, а что в реальности существует в железе, такая модель больше запутывает, чем объясняет.
In theory, theory and practice are the same. In practice, they're not.
-
clawham
- Поставщик валерьянки для Кота
- Сообщения: 1957
- Зарегистрирован: Пт окт 31, 2008 09:38:55
- Откуда: Одесса
- Контактная информация:
Re: Как запустить i8086
смотрю я тут и думаю...неужто такив институтах даже не объясчнили что такое мультиплексированная шина?
это как у АВРок - снаружи нужна защелка промежуточная которая будет выцеплять из 16 мультиплексированных ног первую младшую часть шины адреса, остальная подтянется на ногах Адреса 16...19
дальше...а почему вы не используете логический анализатор? там 16 раздельных ног входов и 4 шинных 8-мибитных входа!!! разве не то что вам надо
дальше...КТО вам сказал что микропроцессор исполняет ЕХЕ файлы???? это файлы для операционной системы с определенными загооловками и так далее!!! они вам не ну ж ны!!!
вам надо просто BIN файлик с машинными кодами заливать во внешнюю память !!! в частности в протеусе сделали львиную услугу - внешний РОМ для программ заменили подставой...но это не исключает того что этот проц будет шагать по программе выдавая на шину адреса собственно адреса програмкаунтера!ну и пытаться с шины данных получать собственно машинные комманды
по сути надо сделать развязку шины ввода-вывода и адреса, вешать внешнюю РАМ/РОМ/НОР флеш и вперед!
а порты вводавывода можно проэмулировать например повешать на шину адреса дешифратор на 4 бита вход и енейблом с ноги M-IO которая и говорит что на шине адреса сейчас не адрес памяти а адрес внешнего устройства....сути от этого не меняется...просто другие комманды....ну а после дешифратора на каждом выходе поставить какую-то 16-тибитную защелку которая будет защелкиваться по определенному адресу команды OUT дешифратором...
дальше из этих защелок(читай внешних буферов) загоняеш на какой-нить программируемый счетчик-делитель, на какой-то ГУН через r-2r ЦАП и вот тебе генератор.....кстати...аналогично(только надо защелку развернуть) можно и ВХОД опрашивать ..кнопочки типа....или резюк...эмулируя PIO перебирая разные адреса защелок
как-то так в общем....10-ток корпусов и в минималистическом варианте будет работать
это как у АВРок - снаружи нужна защелка промежуточная которая будет выцеплять из 16 мультиплексированных ног первую младшую часть шины адреса, остальная подтянется на ногах Адреса 16...19
дальше...а почему вы не используете логический анализатор? там 16 раздельных ног входов и 4 шинных 8-мибитных входа!!! разве не то что вам надо
дальше...КТО вам сказал что микропроцессор исполняет ЕХЕ файлы???? это файлы для операционной системы с определенными загооловками и так далее!!! они вам не ну ж ны!!!
вам надо просто BIN файлик с машинными кодами заливать во внешнюю память !!! в частности в протеусе сделали львиную услугу - внешний РОМ для программ заменили подставой...но это не исключает того что этот проц будет шагать по программе выдавая на шину адреса собственно адреса програмкаунтера!ну и пытаться с шины данных получать собственно машинные комманды
по сути надо сделать развязку шины ввода-вывода и адреса, вешать внешнюю РАМ/РОМ/НОР флеш и вперед!
а порты вводавывода можно проэмулировать например повешать на шину адреса дешифратор на 4 бита вход и енейблом с ноги M-IO которая и говорит что на шине адреса сейчас не адрес памяти а адрес внешнего устройства....сути от этого не меняется...просто другие комманды....ну а после дешифратора на каждом выходе поставить какую-то 16-тибитную защелку которая будет защелкиваться по определенному адресу команды OUT дешифратором...
дальше из этих защелок(читай внешних буферов) загоняеш на какой-нить программируемый счетчик-делитель, на какой-то ГУН через r-2r ЦАП и вот тебе генератор.....кстати...аналогично(только надо защелку развернуть) можно и ВХОД опрашивать ..кнопочки типа....или резюк...эмулируя PIO перебирая разные адреса защелок
как-то так в общем....10-ток корпусов и в минималистическом варианте будет работать
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Не доверяйте русским лужам - это может быть вход в метро.
Re: Как запустить i8086
А я уже сам посмотрел. Память внутри. И я так понял, что из-за этого команды mov не используются, то есть все надо делать с помощью out, даже если подключать ПЗУ. Но тогда не понял, как действует M/IO#. С процессором, пока, с критическим непониманием решил вопрос. Но я не понял, как происходить мультиплексирование. Учитель вчера рассказывал, что в первом такте из 4 адрес, в 3 - данные, да я так и думал, но у меня то в модели все не так! Либо хэлп, у меня адрес идет много тактовых циклов, а, в зависимости от числа, на выходе я вообще не разбираюсь, что наблюдаю. Кстати, я начал читать редактирование моделей Proteus, а может кто короче объяснить, что делается после того, как нарисована схема? Обязательно ли "группировать" ее элементы? Где я читаю, пишется последовательность действий, а я не могу понять, как в Протеусе работают модели. Это же не VHDL. Что это вообще за язык такой? А, еще такая проблема. RD# всегда "0" на МП при выполнении холостых ходов. Как так? Что прописать, чтобы сделать его нормальным?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Re: Как запустить i8086
Блин. Ну ладно, отправляют скрин. Решил перепрограммировать контроллер клавиатуры и индикации с помощью МП, получилось, но благодаря двойному стробу ALE у меня не защелкивается адрес. Хотя код самый простой:
Read синий, что делать?!
Ну ладно, поставил NOT после ALE. А Почему при ax=dx=1 дрыгаются две ножки, как A0, так и A1?
Код: Выделить всё
org 100h
m1:
mov ax,257
mov dx,257
out dx,ax
jmp m1
ret Ну ладно, поставил NOT после ALE. А Почему при ax=dx=1 дрыгаются две ножки, как A0, так и A1?
- Вложения
-
- Безымянный1.png
- (122.44 КБ) 542 скачивания
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru


