nasm

    1热度

    1回答

    在文章Say Hello to Assembly - Part 3中,作者想要在堆栈上打印一个字符串(转换后的整数)。 r12包含字符串中的数字个数。 ;;; Find length of string mov rax, 1 mul r12 mov r12, 8 ; 8 times num digits to get len in bytes mul r12 mov r

    1热度

    1回答

    这两个例子,做同样的事情,他们只是打印"Hello, World!"消息: 例1: global _main extern _printf section .text _main: push message call _printf add esp, 4 ret message: db "Hello, Wor

    4热度

    3回答

    通过观察指令英特尔体积,我发现这一点: 1)88 /r MOV r/m8,r8 2)8A /r MOV r8,r/m8 当我写一个行这样在NASM,并与列表选项组装起来: mov al, bl 我得到这个在上市: 88D8 mov al, bl 所以很明显NASM选择了上述两者的第一条指令,但不是第二条指令选项二?如果是这样,NASM首先选择什么样的基础?

    0热度

    1回答

    这是代码的一部分,它乘以2和3:在上面的代码 section .text global _start _start: mov al,'3' sub al, '0' mov bl, '2' sub bl, '0' mul bl add al, '0' ;first question -> mov [res], al mov ecx,msg mov edx, len mov

    0热度

    1回答

    我下面的代码链接时收到以下错误,但我不明白为什么: ld -m elf_i386 shell.o -o test shell.o: In function `_start': shell.asm:(.text+0xbc): relocation truncated to fit: R_386_PC8 against `*UND*' 代码: SECTION .text global _s

    0热度

    1回答

    我使用GCC编译C代码,并在Windows上与NASM汇编一些x86代码。现在 ,GCC在默认情况下(我一直没能找到一个选项来改变这一点)前添加下划线_所有外部符号名(和预期的名称)。 我需要这个汇编代码来与Windows和Linux上的GCC一起工作,并希望尽可能避免黑客行为(和代码重复;我首先有单独的用于Windows/Linux的.s文件)。 我发现了(和使用)了NASM中的--prefix

    2热度

    1回答

    我正在用C编写一个AVX矩阵向量乘法函数,但是实现了我需要的指令并未在GCC中实现,所以我将它看作是学习某些x86程序集的绝好机会。我首先在MIPS程序集中编写了一个例程,然后尝试翻译它。我的代码不工作,我得到段错误,我不知道为什么。如果我在代码中删除了两个jnz,它可以工作,但我不明白他们为什么会产生任何影响。这种类型的跳转销毁是否注册了我正在使用的? 编辑:看起来main中的前两条指令并没有将

    3热度

    1回答

    我想抓住FreeBSD中的汇编程序。在handbook's code example for a UNIX filter中,寄存器esp会在每次系统调用后重置。有问题的代码是: %include 'system.inc' section .data hex db 'ABCDEF' buffer db 0, 0, ' ' section .text global _start _st

    -2热度

    1回答

    我使用DosBox在程序集中。 我在定义一个整数向量时遇到问题;我使用: vect: db ‐10, ‐8, ‐3 当汇编程序与NASM时,汇编程序告诉我'表达式语法错误'。 我不明白为什么,当我使用emu8086效果很好,甚至在网上阅读时,我看到一家承运商宣称这种方式。它会是什么?

    -1热度

    1回答

    在以下代码中,当我取消注释push指令时,我在运行可执行文件时收到错误Segmentation fault (core dumped)。我试图找出错误原因,但找不到原因。 section .data ; Message contains app purpose msg db 'This app calculates 2^3+5^2',0x0a mlen equ $-msg msg1 db