循环堆栈,气体汇编代码(AT& T格式)

时间:2017-08-24 07:17:57

标签: c assembly x86 gas

这是使用GAS汇编程序编写的问题陈述。

  

编写一个ALP程序,从给定的数字数组中找到最大数字(在内存中连续存储)并显示数字。

我写了这段代码:

.data

.text
.globl _start
_start:
  movl $5, -20(%ebp)
  movl $0, -16(%ebp)
  movl $1, -12(%ebp)
  movl $3, -8(%ebp)
  movl $4, -4(%ebp)
  movl $0, %ecx    # max value
  movl $5, %eax    # iterator
  loop:
    subl -1, %eax
    cmp $0, %eax
    # loop code here


terminate:
  movl $4, %eax
  movl $1, %ebx
  movl $1, %edx
  int $0x80
  movl $1, %eax
  int $0x80
  ret

我想用C语言编写的内容是:

#include<stdio.h>
int main() {
  int arr[5];
  arr[0] = 5;
  arr[1] = 0;
  arr[2] = 1;
  arr[3] = 3;
  arr[4] = 4;
  int max = 0;
  for(int i = 0;i < 5;i++)
    if(max < arr[i])
      max = arr[i];
  printf("%d\n", max);
  return 0;
}

如何在GAS汇编程序中实现循环?我是新手,对此知之甚少。请帮忙。

0 个答案:

没有答案