Article View: pl.comp.lang.asm
Article #1782Re: REQ: połączenie programu w C z funkcją w ASM
From: milion
Date: Tue, 15 Apr 2008 20:21
Date: Tue, 15 Apr 2008 20:21
61 lines
2377 bytes
2377 bytes
Bernard pisze:
[...]
w kodzie było mnóstwo błędów i (teraz) jestem tego świadom ;) a metoda z
odkładaniem literek na stos nie jest nejefektywniejsza.
Kod działa mi poprawnie na 32-bitowym kompie. A jak zrobić żeby działał
poprawnie na 64-bitowym?
działający kod:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
w c:
#include <stdio.h>
#include <string.h>
extern void start (char text [],int dlugosc);
int main()
{
char text[100];
scanf("%s", text);
start(text,strlen(text));
printf("%s\n", text);
return 0;
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
w asm:
section .text
global start
start: push ebp ;standardowy prolog procedury
mov ebp,esp
push esi
push ebx
mov ecx,[ebp+12] ;ilosc znakow
mov ebx,[ebp+8] ;adres początku tablicy
dec ecx
add ecx,ebx ;adres końca tablicy
;~~~~~~odwracanie z wykorzystaniem rej 8b~~~~~
zamien:
mov al,[ebx] ;komórka z przodu do al
mov ah,[ecx] ;komórka z tyłu do ah
mov [ebx], ah
mov [ecx], al
inc ebx ;adresy poczatku i konca schodza sie do środka
dec ecx
cmp ebx,ecx ; jezeli adr poczatku zrówna sie lub mialby przekroczyc
jb zamien ; adr konca, wtedy przerwij petle
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pop ebx ;zdejmij rejestry ze stosu
pop esi
pop ebp ;epilog programu - przywrocenie poprzedniej wartosci ebp
ret ;Powrot z procedury
end
Technical Details
Message-ID:
<fu32o4$ja6$1@news.ds.pg.gda.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.ds.pg.gda.pl!not-for-mailReferences:
<ftli4l$kuu$2@news.ds.pg.gda.pl> <4800ab47$0$31402$f69f905@mamut2.aster.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.ds.pg.gda.pl!not-for-mail From: milion <elvis921@02.pl> Newsgroups: pl.comp.lang.asm Subject: Re: REQ: połączenie programu w C z funkcją w ASM Date: Tue, 15 Apr 2008 22:21:22 +0200 Organization: SKOS PG Lines: 63 Message-ID: <fu32o4$ja6$1@news.ds.pg.gda.pl> References: <ftli4l$kuu$2@news.ds.pg.gda.pl> <4800ab47$0$31402$f69f905@mamut2.aster.pl> NNTP-Posting-Host: e-milion.ds.pg.gda.pl Mime-Version: 1.0 X-Trace: news.ds.pg.gda.pl 1208290884 19782 153.19.213.11 (15 Apr 2008 20:21:24 GMT) X-Complaints-To: abuse@ds.pg.gda.pl NNTP-Posting-Date: Tue, 15 Apr 2008 20:21:24 +0000 (UTC) User-Agent: Thunderbird 2.0.0.12 (X11/20080227) In-Reply-To: <4800ab47$0$31402$f69f905@mamut2.aster.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit