uP:Odwracanie
Z Wiki Rafał (ert16) Trójniak
Spis treści |
Temat zadania
Odwracanie ciągu znaków podanego jako arg funkcji. + funkcja testująca w c
Kody źródłowe
asm.s
.type odwroc, @function #void odwroc(char * str); .global odwroc odwroc: pushl %ebp mov %esp, %ebp # przenoszenie stringa do %esi movl 8(%ebp), %ecx movl %ecx, %esi # Szukamy końca nextcharLen: lodsb test $0xff , %al jnz nextcharLen mov %esi, %edx dec %edx # Traz jesteśmy na null dec %edx # teraz jesteśmy na ostatnim znaku nextChar: #Pobieramy mov (%edx), %al mov (%ecx), %ah #Składamy spowrotem mov %ah, (%edx) mov %al, (%ecx) #Zmieniamy wskaźniki inc %ecx dec %edx #Porównujemy i kończymy pętle cmp %ecx, %edx jg nextChar #pętla odwracania finish : mov %ebp, %esp popl %ebp ret
main.c
#include <stdlib.h> void odwroc(char * str); int main() { const char *cstr ="ala ma kota"; char *str = malloc(strlen(cstr)+1); strcpy(str,cstr); printf("before=%s\n",str); odwroc(str); printf("after=%s\n",str); return 0; }
Odpowiedź programu
before=ala ma kota after=atok am ala