• 汇编基本语法


    汇编程序由三部分组成:

      数据段 bss段 文字

      数据段:

        用于声明初始化数据或常量的数据段,运行时,此数据不改变。

        声明数据段的语法:

        section  .data

      bss段:

        bss段声明变量。

        声明语法:

        section .bss

      文本段:

        保存实际代码。

        本段开头必须的声明 global_start:告诉内核程序开始执行代码。

        声明文本段语法:

        section .text

          global _start

        _start:

    注释:

      注释用分号: ; 

    汇编语言语句:

      三种类型:

        可执行指令:告诉处理器怎么做

        汇编指令:告诉汇编有关汇编过程的各个方面

        宏:文本替换

    汇编语言语法:

      [lable] mnemonic [operands] [;comment]

     

    汇编语言输出 hello world :

      输入内容:

      

      vim hello.asm      ;创建一个hello.asm文件

      nasm -f elf hello.asm  ;对程序进行汇编,形成hello.o文件

      ld -m elf_i386 -s -o hello hello.o  ;链接并创建一个可执行的hello

      ./hello          ;执行程序

      hello.asm 的内容:

      

    section .text
        global _start
    _start:
        mov edx,len
        mov ecx,msg
        mov ebx,1
        mov eax,4
        int 0x80
    
        mov eax,1
        int 0x80
    
    section .data
        msg db 'hello,world', 0xa
        len equ $ - msg
    section	.text    ;声明此处为 文本段
        global _start   ;此部分必须声明,用于告诉内核程序开始执行
    _start:	            ;告诉链接器此处为程序入口
        mov	edx,len     ;信息长度
        mov	ecx,msg     ;写的信息
        mov	ebx,1       ;文件描述
        mov	eax,4       ;system call number (sys_write)
        int	0x80        ;call kernel
    	
        mov	eax,1       ;system call number (sys_exit)
        int	0x80        ;call kernel
    
    section	.data    ;声明此处为 数据段
    msg db 'Hello, world!', 0xa  ;信息 
    len equ $ - msg              ;信息长度

    本节参考:http://www.yiibai.com/html/assembly/2013/0812118.html

  • 相关阅读:
    项目中openlayer中使用,完整解决方案(数据库矢量数据,动态更新,分层,编辑)
    openlayer
    关于splitViewController自己的总结....
    GIS底层开发总结
    判断联网 phone
    nsdate 前一天 后一天
    ObjectiveC 字符处理函数 全 substring indexof
    oracle
    Windows Xp上跑IIS5.1x 用户访问过多出错
    Jquery中替换节点的方法replaceWith()和replaceAll()
  • 原文地址:https://www.cnblogs.com/tf-Y/p/4917804.html
Copyright © 2020-2023  润新知