Call us +96895672917 | +917736882141

Project Description

  1. Implement the strcmp() function. The strcmp() function compares the two strings s1and s2. It returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2. You should write a program that asks for two strings and print out the result of the comparison.

 

  1. Implement a function strreverse() that takes two strings s1 and s2. It should write the reverse of s1 into s2. For example, if s1 is “abc”, then after the function is invoked, s2 has the value of “cba”. Your program should ask for a string and print out its reverse

 

 

 

 

Submission Instructions:

Please submit via email the following:

–          The assembly source code

–          The outputs of the programs

Note on testing of the programs:

As part of testing, you should make sure that your program works for all the cases. Please test your code as thorough as possible.

Solution file consists of 3 files as below 

Driver.c, first.asm and output.txt

Driver.c:

#include <stdio.h>

int strcmp2(const char *s1, const char *s2); // we use strcmp2, because libc already have function with name strcmp

void strreverse(const char *s1, char *s2);

int main()

{

char buffer[40];

printf(“strcmp(“abc”, “abc”) %dn”, strcmp2(“abc”, “abc”));

printf(“strcmp(“acc”, “abc”) %dn”, strcmp2(“acc”, “abc”));

printf(“strcmp(“abb”, “abc”) %dn”, strcmp2(“abb”, “abc”));

strreverse(“hello”, buffer);

printf(“strreverse for “hello” %sn”, buffer);

strreverse(“abc”, buffer);

printf(“strreverse for “abc” %sn”, buffer);

return 0;

}

 

First.asm

 

;

; file: skel.asm

; This file is a skeleton that can be used to start assembly programs.

%include “asm_io.inc”

segment .data

;

; initialized data is put in the data segment here

;

segment .bss

;

; uninitialized data is put in the bss segment

;

segment .text

global _strcmp2 ; this name only for testing, because libc already have function with name strcmp

global _strcmp ; export strcmp function

global _strreverse ; export strreverse function

_strcmp2:

_strcmp:

push edx ; save edx

push ecx ; save ecx

mov eax, [esp + 12] ; load s1 to eax

mov edx, [esp + 16] ; load s2 to edx

strcmp_1:

cmp byte [eax], 0 ; check on zero if (*s1 == ”)

je strcmp_2 ; if zero go out from loop

cmp byte [edx], 0 ; check on zero if (*s2 == ”)

je strcmp_2 ; if zero go out from loop

mov cl, [edx]

cmp [eax], cl ; if (*s1 != *s2)

jne strcmp_2

inc eax ; ++s1

inc edx ; ++s2

jmp strcmp_1 ; go to next iteration

strcmp_2:

mov cl, [eax] ; cl = *s1

sub cl, [edx] ; cl -= *s2

movsx eax, cl ; extend cl to eax

pop ecx ; restore ecx

pop edx ; restore edx

ret

_strreverse:

push eax ; save eax

push edx ; save edx

push ecx ; save ecx

push ebx ; save ebx

mov eax, [esp + 20] ; load s1 to eax

mov edx, eax ; edx = eax

strreverse_1:

cmp byte [edx], 0 ; if (*s1 == ”)

je strreverse_2 ; if zero go out from loop

inc edx ; ++s1

jmp strreverse_1 ; go to next iteration

strreverse_2:

dec edx ; –s1

mov ecx, [esp + 24] ; load s2 to ecx

strreverse_3:

cmp eax, edx ; if (eax > s1), eax – initial pointer to s1

ja strreverse_4 ; if greater go out from loop

mov bl, [edx]

mov [ecx], bl ; *s2 = *s1

dec edx ; –s1

inc ecx ; ++s2

jmp strreverse_3 ; go to next iteration

strreverse_4:

mov byte [ecx], 0

pop ebx ; restore ebx

pop ecx ; restore ecx

pop edx ; restore edx

pop eax ; restore eax

ret

Output.txt:

strcmp(“abc”, “abc”) 0

strcmp(“acc”, “abc”) 1

strcmp(“abb”, “abc”) -1

strreverse for “hello” olleh

strreverse for “abc” cba

Project Details

  • Date April 2, 2015
  • Tags Assembly language

Leave a reply

sweet bonanza oynagates of olympus demoAviator oynasugar rush demoCasinoslotbig bass bonanza oynabig bass bonanza oynabayan escortTürkiye Escort Bayanbuca escortMaksibet Giriş TwitterPokerklas TwitterMelbet TwitterMercure Casino Giriş Twitterbornova escortfethiye escortmarsbahisEscortSaatlik escortManisa escortGümüşhane escortDeneme Bonusu Veren Sitelercasibomcasibom girişŞişli escortizmir escortDenizli escortMalatya Escortşanlıurfa escortHacklinkBeşiktaş escortAtaşehir escortBeylikdüzü escortkadıköy escortcialisViagraBahis siteleriEsenyurt escortmasözmasözantalya escortbetturkeydeneme bonusu veren sitelercasibombets10jojobet girişpusulabetbetmatik twitterbaywinGrandpashabetcasibomholiganbetbettilt girişcasibom girişslot sitelerisekabetbetmatikbetkanyonsekabetholiganbetbetmatikcasibomcasibomcasibomcasibomcasibomcasibomcasibomcasibomcasibomhitbetsahabetsahabetbettiltvdcasinoilbetcratosroyalbettümbetbaywindinamobetelexbetsekabetbetkanyonbetmatikbetinetumbetcasibomslot sitelericanlı casino sitelericasino sitelerislot siteleribahis siteleribaywinİnterbahiscasibomcasibomcasibombelugabahismadridbetartemisbetcasibomcasibomgrandpashabetcasibombetsatbets10holiganbetbaywinMaltcasinohacklinkmatadorbetbeylikdüzü escortBetofficemarsbahis
Wordpress themeseotakipçi satın alyol kapanıevden eve nakliyatseowordpress en iyi seo eklentilerikartal antika eşya alanlarwoocommerce baselpgcdpmsaantika alanlarantika alanlarAccident Lawyerantika eşya alanlarAntika alan yerlergaziantep evden eve nakliyatsakarya evden eve nakliyatgaziantep evden eve nakliyatgaziantep evden eve nakliyatgaziantep evden eve nakliyatığdır evden eve nakliyateskişehir televizyon tamiriderince evden eve nakliyateskişehir protez saçEtimesgut evden eve nakliyatEtimesgut evden eve nakliyatankara gülüş tasarımımaltepe hayır lokmasıtuzla evden eve nakliyatvalizeskişehir web sitesieskişehir web sitesigaziantep evden eve taşımacılıkgaziantep evden eve nakliyatgaziantep evden eve nakliyatçekici ankaragaziantep evden eve taşımacılıkgaziantep evden eve nakliyatantika alanlarizmir evden eve nakliyatikinci el kitap alanlarçankaya evden eve nakliyatankara evden eve nakliyatkitap alanlareskişehir emlakEtimesgut evden eve nakliyatEtimesgut evden eve nakliyatEtimesgut evden eve nakliyathayır lokmasıankara evden eve nakliyatkartal evden eve nakliyattuzla evden eve nakliyatetimesgut evden eve nakliyatankara ofis taşımacılıgıoran evden eve nakliyatMedyumMedyumlarAnkara implant fiyatlarıkadıköy evden eve nakliyateskişehir uydu servisiçankırı evden eve nakliyatmamak evden eve nakliyatgaziantep nakliyatantika alanlareryaman evden eve nakliyatEskişehir uyduistanbul saç ekimidiş eti ağrısıAntalya Çitseo çalışmasıankara implant fiyatlarıankara gülüş tasarımımaldives online casinopoodleporselen kaplama dislerdis beyazlatmaniğde evden eve nakliyatAntika alan yerlerpoodlepomeraniandextools trendingdextools trending botfront run botdextools trending costdextools trending servicepancakeswap botNewsHair Transplantankara eşya depolamadextools botdextools trending algorithmcoinmarketcap trending botpinksale trending botodunpazarı emlaksancaktepe evden eve nakliyatköpek ilanlarıMedyumgebze evden eve nakliyatankara diş estetiğiboerboel yavrupomeranian ilanlarımarsbahisportobetface liftgoogle ads