פורסם 2012 באפריל 1113 שנים קצת חדש לי כל השפה הזאת. אשמח אם רק תתנו לי כיוון באיך להתחיל.מצורף הקובץ שצירפו לנו.המשימה:התוכנית באסמבלי מקבלת כפרמטר מחרוזת("null terminated string" -מזה אומר?) באורך זוגי ומכילה רק תווים בהקסדצמילי.הפונקציה צריכה לקרוא כל פעם 2 תווים ולהכניס לתוך מחרוזת הפלט תו בהתאם לערך האסקי בייצוג הקסדצימלי.מחרוזת הפלט צריכה להיות גם היא "null terminated string" .ודוגמא למשל:> 4c656d6f6eLemon section .rodataLC0: DB "The result is: %s", 10, 0 ; Format stringsection .bssLC1: RESB 256section .text align 16 global my_func extern printfmy_func: push ebp mov ebp, esp ; Entry code - set up ebp and esp pusha ; Save registers mov ecx, dword [ebp+8] ; Get argument (pointer to string); Your code should be here... push LC1 ; Call printf with 2 arguments: pointer to str push LC0 ; and pointer to format string. call printf add esp, 8 ; Clean up stack after call popa ; Restore registers mov esp, ebp ; Function exit code pop ebp retאני אפרט קצת יותר:כרגע בתוך ecx יש לי את המחרוזת.אני צריך לקרוא את 2 התווים הראשונים ואחרי זה להמיר למה שצריך:1. אני יודע שככה: byte [ecx] ניגשים לתו במקום מסוים(נניח ניגשנו למקום הראשון), איך עכשיו אני בודק גם את הביט הבא ומאחד את שניהם ביחד לצורך הבדיקה?2. איך לוקחים מתוך הטבלת אסקי את הערך המתאים?תודה!
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.