zoukankan      html  css  js  c++  java
  • 汇编基本语法

    汇编程序由三部分组成:

      数据段 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

  • 相关阅读:
    linux signal之初学篇
    Eclipse 每次打开workspace目录记录位置?
    [Clojure] A Room-Escape game, playing with telnet and pure-text commands
    孔雀翎----《Programming C# 》中国版 文章4版
    js一些编写的函数
    KVM,QEMU核心分析
    apche commons项目简介
    java基础—网络编程———建立聊天的形式
    学习算法
    css+html+js实现多级下拉和弹出菜单
  • 原文地址:https://www.cnblogs.com/tf-Y/p/4917804.html
Copyright © 2011-2022 走看看