|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.11.2013, 00:09 | #81 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
Никак |
|
14.11.2013, 01:29 | #82 |
Форумчанин
Регистрация: 01.12.2009
Сообщений: 569
|
|
14.12.2013, 15:55 | #83 |
Пользователь
Регистрация: 07.11.2013
Сообщений: 20
|
Трансляция страниц
Здравствуйте, у меня вопрос. Разбираю код реализации механизма трансляции. Копирую два файла, но механизм реализован во втором.
pm.asm: Код:
Код:
PAGE_DIR_BASE_ADDRESS equ 01A00000h PAGE_TABLES_BASE_ADDRESS equ 01200000h адреса каталога страниц и таблицы страниц По таким адресам у меня ничего не работает, и когда я пытаюсь по ним что-то записать возникает Illegal write to 1a003e7 CS:IP 8: 400000 например, на адрес 1a003e7 не смотрите это вообще из другой программы. Однако если написать, например: PAGE_DIR_BASE_ADDRESS equ 0AA0000h PAGE_TABLES_BASE_ADDRESS equ 0AB000h то всё работает. Почему?? |
14.12.2013, 15:56 | #84 |
Пользователь
Регистрация: 07.11.2013
Сообщений: 20
|
Во-вторых, несмотря на то что прога работает, непонятно что она вообще делает. Она же нужна чтобы отображать виртуальные адреса на реальные. Вот в этом куске сопоставляются эти адреса:
Код:
Код:
чтобы попробовать применить этот механизм: Код:
Последний раз редактировалось fipsiksi; 14.12.2013 в 20:01. |
16.12.2013, 15:35 | #85 | |
Пользователь
Регистрация: 20.11.2013
Сообщений: 45
|
Цитата:
|
|
16.12.2013, 15:41 | #86 | |
Пользователь
Регистрация: 20.11.2013
Сообщений: 45
|
Цитата:
Код:
|
|
16.12.2013, 15:43 | #87 | |
Пользователь
Регистрация: 20.11.2013
Сообщений: 45
|
Цитата:
Как вы это определили? |
|
17.12.2013, 11:04 | #88 |
Пользователь
Регистрация: 07.11.2013
Сообщений: 20
|
Да, точно, про ecx забыл..И ещё добавить смещение, чтобы не затирать прошлую строчку в видеопамяти. Так работает:
Код:
Насчёт PTE и PDE , то мы же их создавали переходя по метке call create_PDEPTE, или что? В итоге непонятно только почему по адресам PAGE_DIR_BASE_ADDRESS equ 01A00000h PAGE_TABLES_BASE_ADDRESS equ 01200000h ошибки. |
17.12.2013, 13:52 | #89 |
Пользователь
Регистрация: 20.11.2013
Сообщений: 45
|
|
17.12.2013, 16:24 | #90 |
Пользователь
Регистрация: 07.11.2013
Сообщений: 20
|
Что-то я не догоняю... с адресацией запутался. Мы не можем записать по адресу 01A00000h потому-что он слишком большой по сравнению с адресом
0AA0000h? Поэтому для него нужны эти таблицы страниц?..Ну первый примерно 27Мб, второй 11Мб. Плюс, у меня же ещё таблица дескрипторов наверно используется, т.е. когда я пишу: Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программирование на Ассемблере | Николай ПН | Помощь студентам | 3 | 23.03.2010 00:56 |
Программирование микроконтроллера 80С196КС на ассемблере | KOCT9IH | Фриланс | 3 | 07.11.2008 13:03 |
На форуме был замечен супермодератор - Руслан. | Alar | О форуме и сайтах клуба | 17 | 25.07.2008 21:01 |