栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

汇编基础一:NASM环境配置

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

汇编基础一:NASM环境配置

环境搭建

安装GCC和NASM

## 安装64位GCC
yum install gcc
## 安装32位GCC库
yum install glibc-devel.i686 
yum install ibstdc++.i686
## 安装nasm
yum install nasm
测试

1、示例程序

section .text
global main
main:
 mov ebx,10
 mov eax,20
 add eax,ebx
 ret

2、编译链接

## -g -F stabs用于生成debug
## 64bit程序使用elf64和m64
nasm -f elf32 test.asm -g -F stabs -o test.o
gcc -m32 test.o -o test

3、执行

./test; echo $?
30

4、生成与GCC无关的汇编

section .text
global _start

_start:
 mov ebx,10
 mov eax,20
 add ebx,eax ; 系统调用的参数
 mov eax,1   ; 系统调用功能号
 int 0x80    ; linux系统调用
## -g -F stabs用于生成debug
## 64bit程序使用elf64和elf_x86_64
asm -f elf test.os.asm -g -F stabs -o test.o
ld -m elf_i386 test.o -o test

linux平台的系统调用是通过int 0x80来实现的,eax寄存器中为调用的功能号,ebx、ecx、edx、esi等等寄存器则依次为参数。
/usr/include/asm/unistd.h

GDB调试
  1. 简单示例
 gdb -tui ./test ##进入调试
 b _start        ##设置断点break
 r               ##执行run
 si              ##汇编级别单步执行stepi,函数进入
 ni              ##汇编级别单步执行nexti,函数不进入
 c               ##继续continue
  1. layout 命令
    作用:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:

layout src(显示源代码窗口)
layout asm(显示汇编窗口)
layout regs(显示源代码/汇编和寄存器窗口)
layout split(显示源代码和汇编窗口)
layout next(显示下一个layout)
layout prev(显示上一个layout)
Ctrl + L(刷新窗口)
Ctrl + x,1(单窗口模式,显示一个窗口)
Ctrl + x,2(双窗口模式,显示两个窗口)
Ctrl + x,a(退出layout)

  1. disassemble命令
    输出反编译的汇编代码

  2. set disassemble-next-line on
    调试时输出汇编代码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277850.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号