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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2009, 11:55   #1
adgam
Пользователь
 
Регистрация: 24.09.2009
Сообщений: 10
По умолчанию Работа в защищенном режиме(TASM)

Следующая программа осуществляет переход из реального режима в защищенный и обратно,при этом на экране должно выводится слово "hello".Однако,слово не выводится.Может ли кто-то помочь?Заранее спасибо.
P.S Отладка программы делается командами:
tasm /m name.asm
tlink /x/3 name.obj

Код:
.386p
data segment 'data' use16
message db 'H','7','e','7','l','7','l','7','o',7
message_1=$-message
rest_scr=25*80
GDT label byte
db 8 dup(0)
GDT_flatCS db 0FFh,0FFh,0,0,0,10011010b,11001111b,0
GDT_flatDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
GDT_16bitCS db 0FFh,0FFh,0,0,0,10011010b,0,0
GDT_16bitDS db 0FFh,0FFh,0,0,0,10010010b,0,0
GDT_1=$-GDT
gdtr dw GDT_1-1
dd ?
data ends

RM_seg segment para public 'code' use16
assume CS:RM_seg,SS:RM_stack,ds:data
start:
mov ax,data
mov ds,ax
in al,92h
or al,2
out 92h,al
xor eax,eax
mov ax,PM_seg
shl eax,4
add eax,offset PM_entry
mov dword ptr cs:pm_entry_off,eax
xor eax,eax
mov ax,ds
shl eax,4
push eax
mov word ptr GDT_16bitDS+2,ax
shr eax,16
mov byte ptr GDT_16bitDS+4,al
xor eax,eax


mov ax,cs
shl eax,4
mov word ptr GDT_16bitCS+2,ax
shr eax,16
mov byte ptr GDT_16bitCS+4,al
pop eax
add eax,offset GDT
mov dword ptr gdtr+2,eax
lgdt fword ptr gdtr
cli
in al,70h
or al,80h
out 70h,al
mov eax,cr0
or al,1
mov cr0,eax
db 66h
db 0EAh
pm_entry_off dd ?
dw SEL_flatCS
RM_return:
mov eax,cr0
and al,0FEh
mov cr0,eax
db 0EAh
dw $+4
dw RM_seg
in al,70h
and al,07FH
out 70h,al
sti
mov ah,0
int 16h
mov ah,4Ch
int 21h
SEL_flatCS equ 00001000b
SEL_flatDS equ 00010000b
SEL_16bitCS equ 00011000b
SEL_16bitDS equ 00100000b
RM_seg ends

PM_seg segment public 'CODE' use32
assume cs:PM_seg
PM_entry:
mov ax,SEL_16bitDS
mov ds,ax
mov ax,SEL_flatDS
mov es,ax
mov edi,0B8000h
mov ecx,rest_scr
mov ax,720h
rep stosw
mov esi,offset message
mov edi,0B8500h
mov ecx,message_1
rep movsb
db 0EAh
dd offset RM_return
dw SEL_16bitCS
PM_seg ends

RM_stack segment stack 'STACK' use16
db 100h dup(?)
RM_stack ends
end start

Последний раз редактировалось adgam; 11.11.2009 в 22:54.
adgam вне форума Ответить с цитированием
Старый 11.11.2009, 14:19   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

что такое csm_entry_off
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 11.11.2009, 22:48   #3
adgam
Пользователь
 
Регистрация: 24.09.2009
Сообщений: 10
По умолчанию

Вместо csm_entry_off должно быть cs : pm_entry_off
adgam вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20
Работа в графическом режиме adgam Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 23.04.2010 17:56
Работа со строками на ассемблере (TASM) crashX Помощь студентам 3 03.06.2009 09:22
Как выполнить макрос на защищенном листе Gennady_58 Microsoft Office Excel 3 18.04.2009 10:31
Работа макроса в фоновом режиме Maxx Microsoft Office Excel 2 14.01.2009 17:09