汇编

2016-10-31  本文已影响19人  xiaoyanhan
Paste_Image.png
AT&T

Demo:求最大值代码

.section .data #全局变量位置
items:
.long 4,5,6,8,2,6,0
.section .text #代码位置
.globl _start #像main函数一样特殊,链接器在链接时会查找目标文件中的_start符号代表的地址,把它设置为整
#个程序的入口地址,所以每个汇编程序都要提供一个_start符号并且用.globl声明。如果一个符号没有用.globl指
#示声明,就表示这个符号不会被链接器找到。 (没有globl 声明,按照.text代码顺序执行)
_start:
movl $0,%ecx
movl items(,%ecx,4),%ebx
movl %ebx,%eax
start_loop:
cmpl $0,%eax
je end     #相等跳转
incl %ecx
movl items(,%ecx,4),%eax $ #内存寻址通用格式:ADDRESS_OR_OFFSET(%BASE_OR_OFFSET,%INDEX,MULTIPLIER) 
#FINAL ADDRESS = ADDRESS_OR_OFFSET + BASE_OR_OFFSET + MULTIPLIER * INDEX 。有时有些项会被省略不写,则代表这些项为0
cmpl %ebx,%eax
jle start_loop  #eax<=ebx跳转
movl %eax,%ebx 
jmp start_loop
end:
movl $1,%eax
int $0x80$ #系统调用
上一篇下一篇

猜你喜欢

热点阅读