Skip to content

Instantly share code, notes, and snippets.

@bunyk
Created September 5, 2014 23:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bunyk/c21f0abfc692138e6a33 to your computer and use it in GitHub Desktop.
Save bunyk/c21f0abfc692138e6a33 to your computer and use it in GitHub Desktop.
GAS шукає максимум
.section .data
data_items: # Позначити місце де починаються дані міткою
# виділити пам’ять для списку 4-байтових чисел.
.long 3, 34, 32, 12, 89, 11, 0
.section .text
.global _start
_start:
# Нехай %edi показує індекс значення в масиві
# %eax містить елемент з масиву який ми розглядаємо
# %ebx містить поточний максимальний елемент
movl $0, %edi # в програмуванні рахуємо з нуля.
movl $0, %ebx # cпершу максимальний елемент буде нуль (бо меншого числа в нас не передбачається)
start_loop:
# Завантажуємо поточний елемент даних в %eax
movl data_items(,%edi,4), %eax
cmpl $0, %eax # порівнюємо %eax з нулем
je loop_exit # якщо дорівнює - йдемо в кінець циклу
incl %edi
movl data_items(,%edi,4), %eax
cmpl %ebx, %eax # порівняти значення
jle start_loop # стрибнути на початок циклу якщо поточне %eax не більше за максимальне %ebx
movl %eax, %ebx # зберегти нове максимальне
jmp start_loop # стрибнути на початок циклу
loop_exit:
movl $1, %eax # 1 - номер системного виклику exit. В %ebx - код виходу (максимальне число)
int $0x80 # виконати системний виклик з номером %eax
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment