Комментарии: В реальном режиме также доступны 32-битные регистры. А вот 64-битные только в длинном. А ещё проверяет сигнатуру 0x55,0xAA в конце....
Да. У меня Убунта. OpenOffice должен открыть docx. Максимум форматирование поедет, если оно будет слишком сложным. Я думаю у вас не такой документ.
org 0x7C00 ... rb 510 - ($ - $$) db 0x55,0xAA rb (2880 * 512) - ($ - $$) - 1 db 0 Это самый простой вариант - получается файл с 512 байтами...
Потому что bochs.exe без dbg не понимает опцию gui_debug и magic_break. Для них надо два разных bxrc файлы заводить.
Убери inc si в конце цикла - lodsb уже делает эту работу.
нет. только править исходники. но если встала ассоциация, то очень даже удобно дважды кликнуть по файлу bxrc. Даже в Linux я так сделал.
Не советую изобретать велосипед. Всё что только можно (очень мощный макроязык, поддержка практически всех инструкций процессора - даже самых...
Это я для Linux такое долго искал (пришлось собирать из исходников с особенными параметрами). В Windows достаточно написать в bxrc строчку:...
Потому что в стеке данные располагаются так: параметры адрес возврата то есть pop dx извлекает адрес возврата, а не параметр. Надо писать так:...
если у нас есть адрес и нам надо узнать в функции Y он или нет, то достаточно просканировать память начиная с Y в поисках первого ret. Это и будет...
Как я понимаю в обработчике одного исключения вполне может вызваться другой - сам процессор против не будет, но в Windows (а быть может и других...
Точки останова (аппаратные) ставить можно? Тогда просто ставим её на первую инструкцию Y и смотрим на первое dword стека - это и есть адрес...
Проверил - вы правы. Просто я где-то читал, что DI - ES. То ли автор ошибся, то ли я не так понял. Правда я на такие грабли бы не наступил всё...
это определённо не та инструкция. надо бы так: mov si, text1 кстати, вместо mov al, [ds:si] лучше бы написать lodsb. она делает тоже самое но...
Нет. DI подразумевает сегментный регистр ES (SI - DS, BX - DS, BP - SS), поэтому надо писать mov al, [ds:di]
Я делаю это так: write_str: push ax si mov ah, 0x0E @@: lodsb test al, al jz @f int 0x10 jmp @b @@: pop si ax...
Кстати, в длинном режиме отказались от V86. Нет. Эта конструкция аналогична: #define KERNEL_CODE64_SELECTOR 8 Или если вы пишите в Си a = 1 shl 3...
В данном контексте это не команда ассемблера, а команда компилятора всё равно что: mov eax, 1 * 8 очевидно, что получиться mov eax, 8 а тут mov...
Я константу объявляю. После этого KERNEL_CODE64_SELECTOR = 8 А mov eax, KERNEL_CODE64_SELECTOR прокомпилируется в mov eax, 8
Есть! И сегменты остались только для этого. А в обычном PM Они ещё имели базу и лимит. Ещё как уедешь. На Bochs. Он предоставляет огромные...
Имена участников (разделяйте запятой).