Форум программистов, компьютерный форум, киберфорум
ОС на Assembler
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 08.01.2018
Сообщений: 2
1

Что значит строчка кода?

03.02.2018, 23:30. Показов 1719. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
USE16
org 0x7c00
start:
xor eax, eax
xor esi, esi
xor edi, edi
mov ds, ax
mov es, ax
mov bp, 0x7c00
mov ax, 0x0003
int 0x10
mov si, msg_Load
call print_string_16
jmp 0x0000:0x8000
print_string_16:
pusha
mov ah, 0x0E
 
.repeat:
lodsb
cmp al, 0
je .done
int 0x10
jmp short .repeat
 
.done:
popa
ret
msg_Load db "Hello world!", 0
 
mov ah, 0
int 16h
times 510-$+$$ db 0
sign dw 0xAA55
Пытаюсь написать на ассемблере boot sector. В поисках информации по этому поводу нашел в интернете это код на fasm`е, помогите понять что значит адрес 0x0000:0x8000? Почему jmp идет именно по этому адресу?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2018, 23:30
Ответы с готовыми решениями:

Что значит эта строчка кода?
что значит это строчка? st = h.GetStage(i); cout << "Информация о доме:" << endl; for...

Не понимаю что значит строчка кода
Доусон "Программируем на Python". Не понимаю последнюю строчку кода. Почему запихнули в скобки...

Работа с WiFi. Можете объяснить, что значит строчка кода.
Недавно начал изучать работу с WiFi на C#. На одном из сайтов нашел небольшой пример программы. ...

Что значит эта строчка кода? EICRA=(1<<ISC11) | (1<<ISC10) | (0<<ISC01) | (0<<ISC00);
Подскажите пожалуйста что это EICRA=(1&lt;&lt;ISC11) | (1&lt;&lt;ISC10) | (0&lt;&lt;ISC01) | (0&lt;&lt;ISC00); вроде...

1
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
04.02.2018, 07:34 2
Цитата Сообщение от Windman Посмотреть сообщение
помогите понять что значит адрес 0x0000:0x8000?
Почему jmp идет именно по этому адресу?
Это переход на адрес, где должен находится загрузчик оси (для XP, это файл 'NTLDR'). Этот адрес не обязательно должен быть 0:8000h. Например, стандартный WIN-загрузчик передаёт управление по адресу 0:0600h, ты можешь выбрать любой-другой, но не занятый биосом. Вот карта памяти реального режима при первом включении, до загрузки оси:
Код
  Память в реальном режиме [первый 1М] =====================
  ==========================================================
  0000:0000 - 0000:05FF    используется BIOS (1.536)
  0000:0600 - 0000:7BFF    свободно (30.208)
  0000:7C00 - 0000:7DFF    программа начальной загрузки (512)
  0000:7E00 - 9FFF:FFFF    свободно (623.104)
  A000:0000 - FFFF:FFFF    используется BIOS (393.216)
Одним словом, твой загрузчик - это только мизерная часть нормального загрузчика. Вместо вывода сообщений, ты должен скопировать весь/первый сектор диска, и найти в его "Таблице разделов" активный раздел с флагом(80h). Дальше, скопировать с сектора(63) этого раздела загрузчик оси, как-раз на твой адрес 0:8000h, и только потом - передать на него управление JMP 0:8000h. Виндовый NTLDR переключает процессор в защищённый режим и подтягивает в память всю винду.

Для экcперементов, можешь взять HEX-редактор "HxD", открыть в нём свой диск(С) и сохранить его нулевой сектор. Дизассемблировав его поймёшь, как работает эта кухня.
2
04.02.2018, 07:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2018, 07:34
Помогаю со студенческими работами здесь

что значит строчка C#
mouseRay1 = Camera.main.ScreenPointToRay(Input.mousePosition); mouseRay1 типа ray

что значит строчка?
System.out.printf(&quot;%8.8f&quot;, find(a, b, 0.0001));

Что значит эта строчка?
System.out.printf(Locale.US ,&quot;%.8f&quot;,((double)((l/k) + 1)*h*1.0)); где l-расстояние от А до В...

что значит эта строчка?
e.Handled = !(char.IsDigit(e.KeyChar) || e.KeyChar == (decimal) Keys.Back);


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru