я хочу поместить метку "L0" в регистр %rbx.
relocation R_X86_64_32S against `.text' can not be used when making a shared object
leaq L0(%rip), %rbx
movq L0@gotpcrel(%rip), %rbx
Сначала идёт команда 7A - погасить лампочку. Команда загружает в регистр R0 число 2. Почему?
Далее идёт команда F8 Описание этой команды M(R(P)) → D; R(P) + 1 → R(P)
Команда F8 загружает в регистр F8 число 3, хотя команда, судя по описанию, должна прибавлять к регистру R0 число 1 и сохранять результат в R0, значит в R0 должно оказаться число 1.
0: 7A -- reset Q (Q = 0)
1: F8 -- ldi 10 (D = 10)
2: 10
3: B1 -- phi 1 (R(1).1 = D, т.е. R(1) = 1000)
4: 21 -- dec 1 (R(1) = R(1) - 1, т.е. R(1) = fff)
5: 91 -- ghi 1 (D = R(1).1, т.е. D = f)
6: 3A -- bnz 4 (переход к адресу 4, пока D != 0)
7: 04
8: 31 -- bq 0 (переход к адресу 0 если Q == 1)
9: 00
a: 7B -- set Q (Q = 1)
b: 30 -- br 1 (переход к адресу 1)
с: 01
d: 00 -- idle (никогда не попадаем сюда).
Есть исходный код на Си, который вызывает функцию на ассемблере, но передаваемые аргументы как получить,
что не так?
0x7c00: mov $0x4f01,%ax
0x7c03: mov $0x100,%cx
0x7c06: mov $0x7c77,%di
0x7c09: int $0x10
(gdb) x/6hx $di
0x7c77: 0x00bb 0x0007 0x0040 0x0040 0xa000 0x0000
Вся проблема в том что не понимаю я структуры дескриптора..
db 0xFF, 0xFF, 0x00, 0x00, 0x00, 10011010b, 11001111b, 0x00
Я не могу понять именно как происходит этот прыжокjmp 00001000b:pm_entry use32 pm_entry:
Мне дан файл input.txt, в котором находится строка, где через пробел указаны числа (их число неизвестно). Требуется узнать их сумму.
...
мне кажется, что тут всё запутано и можно легче. Подскажите как.
Нужен ли ASSEMBLER специалисту по информационной безопасности?
...
В интернете все разделились на 2 лагеря: одни говорят, что он устарел и на замену ему пришли высокоуровневые языки программирования...
линк на osdev.org не кидайте, я как раз там и читал.
Two 32-bit I/O locations are used, the first location (0xCF8) is named CONFIG_ADDRESS, and the second (0xCFC) is called CONFIG_DATA. CONFIG_ADDRESS specifies the configuration address that is required to be accesses, while accesses to CONFIG_DATA will actually generate the configuration access and will transfer the data to or from the CONFIG_DATA register.
Откуда брать multiboot table с адресом фреймбуфера
Когда байт по адресу RCX равен нулю и программа достигает строки `je ..@15.endwhile`, инструкция JE просто не перескакивает на метку `..@15.endwhile`.
Почему?
cmp [rcx], dword 0
-- это вообще странная запись. Канонично было бы написать cmp dword ptr [rcx], 0
. Но в любом случае, вы не "байт по адресу RCX" сравниваете с 0, а целое слово. Ну и между строчками ok и err нет целого слова нулей, но вот после err, очевидно, есть.cmp byte ptr [rcx], 0
Допустим есть сегмент нулевой, вроде так
0000:0000
Какое значение будет следующего сегмента. И сколько их может быть.
не понимаю как работает адресация в реальном режиме.
Возможно ли программировать под Windows, как в DOS используя функции и прерывания?