
27-05-2007, 20:38
|
|
|
|
חבר מתאריך: 15.08.04
הודעות: 283
|
|
|
בעיה עם פרוצדורה באסמבלי
אני אמור לכתוב פרוצדורה באסמבלי שתפעל עם תוכנית של C:
כותב את הערך value לתוך n מילים כפולות (4 בתים) רצופים בזיכרון, החל מכתובת ptr-
קוד:
extern void my_mem_assign_4(void *ptr, long int value, int n);
הפרוצדורה שלי שלא עובדת:
קוד:
PUBLIC _my_mem_assign_4
_my_mem_assign_4 PROC NEAR
.386
PUSH BP
MOV BP,SP
PUSH EDI
MOV ECX,[BP+10]
CLD
MOV EDI,[BP+4]
MOV EAX,[BP+6]
REP STOSD
POP EDI
POP BP
RET
_my_mem_assign_4 ENDP
קטע הקוד ב C:
קוד:
int main()
{
long int k2 = 12345678;
my_mem_assign_4(larr, 9999, 20);
my_mem_assign_4(larr, k2, 9);
printf("larr:\n");
for(i=0; i< 20; i++)
printf(" %ld ", larr[i]);
}
הפלט שאמור להתקבל:
קוד:
larr:
12345678 12345678 12345678 12345678 12345678 12345678 12345678 123456
12345678 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999
אם מישהו יכול לעזור בבקשה, אנלא יוצא מזה.
תודה מראש.
נערך לאחרונה ע"י Corntown בתאריך 27-05-2007 בשעה 20:41.
|