%include "rw32.inc" section .bss string resd 50 ; zde ulož načtený řetězec section .text ; char* ObratRetez(char* string, int N); ObratRetez: enter 0,0 push eax ; záloha ragistru z main mov ecx, [ebp + 8] ; vyčtení arg N mov esi, [ebp + 12] ; vyčtení arg *string .doZasobniku: xor eax, eax mov al, [esi + ecx-1] push eax loop .doZasobniku mov ecx, [ebp + 8] ; N .zeZesobniku: pop eax mov [esi + ecx-1], al loop .zeZesobniku pop eax ; obnova původních hodnot main leave ret 8 ; uklizení argumentů ze zásobníku (2*4) main: xor eax, eax mov edi, string call ReadStringSilent ; načte řetezec, N je v ECX ; konvence pascal push string push eax ; N call ObratRetez ; Vypsání převráceného řetězce mov esi, string call WriteStringASCIIZNewLine ret