Свързани публикации 'nasm'


Обучаване на x86 с NASM — Работа със знаци, списъци и низове
В тази статия ще създадем програма, която работи със знаци, низове и списъци, използвайки секцията .data . Деклариране на символи в NASM x86 В x86 можем да декларираме данни с различни размери в секцията .data . За да декларираме символ, трябва да вземем предвид какъв е размерът на символа от текста. За ASCII знаци считаме, че един знак е с размер 8 бита. Ако искаме да декларираме ASCII символ, ще използваме DB като формат на данните. Ако искаме да използваме по-обширен..

Свързани въпроси 'nasm'

Извикване на sprintf в x64 асемблиране
Изглежда, че не мога да извикам sprintf() правилно в асемблирането. Когато се опитам да dprintf() моя буфер, който сега трябва да бъде форматиран, всичко, което получавам, е: (null) и грешка в сегментирането. Когато изпълнявам lldb...
139 изгледи

Как да преместите стойност от .data, за да се регистрирате в NASM?
Аз съм начинаещ в асемблерния език. Опитвам се да умножа две числа. section .data a dw 1; b dw 2; global _start section .text _start: mov eax, [a]; mov ebx, [b]; movv: mul ebx; mull: mov eax, 1; mov ebx, 0; int 80h; Компилирам и го...
62 изгледи
schedule 27.09.2022

Проблеми с 32-битово адресиране в NASM
Започнах да уча асемблиране и се сблъсках с проблеми, свързани с 32-битов абсолютен адрес. Наскоро прочетох публикация за този подобен проблем Защо има проблеми с абсолютното адресиране? . Можете ли да ми кажете защо, ако посоча без да пиша...
27 изгледи
schedule 01.10.2022

nasm 64 bit push qword?
Изглежда, че имам интересен проблем, въпреки че вероятно правя нещо явно нередно. Проблемът ми е, че се опитвам да избутам AAAABBBBCCCCC в стека, след което да ги отпечатам чрез stdout. Въпреки това изглежда, че в моята x86_64 среда push...
6328 изгледи
schedule 13.11.2022

xmm регистър sse x64 стойност вътре
Пиша проект за училище в x64 асемблиране. Използвам компилатор nasm. Знам, че xmm регистрите могат да съхраняват 4 x 32 бита или 2 x 64 бита. Лутах се да разбера как мога да поставя 4 плаващи стойности (32 бита) в xmm1 например. Функцията ми има...
1209 изгледи
schedule 17.11.2022

Ret незаконна инструкция
Работя с проект, който имплементира функция в асемблиране, която се извиква в main.c. Декларацията на функцията за подпис в C е void strrev(char *str) ; Инструкцията Ret ми дава грешка в незаконна инструкция. Защо? За първи път правя това....
643 изгледи
schedule 19.10.2022

асемблер помощ при намиране на agrv[1][0]
Опитвам се да получа първия елемент от това, което се съхранява в argv[1] на асемблерния език x86. Извадих стека два пъти до eax първоначално, защото искам argc , за да мога да преброя броя на argc . След това изскочи argv до ebx . Мисля...
8051 изгледи
schedule 14.11.2023

Асемблер, препращащ към паметта
аз съм начинаещ в асемблерния език, разбирам много неща досега, но в продължение на много дни се задържах в един раздел, това е объркващо за мен и най-лошото е, че през многото страници, които посетих в интернет, информацията отново се изкривява, този...
573 изгледи
schedule 18.11.2022

NASM: Не може да се сглоби инструкцията „prefetch0“.
Осъзнавам, че често е най-добре да не задавате ръчно предварително извличане на данни в кеш паметта на процесора. Аз обаче просто исках да напиша този код, за да експериментирам и да се уверя, че мога да го използвам: global start section .data...
97 изгледи
schedule 16.11.2023

Беззнаково деление в насм
Опитвам се да отстраня грешки в малка асемблерна програма, в която питам за дивидент и делител и трябва да изведа частното и остатъка. По някаква причина обаче частното и остатъкът ми не се извеждат на екрана. Ето моят код: segment .data prompt...
1401 изгледи
schedule 10.12.2022

Индексиран плаващ масив в NASM x86 16-bit
Опитвам се да попълня масив от реални числа с двойна точност (64 бита), като използвам инструкциите за цикъл в NASM x86 16 бита, но получавам грешката invalid effective address . Операционната система е Windows XP 32 бита, но всъщност програмата...
823 изгледи
schedule 12.11.2023

Въведете неправилно събрание x86 NASM
Гледам това от часове и не мога да разбера защо след второто ми въвеждане моят низ, съхранен от първото въвеждане, се променя. Когато стартирам проба, стартирайте така: Моля, въведете id: 12 Моля, въведете името: jay Когато стартирам тази...
628 изгледи
schedule 04.01.2024

#define алтернатива в Assembly?
Има ли Assembly (или поне NASM) еквивалент на C/C++ #define? Искам да направя нещо подобно: #define i [ebp - 4]
705 изгледи
schedule 02.12.2022

NASM - Разширяващ етикет с битов флаг
Трябва да задам най-високия бит на някакъв адрес/отместване на етикет. Опитах: test.nasm: BITS 32 dw mylabel | 0x8000 mylabel: dd 0 Но когато се опитвам да сглобя това, получавам: nasm -f bin test.nasm test.nasm:3: error: `|'...
545 изгледи
schedule 16.01.2024

Разбиране на NASM Macro
Намерих този макрос в изходен файл на асемблиране и просто не мога да разбера как работи. Така че първо се запознах с тази функция ( hevc_deblock.h ): cglobal hevc_v_loop_filter_chroma_8, 3, 5, 7, pix, stride, tc, pix0, r3stride sub...
1978 изгледи
schedule 03.02.2024

x86 Асемблиране, получаване на грешка при сегментиране
section .data msg: db "hello!", 10, 0 ;my message section .text extern printf ;C printf function global main main: push ebp mov ebp, esp call print_string mov esp, ebp pop ebp ret ;end of program print_string: pusha...
3952 изгледи
schedule 26.11.2023

Върната стойност на C функция към ASM
Опитвам се да извикам функция от ASM. Знам как да го извикам, но имам проблем да намеря как да получа върнатата стойност на тази функция. Следва пример: C код: int dummy() { return 5; } (N)ASM код: dummyFunction:...
25888 изгледи
schedule 30.03.2024

Как да извикате правилно 64-битов Windows API в сглобяване
С помощта на NASM и Mingw-w64 се опитвам да стартирам следната програма, която трябва да отпечата съобщение на екрана с помощта на Windows API. Работи, но нищо не се показва на конзолата и води до невалиден достъп до място в паметта (код на грешка...
2156 изгледи
schedule 24.04.2024

Получаване на 32-битови регистри от 64-битов nasm код
Уча 64-битов nasm, сглобявам .nasm файла, който съдържа САМО 64-битови регистри, като правя следното nasm -f elf64 HelloWorld.nasm -o HelloWorld.o и го свържете, като направите следното ld HelloWorld.o -o HelloWorld програмата работи...
1006 изгледи
schedule 03.05.2024

@n.m. Благодаря за предложението!
97 изгледи
schedule 16.11.2023