Welcome, guest! Login / Register - Why register?
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

Your Name: Code Language: