汇编基础一: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
    调试时输出汇编代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值