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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2011, 11:54   #1
Celestia
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 68
Восклицание Портирование кода на NASM

Здравствуйте, друзья!
Помогите пожалуйста портировать небольшой код с TASM (предположительно) на NASM

Вот тут я его взял http://www.asm-faq.ru/processory-int...jj-rezhim.html.
А нужен он для того чтобы перевести процессор в нереальный режим.

Код:
; область данных:
GDT label byte
db 8 dup(0) ; нулевой дескриптор
; 16-битный 4 Гб сегмент:
db 0FFh,0FFh,0,0,0,1001001b,11001111b,0
gdtr dw 16 ; размер GDI
gdt_base dd ? ; линейный адрес GDT

; код программы
; определить линейный адрес GDT
xor еах,еах
mov ax,cs
shl eax,4
add ax,offset GDT
; загрузить GDT из одного дескриптора (не считая нулевого)
mov gdt_base,eax
lgdt fword ptr gdtr
; перейти в защищенный режим
cli
mov eax,cr0
or al,1
mov cr0,eax
jmp start_PM ; сбросить очередь предвыборки
; Intel рекомендует
start_PM: ; делать jmp после каждой смены режима
; загрузить все сегментные регистры дескриптором с лимитом 4 Гб
mov ax,8 ; 8 - селектор нашего дескриптора
mov ds,ax
mov es,ax
mov fs,ax
mov gs,ax ; перейти в реальный режим
mov eax,cr0
and al,0FEh
mov cr0,eax
jmp exit_PM
exit_PM:
; записать что-нибудь в каждый сегментный регистр
хог ах,ах
mov ds,ax
mov es,ax
mov fs,ax
mov gs,ax
sti
mov ax,cs
mov ds,ax
; и все - теперь процессор находится в реальном режиме
; с неограниченными сегментами
Спасибо!
Celestia вне форума Ответить с цитированием
Старый 28.01.2011, 11:56   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Портировать не помогу, но тут уже этим плотно занимались.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 28.01.2011, 12:03   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ссылка немного не верная, то модуль для открытия линии A20.
вот вся тема, там сначало почитайте и найдете код.(пост 2 и 3)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 28.01.2011 в 12:07.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.01.2011, 12:20   #4
Celestia
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 68
По умолчанию

Благодарю!
Celestia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
портирование с паскаля на С++ Jenkins Помощь студентам 1 29.12.2010 21:34
Нужна литература (учебник) по nasm veter_s_morya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 19.12.2010 19:05
Распознавание Аски кода и скан кода MyLastHit Общие вопросы Delphi 8 06.12.2010 18:34
MinGW прилинковка *.o файла от NASM(coff) Пепел Феникса Общие вопросы C/C++ 1 09.03.2010 17:55
[c++] [портирование linux->windows] линковка staseg Общие вопросы C/C++ 0 23.11.2009 18:36