Вопросы, связанные с процессором i8086, i80386 и их клонам
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Вопросы, связанные с процессором i8086, i80386 и их клонам
Всем привет! Собственно нашел программу одну. Симулирует работу проца. В универе осваиваем проц 80386. Так вот. Дабы все вкурить решил дома по тренироваться, а ума не хватает. Подскажите как работать в проге или посоветуйте что нить подобное?:) Я просто толком слабо пока представляю что должен делать проц на мои команды так как нет практики да и на асме я тока начал писать ) Но хочу заставить его выполнить команду int 3 (код СС) , а не выходит... и не пойму как разбить память так, что бы пользовательская область начиналась с адреса 4000 ?:) Просто на стендах в универе у нас именно от сюда IP тикает )
Прога в сылке. Весит мало )
Спасибо!
Прога в сылке. Весит мало )
Спасибо!
Последний раз редактировалось Chip115 Вт сен 27, 2011 12:52:08, всего редактировалось 2 раза.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Реклама
- Borodach
- Модератор
- Сообщения: 22897
- Зарегистрирован: Пн дек 08, 2008 19:28:04
- Откуда: 10км от Москвы на Север
Re: Научите пользоваться программой стимулятором проца i8086
"Стимуляторы" - это на других форумах ... . 
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: Научите пользоваться программой симулятором проца i8086
Исправил
простите ))
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Научите пользоваться программой симулятором проца i8086
2 Chip115 скачайте книжку Финогенова - ИМХО все расписано, как раз для студентов 
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: Научите пользоваться программой симулятором проца i8086
а как называется эта книжка? а то по автору искать как то затруднительно
Так как подобной не нашел тут , то еще раз переименовал тему. Чую будут у меня вопросы по этому процу.
Так как подобной не нашел тут , то еще раз переименовал тему. Чую будут у меня вопросы по этому процу.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Реклама
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
Вот еще завис на прямом методе адресации...
как узнать адрес операнда es?
мы же относительно, скажем es смещаемся на, скажем 0001 ?
как узнать адрес операнда es?
мы же относительно, скажем es смещаемся на, скажем 0001 ?
Код: Выделить всё
mov ax,es:0001Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
... с первой попытки погуглить Финогенов ассемблер - все почему-то нашлосьChip115 писал(а):...а то по автору искать как то затруднительно
если это не защищенный режим, где сегментные регистры выполняюь другую роль, тоChip115 писал(а):Вот еще завис на прямом методе адресации
физ. адрес = сегм. рег * 16 + смещение при этом размер сегмента не более 64 КБайт
ЗЫ приятно помогать людям, которые не считают зазорным оторвать ...опу от стула и попытаться хоть что-то сделать самому ...
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
Спасибо 
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
еще непонятка... по индексной адресации.
допустим у меня программа пользователя начинается с адреса 4000h .
допустим что мне надо по адресу 4012h записать число 55h (например), которое находится скажем в bx регистре индексным методом адресации.
Получается для того что бы вычислить фактический адрес, мне надо взять 400h , сдвинуть его влево (получается домножить на 16) и прибавить смещение 12h .
Получается адрес 4012h.
не могу понять мнимонику
или
или так
или я вообще не понял про это метод адресации? Подскажите как правильно , пожалуйста ))

