Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
1

Вывод сообщения в защищенном режиме

09.10.2012, 16:35. Просмотров 1140. Ответов 4
Метки нет (Все метки)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
.386p
rmcode        segment    para    public    'CODE'    use16
        assume    cs:rmcode, ds:rmcode, ss:rmstack        
    start:
        push    cs
        pop    ds
 
        in    al,92h
        or    al,2
        out    92h,al
 
        xor    eax,eax
        mov    ax,seg PM_CODE
        shl    eax,4
        add    eax,offset entrypoint
        mov    dword ptr [entryoff],eax
 
        xor    eax,eax
        mov    ax,seg rmcode
        shl    eax,4
        add    eax,large 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,01h
        mov    cr0,eax
 
        db    66h
        db    0eah
entryoff    dd    ?
        dw    00001000b
 
GDT:
NULL_descr    db    000h,000h,00h,00h,00h,00h,000h,00h
CODE_descr    db    0FFh,0FFh,00h,00h,00h,9Ah,0CFh,00h
DATA_descr    db    0FFh,0FFh,00h,00h,00h,92h,0CFh,00h
VIDEO_descr    db    0FFh,0FFh,00h,80h,0Bh,92h,0CFh,00h
GDT_size    equ    $-GDT
 
GDTR        dw    GDT_size-1
        dd    ?
rmcode        ends
 
rmstack        segment    para    stack    'STACK'    use16
        db    100h    dup(?)
rmstack        ends
 
PM_CODE        segment    para    public    'CODE'    use32
        assume    CS:PM_CODE, DS:PM_DATA
entrypoint:
        mov    ax,00010000b
        mov    ds,ax
 
        mov    ax,00011000b
        mov    es,ax
 
        xor    esi,esi
        mov    esi,seg PM_DATA
        shl    esi,4
        add    esi,offset message
        xor    edi,edi
        mov    ecx,mes_len
        cld
        rep    movsb
        jmp    $
PM_CODE        ends
 
PM_DATA        segment    para    public    'DATA'    use32
        assume CS:PM_DATA
message:
irpc        mes,<Hello World of PM :)>
        db    '&mes&',04Fh
endm
mes_len        equ    $-message
PM_DATA        ends
        end start
Использую компилятор tasm, компоновщик tlink. В результате получается exe который я запускаю и на экране появляется консольное окно и сразу исчезает ,а должно вывестись сообщение на экран <Hello World of PM >. В чем причина?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 16:35
Ответы с готовыми решениями:

Работа с файлами в защищенном режиме
Здравствуйте, я взялся писать ОС, уже готов загрузчик переводящий в защищенный...

Будет ли прерывание int 21h работать в защищенном режиме
Будет ли прерывание int 21h функции ah=9 вывода строки работать в защищенном...

Как в защищенном режиме загрузить в регистр ds адрес сегмента 40h
Как в защищенном режиме загрузить в регистр ds адрес сегмента 40h?

Какой адрес сегмента должен быть для буфера клавиатуры в защищенном режиме
BUFER_descr db 0FFh,0FFh,??h,??h,??h,10010010b,01000000b,??h...

Память в защищенном режиме
Всем доброго дня! Я, наконец, сдал основные экзамены и теперь снова могу...

4
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,088
Завершенные тесты: 1
10.10.2012, 08:55 2
В том, что запускать программу, переводящую процессор в защищенный режим под Windows нельзя!
Либо из чистого ДОСа, либо виртуальной машины с установленным ДОСом, либо, на худой конец, через dosbox.
1
Charles Kludge
Клюг
7642 / 3157 / 382
Регистрация: 03.05.2011
Сообщений: 8,382
10.10.2012, 15:49 3
Ну, можно воспользоваться тем, что вынь уже в протмоде через вызовы DPMI.
Hello, world from DOS protected mode 32-bit client
0
IamRain
1314 / 1201 / 372
Регистрация: 02.08.2011
Сообщений: 3,493
10.10.2012, 18:29 4
Поробуй api-функции Windows вывода в консоль. типа AllocConsole и т.д. 3 функции по-моему нужно

Добавлено через 7 минут
попробуй использовать api-функции Windows для вывода на консоль. там их 3 штуки всего.
alexcoder, насколько я знаю, процессор по умолчанию уже работает в защищенном режиме в Windows.
что значит нельзя переводить в защищенный режим?
0
Charles Kludge
Клюг
7642 / 3157 / 382
Регистрация: 03.05.2011
Сообщений: 8,382
10.10.2012, 19:46 5
ElvenDragon, не поленился, проверил под голым досом - белым по красному с начала видеобуфера, как и ожидалось. Кмк, для отладки протмоды под вынью всё-таки лучше заюзать DPMI, кстати, гляньте в исходники DPMI-хоста(HX DOS Extender), как настроить IDT, чтобы можно было пользоваться прерываниями БИОСа в протмоде.
Цитата Сообщение от IamRain
api-функции Windows для вывода на консоль. там их 3 штуки всего.
Слив защитан.
wincon.h
1
10.10.2012, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2012, 19:46

Вывод сообщения
Здравствуйте! На ассемблере пишу первый раз но не могу понять. Как мне вывести...

Вывод линий в графическом режиме
Привет! У меня на программка точки выводила. Переделываю под линии. Надо чтобы...

Вывод квадрата в графическом режиме
Ребят! Очень срочно! Нужно написать программу, которая будет выводить на экран...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru