Psst.. new poll here.
[email protected] webmail now available. Want one? Go here.
Cannot use outlook/hotmail/live here to register as they blocking our mail servers. #microsoftdeez
Obey the Epel!
Paste
Pasted as AVR assembler by lu7x00 ( 4 years ago )
; Program zapisuje na stosie 10 wartości 0,1,2...10
; Następnie wypisuje ostatnią wartość na ekran
; Program w fazie roboczej. Domyślnie ma wypisywać wszystkie wartości z stosu na ekran
section .text ; sekcja na kod
global _start ; wymagane rozpoczęcie etykietą globalną
_start: ; początek kodu w etykecie _start
push rbp ; umieszczenie rejestru rbp na początku stosu
mov rbp, rsp ; zapisanie do rbp prawdziwego wzkaźnika stosu
mov rbx, 10 ; maksymalna wartość zmiennej, a przy okazji ich ilość
xor rsi, rsi ; zerowanie rejestru
cmp rsi, rbx
jb loop
loop:
cmp rsi, rbx ; porównywanie dwóch wartości i zapisywanie wyniku porównanania do flag
jae show ; jeżeli [rsi] >= [rbx] czyli jeżeli ilość liczb i ich wartość osiąga maksimum lub więcej przerwij wykonywanie pętli (loop) i idź do kodu zaczynającego się od etykiety show
push rsi ; zapis liczbę na stosie
inc rsi ; zwiększ liczbę o jeden
jb loop ; jeżeli [rsi] <= [rbx] wykonaj pętle jeszcze raz
show:
mov rax, 1 ; wywołanie fukncji zapisu do pliku
mov rdi, 1 ; deksryptor ustawiony na terminal/ekran
pop rbp ; zdjęcie wartości z wierzchołka stos i zapisanie jej do rejestru rbp
mov rsi, rbp ; co ma zostać wyświetlone
mov rdx, 1 ; jaką ma długość w bajtach
syscall ; wywołanie systemowe
mov rax, 60 ; numer funkcji systemowej - sys_exit
syscall ; wywołanie tej funkcji
Revise this Paste