допустим у меня программа пользователя начинается с адреса 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 и их кло
... "двигать" ничего не нужно - все работает на аппаратном уровне. Записать число в ячейку с адресом 4012h можно по-разному:Chip115 писал(а):Получается для того что бы вычислить фактический адрес, мне надо взять 400h , сдвинуть его влево (получается домножить на 16) и прибавить смещение 12h .
Получается адрес 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
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
Спасибо! Видимо что то я упустил... буду разбираться дальше! )
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
А это не относительная индексная адресация?ChipKiller писал(а): mov ds,bx ;
mov bx,12h
mov byte ptr[bx],55h
Вот цитата из учебного пособия.
"Индексная адресация (indexed addressing) — эффективный адрес операнда
вычисляется путём суммирования значения прямого адреса и индекса. Для индекса
чаще всего используются регистры si и di. Например:
Код: Выделить всё
MyTable equ 5000h
mov cx, MyTable[si]сумме 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 и их кло
что то совсем запутался с этой адресацией... (
Вот цитата из учебного пособия.
"Индексная адресация (indexed addressing) — эффективный адрес операнда
вычисляется путём суммирования значения прямого адреса и индекса. Для индекса
чаще всего используются регистры si и di. Например:
Команда загружает в регистр cx значение, содержащееся по адресу, равному
сумме si и значения MyTable"
допустим у меня в SI лежит число 12h . получается тут в сх загружается значение , которое находится по адресу 5012h ?
теперь другая задача.
для того что бы передать значение,которое находится в сх по адресу 5012h, я пишу так
Я прав? не пойму почему эмулятор выпендривается
[/quote]
Вот цитата из учебного пособия.
"Индексная адресация (indexed addressing) — эффективный адрес операнда
вычисляется путём суммирования значения прямого адреса и индекса. Для индекса
чаще всего используются регистры si и di. Например:
Код: Выделить всё
MyTable equ 5000h
mov cx, MyTable[si]сумме si и значения MyTable"
допустим у меня в SI лежит число 12h . получается тут в сх загружается значение , которое находится по адресу 5012h ?
теперь другая задача.
для того что бы передать значение,которое находится в сх по адресу 5012h, я пишу так
Код: Выделить всё
mov di,12h
mov cx,11h
mov 5000h[di],cx ; передаем 11h в ячейку памяти по адресу 5012h
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
А что в сегментных регистрах? Физический-то адрес образуется более сложным образом...
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
у меня пользовательская область памяти начинается с адреса 4000h . Значит в ds 4000h?
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
.. во-первых что за эмулятор? Для DOSa удобно использовать td.exe от Borland. Во-вторых - адрес у 8086 (8088) 20-ти разрядный и очевидно эмулятор "выпендривается" именно по этому поводу. В память пишут/читают с "оглядкой" на сегментный регистр.Chip115 писал(а):Я прав? не пойму почему эмулятор выпендривается
Не совсем понятно что нужно получить, поэтому и помочь сложно. Если вопрос только в изучении - проще всего взять исходник простой работающей программы и пройтись по нему отладчиком, тогда многие "вопросы" сами отпадут ИМХО.
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
Если в DS 4000h, MyTable = 5000h, а SI = 12h, то mov cx, MyTable[si] загружает в CX значение, лежащее по физическому адресу 45012h.Chip115 писал(а):у меня пользовательская область памяти начинается с адреса 4000h . Значит в ds 4000h?
TD -- не эмулятор, а отладчик, который работает на реальном "железе", а не притворяется им. Эмуляторы -- это всякие там Bochs, QEMU и т.д. и т.п.ChipKiller писал(а):во-первых что за эмулятор? Для DOSa удобно использовать td.exe от Borland
Re: Вопросы, связанные с процессором i8086, i80386 и их кло
Прав но не совсем. В реальном режиме на x86 индексные регистры при вычислении адреса умножаются на 16, если мне память не изменяет. Т.е. в вашем случае результирующий адрес будетChip115 писал(а): "Индексная адресация (indexed addressing) — эффективный адрес операнда
вычисляется путём суммирования значения прямого адреса и индекса. Для индекса
чаще всего используются регистры si и di. Например:Команда загружает в регистр cx значение, содержащееся по адресу, равномуКод: Выделить всё
MyTable equ 5000h mov cx, MyTable[si]
сумме si и значения MyTable"
допустим у меня в SI лежит число 12h . получается тут в сх загружается значение , которое находится по адресу 5012h ?
теперь другая задача.
для того что бы передать значение,которое находится в сх по адресу 5012h, я пишу такЯ прав? не пойму почему эмулятор выпендриваетсяКод: Выделить всё
mov di,12h mov cx,11h mov 5000h[di],cx ; передаем 11h в ячейку памяти по адресу 5012h
5000h*16 = 50000h
50000h + 12h = 50012h
Дык, вам же уже ChipKiller ответил! Что ж вы такой не внимательный
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)


