Свързани публикации 'nasm'
Обучаване на x86 с NASM — Работа със знаци, списъци и низове
В тази статия ще създадем програма, която работи със знаци, низове и списъци, използвайки секцията .data .
Деклариране на символи в NASM x86
В x86 можем да декларираме данни с различни размери в секцията .data . За да декларираме символ, трябва да вземем предвид какъв е размерът на символа от текста. За ASCII знаци считаме, че един знак е с размер 8 бита. Ако искаме да декларираме ASCII символ, ще използваме DB като формат на данните. Ако искаме да използваме по-обширен..
Свързани въпроси 'nasm'
Извикване на sprintf в x64 асемблиране
Изглежда, че не мога да извикам sprintf() правилно в асемблирането.
Когато се опитам да dprintf() моя буфер, който сега трябва да бъде форматиран, всичко, което получавам, е:
(null)
и грешка в сегментирането. Когато изпълнявам lldb...
139 изгледи
schedule
15.09.2022
Как да преместите стойност от .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
schedule
16.11.2023