Описание тега real-mode

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

Ограничения реального режима в части разработки драйверов устройств

Мой запрос касается разработки драйвера устройства. Если я хочу использовать реальный режим для создания игрушечной ОС, но решаю написать сетевой стек / набор сетевых драйверов, достаточно ли места для этого? Должен ли я сделать как DOS и перейти в …
28 май '15 в 19:01
1 ответ

Правильно ли я настроил сегмент стека в реальном режиме?

Я пишу загрузчик, и я настроил свой стек как таковой... STACK_SEGMENT equ 0x0050 STACKP_OFFSET equ 0x03FF mov ax, STACK_SEGMENT mov ss, ax mov sp, STACKP_OFFSET Я делаю 1024 байта стекового пространства, делая это? и это уместно, чтобы загрузить дру…
10 июл '11 в 01:39
6 ответов

Можно ли использовать 32-битные регистры / инструкции в реальном режиме?

Я запутался в простой задаче сборки при изучении простого исходного кода для ОС. На этом сайте: http://wiki.osdev.org/Babystep7 следующий код предназначен для перехода из реального режима в защищенный режим. mov eax, cr0 or al,1 mov cr0, eax Я знаю,…
02 авг '11 в 19:29
1 ответ

Векторный сброс настроек и документация по педантике. Биты против байтов

Отрывок из документации по разработке Intel, том 3, раздел 9 Первая инструкция, которая выбирается и выполняется после аппаратного сброса, находится по физическому адресу FFFFFFF0H. Этот адрес на 16 байт ниже самого верхнего физического адреса проце…
23 дек '16 в 17:10
10 ответов

Распечатывать номер на языке ассемблера?

mov al,10 add al,15 Как мне вывести значение 'al'?
17 дек '09 в 14:24
1 ответ

Отображение текстовой видеопамяти на 0xb8000 без использования библиотеки C

Я пишу ядро ​​на C. Я использую кросс-компилятор GCC, пишу в системе Windows и ориентирован на 16-битный реальный режим. У меня нет библиотеки C, доступной для написания ядра. Я начал с некоторого кода, который должен печатать символ прямо на экране…
20 май '16 в 19:45
1 ответ

Почему этот код в реальном режиме работает на виртуальной машине, но не работает на моей реальной машине?

Я пытаюсь написать код сборки в mbr, чтобы использовать BIOS ISR. Я пишу следующий код в mbr, ожидая, что символы "ABCD" будут напечатаны на экране: mov ah,0x0e mov bp,0x8000 mov sp,bp push 'A' push 'B' push 'C' push 'D' mov al, [0x7ffe] int 0x10 mo…
13 сен '16 в 08:47
1 ответ

Как выполнить другой файл в сборке 16 бит

Я разрабатывал простой ресетер BIOS, просто для обучения. Итак, у меня есть основной файл, это Menu, называемое Reseta.com, да, это маленькая модель без стека. И у меня есть A.com, где находится код для сброса, поэтому мне нужно запустить A.com с мо…
31 дек '16 в 19:58
0 ответов

int 0x13, ah = 0x08, получить параметры привода

Я пытаюсь написать простую систему команд в x86 для запуска простых файлов.COM. Эта система команд предназначена для загрузки с дискеты 720 КБ. Вот код: [BITS 16] [ORG 0x0000] mov ax, cs mov ds, ax mov [drive_num], dl mov [root_drive], dl mov bx, lo…
01 янв '16 в 09:56
2 ответа

Real-Mode x86 ASM: как сделать основы?

Я сейчас читаю boot.s файл в исходном коде для первого когда-либо ядра Linux (при условии, что 0.01 действительно является первым публичным выпуском). Я знаю C и ASM, последний значительно меньше первого. Несмотря на это, я, кажется, в состоянии пон…
3 ответа

Невозможно записать в память экрана на C

Я очень плохо знаком с C, это мой второй язык программирования высокого уровня после Java. Я получил большинство основ, но по какой-то причине я не могу записать один символ в экранную память. Эта программа скомпилирована с использованием Turbo C дл…
01 дек '17 в 07:23
1 ответ

Ядро в c встроенной сборки

Привет, у меня снова проблема, я пытаюсь написать ядро ​​на языке ассемблера GNU, но у меня есть некоторые проблемы. Мой файл ядра versuch.c выглядеть так: void kprintf( char hello[]) { /*char* video=(char*)0xb8000; for(int i=0;hello[i]!='\0';i++) {…
18 дек '16 в 08:55
1 ответ

(сборка в реальном режиме x86) Данные "обрезаются" в конце программы?

Это продолжение (реальный режим nasm x86). Как писать / читать строки в загрузочном секторе?, Я работаю над игрушечной ОС для реального режима x86 в NASM. Загрузочный сектор 512B загружает другой сектор с остальной частью кода. Проблема в том, что м…
23 сен '18 в 06:44
1 ответ

Сборка около JMP / далеко JMP в мнемонический реальный режим

Я прошу прощения, моя проблема, вероятно, очень проста, я просто не придумываю решение. Я пытался читать статьи, учебные пособия и предыдущие вопросы по этому вопросу (пытался найти предыдущий пост на эту тему, если он есть, я, наверное, использовал…
15 май '13 в 01:12
0 ответов

Моя процедура сборки не возвращается

Я пытаюсь написать код для запуска в качестве загрузчика. Это должно напечатать 'Enter your name', затем прочитайте имя пользователя, затем продолжайте делать другие вещи, но я застрял в печати 'Enter your name!', Когда я запускаю этот код, он печат…
30 мар '17 в 07:14
2 ответа

Как я могу определить результат в AX после инструкций MOV и LEA?

Я пытаюсь понять, каким будет содержимое регистра AX в следующем вопросе, я не понимаю, как узнать, что такое [5000h] или [DI] в примерах. Состояние регистров и памяти определяется как: CS=3000 [53000]=BBBB [33000]=6666 [13000]=1111 DS=1000 [54000]=…
28 янв '19 в 17:10
1 ответ

Как можно распечатать нажатую клавишу клавиатуры в сборочном загрузчике?

Я создал небольшую загружаемую ОС в сборке с Flat Assembler. Я называю это PulsarOS. Тем не менее, я хочу создать программу для печати. Как я уже сказал, это все в сборке x86. Я просто хочу, чтобы пользователь мог набрать текст, а набранный текст от…
09 июл '16 в 19:20
1 ответ

Объединение NASM, BCC и Ld86 в реальном режиме: имеет плохой магический номер

Я написал загрузчик и скомпилировал его, используя NASM ассемблер (не AS86) все работало отлично. Теперь я хочу научиться вставлять 16-битные C код в моем приложении. Я прочитал от нескольких SO, что bcc рекомендуется для таких ситуаций в связи с те…
13 май '17 в 08:42
6 ответов

Каковы сегмент и смещение в реальном режиме адресации памяти?

Я читаю об адресации памяти. Я прочитал о смещении сегмента, а затем о смещении дескриптора. Я знаю, как рассчитать точные адреса в реальном режиме. Все это нормально, но я не могу понять, что именно смещение? Везде, где я читаю: В реальном режиме р…
07 ноя '10 в 20:20
1 ответ

Зачем тестировать порт 0x64 в загрузчике перед переключением в защищенный режим?

В моем курсе MIT OS (686) я нашел код, который мне не понятен. Я пытаюсь понять инструкцию inb $0x64, %al в boot/boot.S. Насколько я понимаю, он читает один байт из порта данных 0x64 в AL, Что такое порт 0x64? Какое устройство или механизм он провер…
12 янв '14 в 19:02