Вопросы, связанные с процессором i8086, i80386 и их клонам

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Вопросы, связанные с процессором i8086, i80386 и их клонам

Сообщение Chip115 »

Всем привет! Собственно нашел программу одну. Симулирует работу проца. В универе осваиваем проц 80386. Так вот. Дабы все вкурить решил дома по тренироваться, а ума не хватает. Подскажите как работать в проге или посоветуйте что нить подобное?:) Я просто толком слабо пока представляю что должен делать проц на мои команды так как нет практики да и на асме я тока начал писать ) Но хочу заставить его выполнить команду int 3 (код СС) , а не выходит... и не пойму как разбить память так, что бы пользовательская область начиналась с адреса 4000 ?:) Просто на стендах в универе у нас именно от сюда IP тикает )
Прога в сылке. Весит мало )
Спасибо!
Последний раз редактировалось Chip115 Вт сен 27, 2011 12:52:08, всего редактировалось 2 раза.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Реклама
Аватара пользователя
Borodach
Модератор
Сообщения: 22897
Зарегистрирован: Пн дек 08, 2008 19:28:04
Откуда: 10км от Москвы на Север

Re: Научите пользоваться программой стимулятором проца i8086

Сообщение Borodach »

"Стимуляторы" - это на других форумах ... . :)))
Реклама
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Научите пользоваться программой симулятором проца i8086

Сообщение Chip115 »

Исправил :oops: простите ))
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Научите пользоваться программой симулятором проца i8086

Сообщение ChipKiller »

2 Chip115 скачайте книжку Финогенова - ИМХО все расписано, как раз для студентов :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Научите пользоваться программой симулятором проца i8086

Сообщение Chip115 »

а как называется эта книжка? а то по автору искать как то затруднительно

Так как подобной не нашел тут , то еще раз переименовал тему. Чую будут у меня вопросы по этому процу.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Реклама
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение Chip115 »

Вот еще завис на прямом методе адресации...
как узнать адрес операнда es?
мы же относительно, скажем es смещаемся на, скажем 0001 ?

Код: Выделить всё

mov ax,es:0001
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение ChipKiller »

Chip115 писал(а):...а то по автору искать как то затруднительно
... с первой попытки погуглить Финогенов ассемблер - все почему-то нашлось
Chip115 писал(а):Вот еще завис на прямом методе адресации
если это не защищенный режим, где сегментные регистры выполняюь другую роль, то
физ. адрес = сегм. рег * 16 + смещение при этом размер сегмента не более 64 КБайт

ЗЫ приятно помогать людям, которые не считают зазорным оторвать ...опу от стула и попытаться хоть что-то сделать самому ...
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение Chip115 »

Спасибо :)
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение Chip115 »

еще непонятка... по индексной адресации.
допустим у меня программа пользователя начинается с адреса 4000h .
допустим что мне надо по адресу 4012h записать число 55h (например), которое находится скажем в bx регистре индексным методом адресации.
Получается для того что бы вычислить фактический адрес, мне надо взять 400h , сдвинуть его влево (получается домножить на 16) и прибавить смещение 12h .
Получается адрес 4012h.

не могу понять мнимонику

Код: Выделить всё

mov 400[12h],bx 
или

Код: Выделить всё

mov 4000[12h],bx
или так

Код: Выделить всё

mov DS:[12h],bx 
или я вообще не понял про это метод адресации? Подскажите как правильно , пожалуйста ))
Chip115 писал(а):ЗЫ приятно помогать людям, которые не считают зазорным оторвать ...опу от стула и попытаться хоть что-то сделать самому ...
Оторвал и сделал. Но вопросы все равно остались :(
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение ChipKiller »

Chip115 писал(а):Получается для того что бы вычислить фактический адрес, мне надо взять 400h , сдвинуть его влево (получается домножить на 16) и прибавить смещение 12h .
Получается адрес 4012h.
... "двигать" ничего не нужно - все работает на аппаратном уровне. Записать число в ячейку с адресом 4012h можно по-разному:

Код: Выделить всё

 mov bx,400h
mov ds,bx ; 
mov bx,12h
mov byte ptr[bx],55h
или так, что одно и то же

Код: Выделить всё

 sub bx,bx
mov ds,bx ; 
mov bx,4000h
mov byte ptr[bx+12],55h
PS. писать DS: не обязательно - т.к. сегмент данных используется по умолчанию
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение Chip115 »

Спасибо! Видимо что то я упустил... буду разбираться дальше! )
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение Chip115 »

ChipKiller писал(а): mov ds,bx ;
mov bx,12h
mov byte ptr[bx],55h
А это не относительная индексная адресация?
Вот цитата из учебного пособия.
"Индексная адресация (indexed addressing) — эффективный адрес операнда
вычисляется путём суммирования значения прямого адреса и индекса. Для индекса
чаще всего используются регистры si и di. Например:

Код: Выделить всё

MyTable equ 5000h
mov cx, MyTable[si]
Команда загружает в регистр cx значение, содержащееся по адресу, равному
сумме si и значения MyTable"

допустим у меня в SI лежит число 12h . получается тут в сх загружается значение , которое находится по адресу 5012h ?
теперь другая задача.
для того что бы передать значение,которое находится в сх по адресу 5012h, я пишу так

Код: Выделить всё

mov di,12h
mov cx,11h
mov 5000h[di],cx    ; передаем 11h в ячейку памяти по адресу 5012h 
Я прав? не пойму почему эмулятор выпендривается :(
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение Chip115 »

что то совсем запутался с этой адресацией... (
Вот цитата из учебного пособия.
"Индексная адресация (indexed addressing) — эффективный адрес операнда
вычисляется путём суммирования значения прямого адреса и индекса. Для индекса
чаще всего используются регистры si и di. Например:

Код: Выделить всё

MyTable equ 5000h
mov cx, MyTable[si]
Команда загружает в регистр cx значение, содержащееся по адресу, равному
сумме si и значения MyTable"

допустим у меня в SI лежит число 12h . получается тут в сх загружается значение , которое находится по адресу 5012h ?
теперь другая задача.
для того что бы передать значение,которое находится в сх по адресу 5012h, я пишу так

Код: Выделить всё

mov di,12h
mov cx,11h
mov 5000h[di],cx    ; передаем 11h в ячейку памяти по адресу 5012h 
Я прав? не пойму почему эмулятор выпендривается :([/quote]
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение SII »

А что в сегментных регистрах? Физический-то адрес образуется более сложным образом...
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение Chip115 »

у меня пользовательская область памяти начинается с адреса 4000h . Значит в ds 4000h?
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение ChipKiller »

Chip115 писал(а):Я прав? не пойму почему эмулятор выпендривается :(
.. во-первых что за эмулятор? Для DOSa удобно использовать td.exe от Borland. Во-вторых - адрес у 8086 (8088) 20-ти разрядный и очевидно эмулятор "выпендривается" именно по этому поводу. В память пишут/читают с "оглядкой" на сегментный регистр.
Не совсем понятно что нужно получить, поэтому и помочь сложно. Если вопрос только в изучении - проще всего взять исходник простой работающей программы и пройтись по нему отладчиком, тогда многие "вопросы" сами отпадут ИМХО.
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение SII »

Chip115 писал(а):у меня пользовательская область памяти начинается с адреса 4000h . Значит в ds 4000h?
Если в DS 4000h, MyTable = 5000h, а SI = 12h, то mov cx, MyTable[si] загружает в CX значение, лежащее по физическому адресу 45012h.
ChipKiller писал(а):во-первых что за эмулятор? Для DOSa удобно использовать td.exe от Borland
TD -- не эмулятор, а отладчик, который работает на реальном "железе", а не притворяется им. Эмуляторы -- это всякие там Bochs, QEMU и т.д. и т.п.
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Вопросы, связанные с процессором i8086, i80386 и их кло

Сообщение Kavka »

Chip115 писал(а): "Индексная адресация (indexed addressing) — эффективный адрес операнда
вычисляется путём суммирования значения прямого адреса и индекса. Для индекса
чаще всего используются регистры si и di. Например:

Код: Выделить всё

MyTable equ 5000h
mov cx, MyTable[si]
Команда загружает в регистр cx значение, содержащееся по адресу, равному
сумме si и значения MyTable"

допустим у меня в SI лежит число 12h . получается тут в сх загружается значение , которое находится по адресу 5012h ?
теперь другая задача.
для того что бы передать значение,которое находится в сх по адресу 5012h, я пишу так

Код: Выделить всё

mov di,12h
mov cx,11h
mov 5000h[di],cx    ; передаем 11h в ячейку памяти по адресу 5012h 
Я прав? не пойму почему эмулятор выпендривается :(
Прав но не совсем. В реальном режиме на x86 индексные регистры при вычислении адреса умножаются на 16, если мне память не изменяет. Т.е. в вашем случае результирующий адрес будет
5000h*16 = 50000h
50000h + 12h = 50012h

Дык, вам же уже ChipKiller ответил! Что ж вы такой не внимательный :shock:
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»