Results 1 to 5 of 5
Thread: Çàäà÷à íà àñåìáëåð
Hybrid View
-
3rd June 2020 23:04 #1Registered User
Join Date: Jun:2020
Location: Bulgaria
Posts: 3
Çàäà÷à íà àñåìáëåð
Çäðàâåéòå! Ìîæå ëè äà ìè ïîìîãíåòå ñ åäíà çàäà÷à íà àñåìáëåð, êîÿòî ìè å çà êóðñîâà? Èìàì ÷àñò îò çàäà÷àòà, íî íå çíàì êàê äà ÿ äîïèøà. Ùå ñúì Âè áëàãîäàðíà! Åòî óñëîâèåòî: Write a function void print_letter_of_my_strdup(char* s, unsigned short n), which prints "my_strdup[n] = L" where L is the letter or ASCII number of the letter at position n. For making a duplicate of the string use a function char *my_strdup(char *s) and for printing use function printf. Tip: Create a string to be duplicated in main() using char *s = (char *)malloc(5 * sizeof(char)); s[0] = 'a'; s[1] = 'b'; s[2] = 'c'; s[3] = 'd'; s[4] = 'e'; s[5] = 0;
À åòî è ðåøåíèåòî, äîêúäåòî ñòèãíàõ:
#include <iostream>
using namespace std;
char *my_strdup(char *s){
_asm{
push s
call strlen
add esp,4
push eax
call malloc;
pop ecx
mov ebx, s
for:
mov dl, [ebx + ecx]
mov [eax+ecx], dl
dec ecx
cmp ecx, 0
jge for
}
return s;
}
void print_letter_of_my_strdup(char* s, unsigned short n){
}
int main()
{
cout<<"Hello World";
char *s=(char *)malloc(5 *sizeof(char));
s[0]='a';
s[1]='b';
s[2]='c';
s[3]='d';
s[4]='e';
s[5]=0;
cout<<my_strdup(s)<<endl;
return 0;
}
Òàçè ÷àñò îò óñëîâèåòî " which prints "my_strdup[n] = L" where L is the letter or ASCII number of the letter at position n" íå ÿ ðàçáèðàì è çàòîâà íå çíàì êàê äà ÿ íàïðàâÿ. Ãëåäàõ îíëàéí óðîöèòå íà ïðåïîäàâàòåëÿ, íî òîé íå å ðåøàâàë çàäà÷è ñ òàêèâà ASCII ÷èñëà è çàòîâà íå çíàì êàê äà ÿ ðåøà öÿëàòà.
Ìíîãî ùå ñúì Âè áëàãîäàðíà, àêî ìè ïîìîãíåòå!!!
-
3rd June 2020 23:55 #2
Èäåÿòà íà óñëîâèåòî å ïðè èçâèêâàíå íà
print_letter_of_my_strdup(s, 0) äà îòïå÷àòâà "my_strdup[0] = a"
print_letter_of_my_strdup(s, 1) äà îòïå÷àòâà "my_strdup[1] = b"
...
print_letter_of_my_strdup(s, 3) äà îòïå÷àòâà "my_strdup[3] = d"
...
Ðàçáèðà ñå çàâèñè êàêúâ å ñòðèíãà s. Åäèí âèä ôóíêöèÿòà êëîíèðà ñòðèíãà è îòïå÷àòâà n-òèÿ ìó ñèìâîë (çàäàäåí êàòî ïàðàìåòúð).Last edited by anrieff; 3rd June 2020 at 23:55.
Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
"640K îught to be enough for anybody" - Bill Gates, 1981
Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel
-
4th June 2020 00:19 #3Registered User
Join Date: Jun:2020
Location: Bulgaria
Posts: 3
Ìíîãî áëàãîäàðÿ! Ñåãà ðàçáðàõ. À êàê áè ñòàíàëî òîâà ñ êîä?
-
4th June 2020 02:21 #4
Íà C áè áèëî íåùî îò âèäà íà
íî ïðåäïîëàãàì öåëòà íà äîìàøíîòî å òîçè êîä äà áúäå íàïèñàí íà àñåìáëåð - ïîäîáíî êàêòî å íàïðàâåíî âå÷å çà my_strdup.Code:char* duplicate = my_strdup(s); printf("my_strdup[%d] = %c\n", n, duplicate[n]);Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
"640K îught to be enough for anybody" - Bill Gates, 1981
Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel
-
4th June 2020 08:26 #5Registered User
Join Date: Jun:2020
Location: Bulgaria
Posts: 3
Íàèñòèíà ìíîãî áëàãîäàðÿ!




Reply With Quote
Lenovo ThinkPad 15 èëè IdeaPad 15
5th May 2023, 22:16 in Ìîáèëíè êîìïþòðè