汇编

作者: xiaoyanhan | 来源:发表于2016-10-31 16:32 被阅读19次
    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$ #系统调用
    

    相关文章

      网友评论

          本文标题:汇编

          本文链接:https://www.haomeiwen.com/subject/tajputtx.html