objdump的使用

 ;  hello.asm  a first program for nasm for Linux, Intel, gcc
;
; assemble: nasm -f elf hello.asm -o hello.o
; link:  gcc -o hello  hello.o
; run:         hello
; output is: Hello World

 SECTION .data  ; data section
msg: db "Hello World",10 ; the string to print, 10=cr
len: equ $-msg  ; "$" means "here"
    ; len is a value, not an address

 SECTION .text  ; code section
        global main  ; make label available to linker
main:    ; standard  gcc  entry point
 
 mov edx,len  ; arg3, length of string to print
 mov ecx,msg  ; arg2, pointer to string
 mov ebx,1  ; arg1, where to write, screen
 mov eax,4  ; write command to int 80 hex
 int 0x80  ; interrupt 80 hex, call kernel
 
 mov ebx,0  ; exit code, 0=normal
 mov eax,1  ; exit command to kernel
 int 0x80  ; interrupt 80 hex, call kernel

 

 

生成hello后使用如下命令可见: 

 

[root@localhost testc]# objdump -d  hello

hello:     file format elf32-i386


Disassembly of section .text:

08048080 <.text>:
 8048080: ba 0c 00 00 00        mov    $0xc,%edx
 8048085: b9 a4 90 04 08        mov    $0x80490a4,%ecx
 804808a: bb 01 00 00 00        mov    $0x1,%ebx
 804808f: b8 04 00 00 00        mov    $0x4,%eax
 8048094: cd 80                 int    $0x80
 8048096: bb 00 00 00 00        mov    $0x0,%ebx
 804809b: b8 01 00 00 00        mov    $0x1,%eax
 80480a0: cd 80                 int    $0x80
[root@localhost testc]#

阅读更多
上一篇操作系统学习笔记(13)--NASM的HelloWorld
下一篇操作系统学习笔记(14)--C和汇编相互调用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