Created
September 5, 2014 23:55
-
-
Save bunyk/c21f0abfc692138e6a33 to your computer and use it in GitHub Desktop.
GAS шукає максимум
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.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