Я не могу увидеть что вызвало проблему.
sd_kcode:
dd 0x0000ffff
db 0x00
db 0x8a
db 0xcf
db 0x00
dd 0x0000ffff
db 0x00
db 0x9a
db 0xcf
db 0x00
состояние после выполнения
cr0
совсем не такой каким должен быть.-d in_asm,exec,cpu -D logfile
, результатом будет лог исполняемых команд процессора в интерпретации qemu и состояния регистров на момент начала выполнения блоков кода. Тебе останется найти в этом логе адрес 0x7c00
чтобы увидеть процесс выполнения своего кода. strace -e read cat /dev/input/mice
, там будет видно что из системного вызова read()
приходит 3 байта:read(3, "\10\1\0", 131072) = 3
read(3, "\10\1\0", 131072) = 3
read(3, "\10\4\0", 131072) = 3
read(3, "\10\3\1", 131072) = 3
read(3, "\10\1\0", 131072) = 3
read(3, "\10\1\0", 131072) = 3
Где я натупил?
$ cat test.S
.text
far_jump_to_kernel:
.byte 0x66
.byte 0xEA
.word 0x7777
.short 0x0008
$ gcc -c -m32 test.S -o test.o
$ objdump -d test.o
test.o: file format elf32-i386
Disassembly of section .text:
00000000 <far_jump_to_kernel>:
0: 66 ea 77 77 08 00 ljmpw $0x8,$0x7777
Пытался смоделировать дифракцию на круглом отверстии, но верный ответ получается только в центре.
Использовал интеграл Кирхгофа в виде суммы
Дело в том, что при загрузке программы загрузчик перезаписывает в ней всякие адреса, которые используются при вызовах функций и переходах.
es
, ds
и si
в момент выполнения инструкции lodsb
и что находится по этим адресам в памяти. По той же логике и в 100 Гц будут присутсвовать составляющие высоких частот и они же не зависимы от часоты всегда будут там?
Частота дискретизации у меня в 4 раза больше частоты сигнала. По заданию частота может быть от 100 Гц до 2 КГц.
У меня они в 2 разных сегментах. Как между ними правильную связь сделать?
es
если бы использовалась инструкция stosb
, но в этом коде этого не происходит. да, действительно запустил clang 1.c && ./a.out
и код из примера с гайда заработал корректно.
gcc 1.c && ./a.out
-- у вас реально работает по-другому? 1. Как ее сделать исполняемой? Я настроил сегмент так же, как "родной" сегмент. Поставил галочки на read, write, задал те же регистры в assume. При том при дебаге видно, что шаг на мою функцию доходит, но функция вызова становится пустой (db 0).
2. Не знаю как сделать возврат
rPman, для этого логично было бы его спросить напрямую: что ты видишь на картинке.