Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2008, 08:24   #1
brainFuck
 
Регистрация: 20.08.2008
Сообщений: 7
Счастье lgdt в чем ошибка?

всем привет. Переписал код из Рудакова по созданию своей ОС 32 и закомпилил. Так вот компилю, а он мне ошибки:
говорит что команды
lgdt pdescr
mov eax, cr0
mov cr0, eax
не допустимые для текущего процессора
Объясните в чем проблема?
brainFuck вне форума Ответить с цитированием
Старый 20.08.2008, 08:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вообще-то я тоже не знаю команды lgdt pdescr.
И что такое cr0? Переменка? Ссылка?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2008, 08:48   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Гы ) cr0 - это переменная. И там ей надо включить бит а не просто гонять в eax и обратно http://www.programmersforum.ru/showt...585#post132585 lgdt - грузит таблицу дискрипторов.
BOBAH13 вне форума Ответить с цитированием
Старый 20.08.2008, 08:52   #4
brainFuck
 
Регистрация: 20.08.2008
Сообщений: 7
По умолчанию

хммм...
cr0 вообще то системный регистр, так написано у рудакова.
и я перевожу его в защищенный режим, установив первый бит:
mov eax, cr0
xor eax, 1
mov cr0, eax
lgdt - загрузить в gdtr глобальную дескрипторную таблицу
компилил на TASM 4.1 и TASM 5.0, не прет
brainFuck вне форума Ответить с цитированием
Старый 20.08.2008, 12:44   #5
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от brainFuck Посмотреть сообщение
хммм...
компилил на TASM 4.1 и TASM 5.0, не прет
(.386p не указано ?)
Посмотрите пример. Работать, конечно, не будет, но компилируется.

Код:
.386p 
  
data segment USE16   
  pdescr dd 01,02,03
data ends   
  
code segment USE16   
assume cs:code, ds:data   
start:    

   lgdt fword ptr pdescr
   mov eax, cr0
   xor eax, 1
   mov cr0, eax 	

   int 20h

code ends   
end start
----------------------
tasm test1.asm
tlink test1, test1
----------------------
alexBlack вне форума Ответить с цитированием
Старый 20.08.2008, 18:42   #6
brainFuck
 
Регистрация: 20.08.2008
Сообщений: 7
По умолчанию

спс всем!
оказывается все намного проще:
я просто ошибся когда указывал директиву - написал .586 вместо .586p
brainFuck вне форума Ответить с цитированием
Старый 20.08.2008, 19:47   #7
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

добавлю
регистр cr0 это контрольный регистр, он управляет работой процессора. Первый (вернее нулевой) бит в нём включает защищённый режим процессора.
Код:
mov eax, cr0
xor eax, 1
mov cr0, eax
этот кусок включает защищённый режим процессора. НО этого недостаточно дял продолжения успешной его работы. Перед этим надо подготовить GDT и первой же командой после этого куска должна быть команда far jmp. в общем, долгая история...
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка Freeman Общие вопросы C/C++ 3 26.05.2008 19:43
В чем ошибка!!! juden Общие вопросы Delphi 12 10.03.2008 08:53
ОШИБКА YLIANOVA83 Microsoft Office Word 5 07.03.2008 15:02
Что за ошибка??? Rembo Свободное общение 2 08.01.2008 14:34
в чем ошибка? Lonix Общие вопросы Delphi 2 24.03.2007 09:41