Linux 下的C和Intel 汇编语言混用 4年前

test.s (转载)

--------------------------------------------------------------------

; test.s

section .data          

                 ; 数据段声明
        msg db "Hello, world!", 0xA     ; 要输出的字符串
        len equ $ - msg                 ; 字串长度
       
section .text            ; 代码段声明

global test

test:                    ; 在屏幕上显示一个字符串
        mov edx, len     ; 参数三:字符串长度
        mov ecx, msg     ; 参数二:要显示的字符串
        mov ebx, 1       ; 参数一:文件描述符(stdout)
        mov eax, 4       ; 系统调用号(sys_write)
        int 0x80         ; 调用内核功能
                         ; 退出程序
        mov ebx, 0       ; 参数一:退出代码
        mov eax, 1       ; 系统调用号(sys_exit)
        int 0x80         ; 调用内核功能

----------------------------------------------------------------------

test.h

--------------------------------------------------------------------

#pragma once
void test();

--------------------------------------------------------------------

main.c

--------------------------------------------------------------------

int main(int argc, char* argv[])
{

    test();

    return 0;

}

--------------------------------------------------------------------

编译:

1.首先要安装NASM包,以支持Intel汇编的编译

2. nasm -f elf64 test.s (64位系统, 生成test.o文件)

3. gcc -o test main.c test.o  (编译成可执行程序test)

image
蕾拉chan
描线一笔接一笔,白色的素描本上渐渐萌生黑意。即便如此,还无法照准记忆中的风景。
1
发布数
2
关注者
670
累计阅读

热门教程文档

MySQL
34小节
C#
57小节
QT
33小节
Gin
17小节
C++
73小节
广告