Nasm - это Netwide Assembler, ассемблер x86/x64 с открытым исходным кодом. Он нацелен на переносимость, модульность и простой синтаксис.
1 ответ

Подпись без деления в насм

Я пытался отладить небольшую программу сборки, где я запрашиваю дивиденд и делитель, и мне нужно вывести частное и остаток. Однако по некоторым причинам мои частное и остаток не выводятся на экран. Вот мой код: segment .data prompt db "Please enter …
20 окт '14 в 02:14
2 ответа

Сборка: [SI + CX] = невозможная комбинация размеров адресов

Итак, сегодня я попытался создать библиотеку для моей операционной системы с одной простой функцией: печатать символы на экране. Чтобы использовать эту функцию, мне просто нужно поместить адрес строки в стек и вызвать ее (строка должна заканчиваться…
1 ответ

Печать символов на экране ASM в защищенном режиме

Я пытаюсь войти в защищенный режим и затем распечатать "Привет" Но вместо этого он просто печатает "Загрузка ОС" из моего вызова прерывания BIOS (который произошел до ввода pmode) И ничего больше. Мой Bootloader.asm %DEFINE KERNEL_LOAD_OFFSET 0x1000…
02 ноя '16 в 13:49
1 ответ

Загрузочное ядро ​​x86 из отдельного kernel.asm (nasm)

Я написал бутстрап для загрузочного сектора. Этот загрузчик пытается загрузить ядро ​​из этапа 2 во втором секторе. Если я включаю ядро ​​в тот же asm, все работает как положено. если я добавлю файл kernel.bin из kernel.asm со смещением 512 байт в о…
22 июл '17 в 02:08
0 ответов

Невозможно связать 32-битный файл.asm в 64-битном режиме в Kali Linux.

Я использую ассемблер в Kali Linux Команда -> nasm -felf64 -g test.asm Компилирует.asm нормально, и я могу связать его, используя -> ld -g test.o И это нормально работает с -> ./a.out Однако я хочу использовать ключевые слова "push" и "pop", но там …
12 янв '18 в 01:42
0 ответов

Почему я получаю EACCES после вызова привязки сокетов в NASM linux x64

Мой код ниже. Я могу получить fd=3 в sys_socket, но не могу пройти через sys_bind из-за errno=EACCES. Я не знаю почему, так как я проверил регистры и данные памяти в my_sa. Не могли бы вы дать мне несколько советов? Большое спасибо. global _start st…
12 сен '15 в 16:24
1 ответ

Использование возвращаемых значений FPU в коде C++

У меня есть программа NASM x86, которая, кажется, работает отлично. У меня проблемы с использованием значений, возвращаемых из него. Это 32-битная Windows, использующая MSVC++. Я ожидаю возвращаемое значение в ST0. Минимальный пример, демонстрирующи…
16 июн '16 в 17:39
1 ответ

Новый кадр в ASM

Теоретически, когда я выполняю вызов: стек Local variables EBP RET ADDRESS Args ... Хорошо, дело в том, почему, когда я выполняю "pop esi", я получаю RET-АДРЕС, а не EBP? # NASM BITS 32 section .text global _start _start: call function mov eax,0x414…
17 дек '14 в 16:24
5 ответов

64-битная сборка, когда использовать регистры меньшего размера

Я понимаю, что в сборке x86_64 есть, например, (64-битный) регистр rax, но он также может быть доступен как 32-битный регистр, eax, 16-битный, топор и 8-битный, al. В какой ситуации я не просто использовал бы полные 64 бита, и почему, какое бы это б…
05 июл '11 в 02:12
1 ответ

Советы и подсказки по программированию на ассемблере

Я пытаюсь написать свою собственную "игрушечную" ОС, и на данный момент я делаю это в основном на сборке (NASM) - отчасти потому, что я надеюсь, что это поможет мне разобраться в разборке x86, а также потому, что я нахожу это тоже довольно весело! Э…
10 май '11 в 14:03
1 ответ

Что означает "[es:eax]" в "mov byte [es:eax], dl" в ассемблере NASM x86?

Может кто-нибудь объяснить, что mov byte [es:eax], dl будет означать в NASM x86 ассемблер? В частности, часть [es:eax].
07 ноя '12 в 05:05
3 ответа

Что делает resb NASM в двоичном формате вывода?

Я видел кусок кода NASM, который использует resb, Однако этот код работает в операционной системе реального режима, а выходной формат - плоский двоичный. NASM не выдает ошибку при этом, но после разбора выходного файла я все еще не мог найти то, что…
14 дек '15 в 13:51
1 ответ

Что может вызвать ошибку чтения диска в Int 13h?

Я писал тестовую программу в NASM для функции, которая использует int 13h для чтения секторов с загрузочного диска, за исключением того, что каждый раз, когда я запускаю собранную программу с помощью sudo qemu-system-i386 load_disk.bin, она выдает м…
19 мар '17 в 08:04
1 ответ

Как рассчитать сумму цифр строки ascii в ассемблере

Я пытаюсь вычислить сумму цифр строки ASCII с NASM. Чтобы сделать это, я попытался перебрать отдельные байты и накапливать значение в eax, пока не достигну нулевого байта. Так много для теории. Но линия add eax, byte[ebx] приносит ошибку "несоответс…
08 май '15 в 22:13
0 ответов

Что означает это "AT" в спине?

Вот часть кода: pop ebp sub ebp,lime_reloc-@ pop dword [ebp-@+para_ebp] mov [ebp-@+para_ebx],ebx mov [ebp-@+para_ecx],ecx mov [ebp-@+para_edx],edx mov [ebp-@+para_esp],esp Я очень запутался насчет @ и не могу найти его в руководстве по назму... Кто-…
23 янв '14 в 04:13
1 ответ

Как собрать и связать файлы.asm с исполняемым файлом Win32?

В моей системе установлены NASM и Dev-Cpp. Dev-cpp поставляется с LD (GNU Linker). Я новичок в ассемблерном коде и процессах создания 32-битного исполняемого файла Windows из файла ассемблера. Я пытался использовать это: nasm -f win32 ass.asm nasm -…
26 дек '15 в 00:34
0 ответов

Segfault в простой программе печати поплавков C/NASM x86_64/C

В моем C-коде я вызываю функцию ассемблера (NASM x86_64) (main.c). В сборке я вызываю функцию C (printf.asm) Эта функция печатает float с помощью printf. (C_printf.c) Я получаю сегфо. Должен ли я скомпилировать / ссылку по-другому? Может быть, спосо…
20 дек '16 в 00:53
0 ответов

Создать скрипт для преобразования 32+64-битной сборки NASM в Hex

Привет снова мои хорошие друзья stackru Эта неделя загадки следующая. Я пытаюсь создать приложение, которое преобразует отдельные инструкции по сборке NASM x86 в соответствующие им шестнадцатеричные байты. то есть. вход: Push 0x0 выход: 6A 00 Что бы…
03 фев '14 в 00:04
1 ответ

Толкни и вставь в нос со стеком

Я делаю учебные уроки и кое-что здесь в коде, я не понимаю, может кто-нибудь может мне помочь? я буду признателен за вашу помощь. сначала будет вызвана функция sprint, а в функции 'sprint' шаг за шагом будут выталкиваться в стек edx, ecx, ebx, eax, …
01 ноя '17 в 09:09
2 ответа

Неправильная итерация цикла в Ассемблере

Использование nasm с 32-битным ассемблерным кодом дает неожиданный результат для моих текущих попыток написать цикл, который в основном меняет местами элементы вектора. При условии ESI а также EDI указать на два разных вектора (хранение double ценно…
21 июн '14 в 13:21