标签 nasm 下的文章

  • 📂CentOS7 安装 ffmpeg4.1+libx264教程

    CentOS7 安装 ffmpeg4.1+libx264一、安装gcc 1.查看服务器是否安装gcc 执行gcc --version 出现如上结果需要安装 执行 :yum install gcc 装好后 二、安装yasm 1.下载yasm wget http://www.tortall.net/projects/yasm/releases/yasm...

  • 📂Linux下的16位链接教程

    我在Linux下使用NASM汇编器 当我使用命令“ nasm -f elf -l hello.lst hello.asm”时 它工作正常 但是当与gcc链接时“ gcc -o hello hello.o” 它产生一个错误:hello.asm :(.text 0x4):截断以适合:R_386_16针对.data collect2:ld返回1退出状态我了解到这是gcc和16位的问题有什...

  • 📂Linux汇编; bss节的内存初始化为0?教程

    在测试中,我在程序的bss部分中运行的内存始终在初始化之前为零.这是偶然的,还是系统在将这些内存页面交给我之前“清理”了这些内存页面?我在Ubuntu上使用nasm汇编程序(如果这可能有所作为).解决方法:应用程序的可执行文件(ELF)具有BSS节的大小信息,启动时,内核会为BSS节分配一个内存块,并将其清除为0.这是由ABI(应用程序二进制接口)定义的,因此您不需要担心不同的机器上会有不同.

  • 📂linux nasm命令行参数为整数教程

    数天来,我一直在努力寻找答案,最后在这里发布以寻求帮助.这项练习对我来说纯粹是学术性的,但是到了某种程度,我只需要了解为什么这行不通或我做错了什么.section .text global _start _start: pop eax pop ebx pop ecx _exit: mov eax, 1 mov ebx, 0 int ...

  • 📂linux nasm将AL中的值上移到AX教程

    我正在研究一种通过将整数反复除以10并收集余数然后再打印来打印多个数字整数的方法.这是有问题的代码段:划分: ; initial division mov ax, 111 ; number we want to print mov ch, 10 ; we divide by ten to siphon digits div ch ; di...

  • 📂如何在Linux上通过系统调用等待按键中断?教程

    当用户在程序中按nasm编写的特殊按键(如F1-12)时,我希望收到中断.我只需要在主要功能开始时等待功能击键.我知道使用BIOS的int 16h(返回扫描代码)是可能的.我如何在Linux下执行此操作?解决方法:所需的代码相当复杂.我最终想出了如何使用原始ioctl在C中检查F1,进行读取和写入的方法.如果您熟悉汇编和Linux系统调用,则将nasm的翻译应该很简单.这并不是您想要的,因为...

  • 📂linux-用x87 float调用printf教程

    我在x86 asm中有一个简单的程序,它使z = x / y.关键是,除法时应正确编写代码,但不打印任何内容.没有输出.我不知道出什么问题了,因为当程序不使用eax,ebx等时,我无法调试.global main extern printf section .text main: finit fild dword[x] fild dword[y] ...

  • 📂linux-使用gdb和nasm缺少调试信息教程

    我有一个带有以下makefile的简单汇编程序:all : calc calc : calc.o gcc -m32 -g -o calc calc.o calc.o : calc.s nasm -f elf -g -F stabs calc.s 我尝试使用gdb对其进行调试,但始终显示:Single stepping until exit from function as...

  • 📂linux-位置独立代码中的Access .data部分教程

    我正在与NASM建立共享库.在该库中的某些函数中,我需要在C中称为静态变量的东西.基本上,我认为它在.data节中有一些空间: SECTION .data last_tok: dq 0 ; Define a QWORD 当我尝试在函数中访问last_tok时,就会出现问题.我读了NASM Manual: 8.2 Writing Linux/ELF Shared Librar...

  • 📂linux-Cygwin:兼容性问题教程

    您好StackOverFlowers!我对整个linux事物非常陌生,我正在使用Cygwin尝试执行以下操作.将测试文件通过解析器…./parser<测试test.asm //工作并生成ASM代码 按照本教程中的描述执行此行,我不确定它到底是做什么的… nasm -f elf test.asm //工作 最后一行创建可执行文件(如果我正确理解了本教程) ld -s -o测试test.o...

  • 📂linux – 如何打印单个ASCII字符?教程

    在DOS程序集中我们可以这样做:mov dl, 41h mov ah, 02h int 21h 但是Linux nasm x86汇编怎么样?解决方法:section .data msg db 'H' len equ $- msg section .text global _start _start: mov edx,len mov...

  • 📂linux – 为什么printf会覆盖ECX寄存器?教程

    我知道printf返回在EAX中打印的字符数.为什么printf将寄存器ECX更改为0?我的代码片段:push eax push intFormat call printf add esp,8 我在64位Linux发行版上运行我的代码.解决方法:如你所知,EAX将具有printf的返回值,但遵循CDECL调用约定(包括C库)的函数也可以破坏ECX和EDX.它们可能不会改变,但它们可...

  • 📂使用x86 32位Linux sys_write(NASM)打印整数教程

    我是这个论坛的新手. 我对高级语言有一点经验(真的很少).差不多一个月前,我认为在Linux上选择nasm(IA-32)之后,看看汇编是如何工作的,这是一个好主意我开始从一个教程中学习.现在,在结束之后,我尝试编写一个简单的程序,让计算机打印100个数字的列表(1 2 4 8 16 …),但我甚至无法做到正确. 我得到这个输出:1PPPPPPPPPPPPPPPPPPPPPPPPPPPPP...

  • 📂x86 ASM Linux – 使用.bss部分教程

    我希望这些问题相当简单:( NASM编译器,Linux,x86英特尔语法)第1部分:我试图弄清楚如何使用Assembly程序的.bss部分来找到一种方法来存储值,例如操作( – * /)中的值到声明的变量.例如:section .bss variable: resb 50 ;Imaginary buffer s...

  • 📂linux – Assembly中系统调用的返回值是什么?教程

    当我尝试研究内核的系统调用的返回值时,我找到了描述它们的表,以及我需要将它放在不同的寄存器中以使它们工作.但是,我没有找到任何文档说明我从系统调用获得的返回值是什么.我只是在不同的地方找到我收到的东西将在EAX寄存器中.TutorialsPoint:The result is usually returned in the EAX register.汇编语言循序渐进:Jeff Duntema...

  • 📂linux – 如何在程序集NASM中打印数字?教程

    假设我在寄存器中有一个整数,我该如何打印?你能展示一个简单的示例代码吗?我已经知道如何打印一个字符串,如“你好,世界”.我正在Linux上开发.解决方法:如果您已经在Linux上,则无需自行进行转换.只需使用printf:; ; assemble and link with: ; nasm -f elf printf-test.asm && gcc -m32 -o print...

  • 📂linux下的汇编环境搭建(nasm)教程

    原文链接:https://www.cnblogs.com/san-fu-su/archive/2014/11/11/4089041.html第一步:先判断系统是否已经安装了nasm--------------->打开终端,执行whereis nasm ;如果显示nasm: /usr/bin/nasm ,则已经安装;如果只显示nasm: ,则未安装。第二布:去官网下载最新版本的源码编译h...

  • 📂linux – NASM参数长度教程

    我正在编写一个简单的程序来显示用户提供的名称.结果是我应该能够输入命令并获得预期的结果.命令./hello John 结果Hello, John. 然而,当程序开始显示名称时,它却没有.我认为它与计算参数的长度有关.请你们看看我的代码并告诉我你的想法?; hello.asm ; ; Assemble: nasm -f elf hello.asm ; Link: ld -o hello...

  • 📂linux – 这个程序集如何不崩溃?教程

    我这里有这个linux nasm代码,不会崩溃.使用printString结尾的ret 80指令不应该这个程序崩溃?bits 32 section .data hello: db 'Hello Linux assembly!!!!!!!!!!!!!!!!!!!',10,0 helloLen: equ $-hello anotherString...

  • 📂linux – 如何使用NASM找到字符串的长度?教程

    我正在尝试使用从命令行参数获取输入的NASM来创建程序.由于没有提供字符串长度,我正在尝试创建一个计算我自己的函数.这是我的尝试,它获取指向ebx寄存器中的字符串的指针,并返回ecx中字符串的长度:len: push ebx mov ecx,0 dec ebx count: inc ecx inc ebx cmp...

  • 📂在linux中混合汇编和C的编程教程

    只有两个文件,main.c和kernel.asm,我尝试使用NASM和GCC制作一个程序.内容如下:main.c中#include <stdio.h> void Print_String() { printf("Hello World!\n"); } kernle.asmextern Print_String [section .text] glo...

  • 📂linux – int 0x80是否覆盖寄存器值?教程

    参见英文答案 > What happens if you use the 32-bit int 0x80 Linux ABI in 64-bit code? 1个 我编写了一个程序,它应该像for循环一样,打印一串文本一定次数.这是代码:global _start section .data msg db "Hello World!",10 ...

  • 📂linux – 如何在我的64位机器上使用gcc编译32位.o文件?教程

    试图学习NASM大会.我有一台64位机器,带有Ubuntu.最近我决定测试推送和弹出指令.我这样做:nasm -felf64 Test.asm 显然,在64位模式下不支持它们.好吧,没问题,我只需要做到32:nasm -felf Test.asm 现在,一如既往gcc Test.o 但它现在告诉我i386 architecture of input file 'Test.o' is inco...

  • 📂nasm汇编linux计时器或睡眠教程

    我正试图找到一种方法让我的代码等待两秒钟才能继续.我在保护模式下使用nasm for Linux,所以我只能使用int 80h.我发现了一个名为“alarm”的系统调用(27),另一个称为“暂停”(29).但是,当我尝试使用它们时,程序会等待并完成,而不是继续执行.我还发现了另一个系统调用,sigaction,它改变了信号的行为(所以我认为它可以用来使程序忽略由警报而不是退出产生的信号)但我...

  • 📂linux – 如何在nasm中包含调试信息?教程

    我有这个源代码:; hello.asm a first program for nasm for Linux, Intel, gcc ; ; assemble: nasm -f elf -l hello.lst hello.asm ; link: gcc -o hello hello.o ; run: hello ; output is: Hello...

  • 📂linux – 显示寄存器的内容教程

    嗨,我需要帮助显示寄存器的内容.我的代码在下面.我已经能够显示数据寄存器的值,但我想显示标志状态.例如1或0.如果还显示其他寄存器的内容,如esi,ebp,将会很有帮助.我的代码不打印标志的状态..我错过了什么section .text global _start ;must be declared for using gcc _start : ...

  • 📂linux – 为什么我在调用sys_pause系统调用时收到SIGSEGV?教程

    我正在尝试创建一个x86_64汇编程序,只要发送SIGTERM信号,就会显示“SIGTERM received”.我的应用程序直接使用Linux系统调用:%define sys_write 0x01 %define sys_rt_sigaction 0x0d %define sys_pause 0x22 %define sys_exit 0x3c ...

  • 📂linux – 32位模式下的NASM x86_64汇编:为什么该指令会生成RIP相对寻址代码?教程

    [bits 32] global _start section .data str_hello db "HelloWorld", 0xa str_hello_length db $-str_hello section .text _start: mov ebx, 1 ...

  • 📂linux – 汇编!我不能让循环退出?教程

    我无法弄清楚为什么我的程序进入无限循环时我希望它在ecx的值等于0后退出?请帮忙?section .data ;get external functions extern printf global main main: ;set up stack frame push rbp mov rbp, rsp ;if(x<y) ;print x is less ;else ;print ...

  • 📂将Linux x86-64程序集hello world程序与ld链接失败教程

    我最近在linux上玩x86 64位汇编,在编译了一个看似简单的程序之后,我一直在摸不着头脑:P虽然我编译和链接它不会抛出任何错误并产生一个Linux ELF 当我尝试运行它时,我得到:.:[ [email protected] asm ]:. #(0)> ./hello bash: ./hello: No such file or directory 我假设它生成一个无效...