x86汇编语言-01

来源:互联网 发布:爬虫软件干嘛用 编辑:程序博客网 时间:2024/06/05 23:55




第二部分:汇编语言程序设计基础
第五章:传送数据
1.定义数据元素(GNU汇编器)
<1>.数据段
.data 段声明
需要一个标签与一个命令
标签:代表内存的一个位置
命令:
.ascii 文本字符串
.asciz 以空字符结尾的文本字符串
.byte 字节值
.double 双精度浮点数
.float 单精度浮点数
.int 32位整数
.long 32为整数(和.int相同)
.octa 16字节整数
.quad 8字节整数
.short 16位整数
.single 单精度浮点数(和.float相同)
example:
output:
.ascii "Today is date 03 29 2015!"
pi:
.float 3.1415926
sizes
.long 100,200,300,400
定义静态符号:
.equ
把常量值设置为可以在文本段中使用的符号.
.equ LINUX_SYS_CALL,0x80  
movl $LINUX_SYS_CALL ,%eax  ====>movl 0x80,%eax

.rodata read_only

<2>.bss段
.comm
.lcomm  未初始化局部变量
格式:
.comm symbol, length
example:
.section .bss
.lcomm buffer,10000
注意两点:
>>.本地通用内存区域的程序之外的函数是不能访问它们的。不能在.global命令中使用它们
>>.在bss段中声明的数据,数据不包含在可执行程序中

2.传送数据元素
mov格式:
movx source,destination
GNU汇编器,为mov加了一个维度x
x:
l用于32位的长字值
w用于16位的字值
b用于8位的字节值
传送源与目的:
<------>内存
<------>通用
<----->控制寄存器
------->通用<----->调试
立即数 | <----->段
------->内存<----->段
<----->通用
example:
立即数传送到寄存器和内存.
movl















0 0
原创粉丝点击