18.03.2019, 23:38 [+3 UTC]
в нашей команде: 3 471 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.72 (17.03.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
09.03.2019, 10:08

Форум:
18.03.2019, 16:49

Последний вопрос:
18.03.2019, 20:24
Всего: 149051

Последний ответ:
18.03.2019, 23:01
Всего: 257997

Последняя рассылка:
18.03.2019, 22:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
31.03.2010, 11:15 »
jeck26
Спасибо, с самого начала смотрел на Samsung'и. А видеокарты предпочитаю исключительно NV [вопрос № 177492, ответ № 260398]
08.12.2009, 15:02 »
Лысенков Антон Анатольевич
Да! Был Кидо. Спасибо огромное! [вопрос № 175018, ответ № 257477]
22.01.2010, 16:37 »
Гуревич Александр Львович
Спасибо, очень точный и четкий ответ. [вопрос № 176140, ответ № 258761]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 872
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 505
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 133

Перейти к консультации №:
 

Консультация онлайн # 194973
Раздел: • Assembler
Автор вопроса: Arthur (Посетитель)
Отправлена: 13.03.2019, 20:24
Поступило ответов: 0

Здравствуйте! У меня возникли сложности с таким вопросом:

:Fasm
:Window 7 32
:Oracle VM VirtualBox
:запускаю с файла .iso

не получается перейти на участок кода где будет выполняться код РМ, выводит только текст что в режиме RM и дальше критическая ошибка, хотя если написать после mov CR0, EAX просто jmp $ все норм, прошу извинить с фасмом не сильно знаком, масм ругается на команду lgdt, что в коде не так?

use16
org 7c00h
start:
	mov ax, 3
	int 10h
	
	mov ax, 0b800h
	mov es, ax
	xor di,di
	mov ax, 3152h ; R
	mov [es:di], ax
	mov ax, 314Dh ; M
	mov [es:di+2], ax
	
	mov ax, cs
	mov ds, ax
	;=====================================================================
	; адрес для коррекции cs в PM
	xor eax, eax
	lea ax, [ds:PM_CODE]
	shl eax, 4
	mov [ds:GO_PM_CODE], eax
	
	; вычислить линейный адрес GDT (для загрузки регистра GDTR):
	xor eax, eax
	lea eax, [ds:GDT]
	shl eax, 4
	mov [GDTR2], eax
	lgdt fword ptr GDTR
	
	;=====================================================================
	; открываем линию А20
	in al, 92h
	or al, 2
	out 92h, al
	
	; запрет маскируемых прерываний:
	cli
	
	; запрет немаскируемых прерываний:
	in AL, 70h
	or AL, 80h
	out 70h, AL

	; переключение в защищенный режим:
	mov EAX, CR0
	 or AL, 1
	mov CR0, EAX
	
	; коррекция cs (jmp)
			db 0EAh
GO_PM_CODE 	dd ?
			dw 00001000b

; PM
use32
PM_CODE:
;здесь будет код вывода текста (РМ режим)
	jmp $
	
	

;================================= DATA ====================================
; ТАБЛИЦА ГЛОБАЛЬНЫХ ДЕСКРИПТОРОВ:
GDT:
NULL		db      8 dup(0)
CODE_descr  db      0FFh,0FFh,00h,00h,00h,10011010b,11001111b,00h
DATA_descr  db      0FFh,0FFh,00h,00h,00h,10010010b,11001111b,00h
VIDEO_descr db      0FFh,0FFh,00h,80h,0Bh,10010010b,01000000b,00h

GDT_size    equ $-GDT 		; размер GDT
 
GDTR  dw GDT_size-1          ; 16-битный лимит GDT
GDTR2 dd      ?              ; 32-битный линейный адрес GDT

Состояние: Консультация активна (до закрытия: 4 сут. 20 час. 46 мин.)

Oтветов пока не поступило.

Мини-форум консультации № 194973

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 1

 +1 
 
= общий = | 14.03.2019, 12:03 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Кто будет настраивать контроллер прерываний? Создавать шлюзы для аппаратных прерываний?
Первое же прерывание от таймера приводит к краху.

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Arthur
Посетитель

ID: 401281

# 2

= общий = | 14.03.2019, 17:17 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

а как же запрет на прерывание (маскируемое и немаскируемое) 38, 41 строка, я читаю данную статью Процессор Intel в защищенном режиме #8 и там автор пишет на тасм и я попытался это реализовать на фасм

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 3

 +1 
 
= общий = | 14.03.2019, 17:42 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Хорошо, где стек? Где дескрипрор gdt?
Могу дать посмотреть мои давнишние изыски. Под TASM. Есть и прерывания и вывод на экран...
t_OS.rar (6.0 кб)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Arthur
Посетитель

ID: 401281

# 4

= общий = | 14.03.2019, 17:52 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

стека нету, есть только дескриптор кода чтобы выполнять, дескриптор данных откуда читать данные и дескриптор адреса видео 0b800h собственно куда будет записываться текст, описание gdt начинается с 63 строки и начиная с строк 24 по 29 определяется адрес и записывается в регистр gdtr, за файл огромное спасибо вам smile

-----
Последнее редактирование 14.03.2019, 17:57 Arthur (Посетитель)

Arthur
Посетитель

ID: 401281

# 5

= общий = | 15.03.2019, 16:17 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

попытался откомпилировать исходник из файла который мне дали и фасм выдает

C:\Users\U1\Desktop>D:\Fasm\Fasm.exe T_OS_1.asm
flat assembler  version 1.71.39  (1048576 kilobytes memory)
tiny_os.inc [2]:
        limit   dw      0
error: unexpected characters.

C:\Users\U1\Desktop>

попытался поискать в интернете ничего не получилось, нашел только что Мануал по фасм но это будет долго и этот вопрос через 3 дня закроется, подскажите что не так?

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 6

 +1 
 
= общий = | 15.03.2019, 16:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Arthur:

У тасма и фасма разный синтаксис. Надо будет все переписать smile
А чем не устраивает тасм?
А то, что закроется, не переживайте smile Можно будет и потом общаться smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 7

 +1 
 
= общий = | 15.03.2019, 16:49 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Arthur:

Продлил еще на 5 суток smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Arthur
Посетитель

ID: 401281

# 8

= общий = | 15.03.2019, 17:50 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

ну смущает что тасм уже не поддерживается разработчиками Borland и у меня уровень программирования 0.1% и пока наберусь опыта пройдет лет так 5 и там еще что нибудь выйдет новое а так выбрал по моему мнению стабильный инструмент и не отвлекаясь уделить больше времени на результат, за продление спасибо smile

Arthur
Посетитель

ID: 401281

# 9

= общий = | 17.03.2019, 10:52 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

нашел тасм и скомпилировал исходник из файла, он выдал exe файл, сделал iso и запустил в virtualbox и в qemu ошибок не выдают но и на экране нет вывода текта, никакова smile , начал подробнее изучать исходник и у меня появились вопросы
файл T_OS_1.asm
строка 72: f_name db 't_os.dat',0 - в архиве такого файла нет(в сроке 129 к ниму обращаются)что это за файл и насколько он важен?
строка 77: mov ax,DGROUP - что он содержит DGROUP в файле идет только присвоение от него а что в нем?, в интернете нашел что он связан с сегментами
строка 196: mov [(desc_struc bx).base_l],ax - как это расшифровать ?
строка 227: db 0cch - это же int3? я грешу что это и за него все тормозит

Arthur
Посетитель

ID: 401281

# 10

= общий = | 17.03.2019, 12:22 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

скачал dosbox все заработало smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 11

 +1 
 
= общий = | сегодня, 11:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Arthur:

Все заработало, ну и славно smile
Что касается файла t_os.dat...
Давно писалось (очень давно smile ). Судя по программе, там должно быть 32 байта любого текста, причем в виде: символ, атрибут.
Т.о,, там ожидается некая 16-символьная строка. smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Arthur
Посетитель

ID: 401281

# 12

 +1 
 
= общий = | сегодня, 17:28 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

решил проблему в фасм, вывел текст из РМ smile , такую банальную ошибку так долго решал smile , 7с00 это же смешение

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.18510 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.72 от 17.03.2019
Версия JS: 1.33 | Версия CSS: 3.35