![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]()
Всем доброго дня.
Пишу на ассемблере FASM. При переходе из Real Mode в Protected Mode происходит какая-то фигня. В GDT - есть сегмент видеопамяти [Адрес: 08B00h] Но на экран ничего не выводится. Просто сразу переходит в jmp $ Так вот может я не правильно заполняю регистр GDTR или сегменты. То есть пример: Код:
Главное я хочу понять нумерацию битов в переменных (db ,dd ,dq) в регистрах (ax,cx) в регистре (gdtr) Спасибо. Последний раз редактировалось Serge_Bliznykov; 23.08.2017 в 15:23. |
![]() |
![]() |
![]() |
#2 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]() Цитата:
А вот элементы массивов напротив нумеруются с слева на права. В числах разряды идут как и в регистрах справа налево. 2017-08-23_18-30-51.png 2017-08-23_18-37-49.png Физический адрес видео памяти 0b8000h. Мало того что две цифры местами перепутали, так ещё и нолик потерялся. Это сегмент кода, не данных. Тем более у него запрещено чтение. Так что как вы писали в видеопамять непонятно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 23.08.2017 в 18:46. |
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]()
Спасибо.
То есть мне надо загружать сегменты в Protected mode. Код:
Код:
И спасибо за картинки. Понятно объяснил. |
![]() |
![]() |
![]() |
#4 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Да,только правильно заполните таблицу GDT. С правильными дескрипторами, для каждого сегмента.
Надеюсь поможет:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 23.08.2017 в 20:16. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]() |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]()
Не хочет работать:
Таблица GDT: Код:
Код Protected Mode: Код:
Пытался так, но fasm ругается "Invalid operand": Код:
|
![]() |
![]() |
![]() |
#7 |
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 296
|
![]()
Найди различия в этих картинках:
Код:
Код:
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
![]() |
![]() |
![]() |
#8 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Nikolay2015
Приведите весь код целиком.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]() |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]()
Вот полный код:
Код:
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод программы с 32 бит на 64 бит систему | andreyxdd | Общие вопросы Delphi | 3 | 19.07.2017 11:04 |
Исправить код программы: Ввести с клавиатуры 8-разрядное двоичное число Х, установить младший бит этого числа так, чтобы количество единичных бит в двоичном числе Х стало четным | Zhan1234 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 25.05.2017 12:41 |
ОЗУ | esa2esa | Компьютерное железо | 2 | 29.12.2010 20:45 |
Ковертирование из png 24 бит в png 8 бит | isat | Общие вопросы .NET | 0 | 22.03.2010 13:38 |