פורסם 2007 באוקטובר 618 שנים יש לי שני שורות שעושות לי בעיותxchg turn,nextTurnmov game[gameLoction],"wn"אני מניח שבראשון זה קשור לזה שיש שני משתנים בשני הצדדים, ובשני שזה מחרוזת או הGAMELOCTION (אולי אפשר להכניס רק BX/SI/DI).השאלה שלי מה אני יכול לעשות כדי לתקן את זה?עריכה:וגםxor xLoction,xLoction
פורסם 2007 באוקטובר 618 שנים בגדול ב-x86 assembly אתה לא יכול לעשות פעולה בין שני שני תאי זכרון, אלא רק בין תא זכרון לרסיסטר (או כמובן שני רגיסטרים).אתה יכול לעשות משהו בסגנון:mov eax, [turn]xchg nextTurn, eaxmov [turn], eaxקח בחשבון שיש הבדל מבחינת האטומיות של הפעולה, אבל אני מסופק שזה משנה לך. כמו כן קח בחשבון שלא כתבתי x86 אסמבלי כבר המון זמן, ויתכן שהסינטקס קצת שונה.
פורסם 2007 באוקטובר 618 שנים זה לגמרי סינטקס לא נכון (לפחות ממה שאני זוכר באסמבלר שאני זוכר, TASM). כל השורה הזו עקומה, לדעתי.בכל מקרה אי אפשר להזיז מחרוזות שלמות ככה.
פורסם 2007 באוקטובר 818 שנים תצטרך לשאול מישהו שזוכר יותר טוב. עד כמה שאני זוכר זה לא חוקי, אבל לך תדע איזה שיפצורים עשו מאז באסמבלר. אולי זה מכניס ל-al את 'n' ול-ah את 'w'.
פורסם 2007 באוקטובר 818 שנים מוזר. הוא לא נותן לי שום ארור כשאני עושהmov bx,"wn"פשוט תבדוק בדיבגר מה יש בBX.
פורסם 2007 באוקטובר 818 שנים מחבר במקום זהmov game[gameLoction],"wn"שיניתי לmov si,gameLoctionmov game[si],"wn"ועובדהבעיה הבאה שליהZF אחרי הקוד הבא אמור להיות 1 אבל הוא 0, יש בעיה בקוד או שאתה חושבים זה בא ממקום אחרmov si,gameLoctioncmp game[si-1ah],"em"הGAME מיוצג אצלי הDW כלומר כל תא הוא בעצם 2 והמערך הוא 12*12 (או בעצם 24*24 אם תרצו).
פורסם 2007 באוקטובר 818 שנים אני לא מכיר את העבודה עם מחרוזות, אבל הZF יהייה 0 רק אם 2 הביטויים שווים(כאילו אתצה מחסר ביניהם).אם הם לא שווים, הוא יהייה אחד.
פורסם 2007 באוקטובר 918 שנים מחבר גם אני חשבתי שאי אפשר לעבוד ככה עם מחרוזות(והתחלתי לעשות הסבה למספרים) אבל מסתבר שאין בעיה...נראה לימתוך הנחה שאם זה עובדmov game[si],"em"אז אין סיבה שזה לא יעבודcmp game[si],"em"או שההנחה מוטעת?ותאמת אני לא רואה שום בעיה משום שבמקום המחרוזת מוצב שם הHEXA שלו(ולא כתובת למקום) והוא פשוט אמור להשוות בין הHEXA של כל אחד.UI אם שני הביטויים יהיו שווים הZF יהיה 1. (משום שהתוצאה תהפוך ל0 מה שיהפוך את הZF ל1).
פורסם 2007 באוקטובר 918 שנים למה אתה מניח דבר כזה ולא בודק בזיכרון מה בדיוק קורה ? זה ממש נראה לי לא הגיוני ותקין באסמבלי.ומה קורה אם המחרוזת היא יותר מ2 בייט ?
פורסם 2007 באוקטובר 918 שנים מחבר השורה הזוmov game[si],"em"תקינה.הוא מכניס לזכרון את הHEXA של כל אות לתא(המערך הוא DW).בקשר לאורך, אני(המתכנת) היחיד שמכניס ומשווה תמחרוזת. היא תמיד תיהיה שני תווים ובכך תוכנס תושווה לאותם שני תאים סמוכים, או תיהיה תו בודד וגם כאשר יש יחס לתו בודד אני אקדם את מיקום התא באחד ויוסיף לפני BYTE PTR.אתם יודעים מה אולי אני טועה במיקום, תסתקלו ותגידו לי אם יש טעות באחד החישובים(או האיתחולים).אמור להצביע על ה wn הראשון משמאל(למעלה).gameLoction dw 34h game dw 0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh dw 0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh dw 0ffffh,0ffffh,"wn","em","wn","em","wn","em","wn","em",0ffffh,0ffffh dw 0ffffh,0ffffh,"em","wn","em","wn","em","wn","em","wn",0ffffh,0ffffh dw 0ffffh,0ffffh,"wn","em","wn","em","wn","em","wn","em",0ffffh,0ffffh dw 0ffffh,0ffffh,"em",0ffffh,"em",0ffffh,"em",0ffffh,"em",0ffffh,0ffffh,0ffffh dw 0ffffh,0ffffh,0ffffh,"em",0ffffh,"em",0ffffh,"em",0ffffh,"em",0ffffh,0ffffh dw 0ffffh,0ffffh,"em","bn","em","bn","em","bn","em","bn",0ffffh,0ffffh dw 0ffffh,0ffffh,"bn","em","bn","em","bn","em","bn","em",0ffffh,0ffffh dw 0ffffh,0ffffh,"em","bn","em","bn","em","bn","em","bn",0ffffh,0ffffh dw 0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh dw 0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffh,0ffffhעולה אחדsub gameLoction,18hיורד אחדadd gameLoction,18hאחד שמאלהsub gameLoction,2hאחד ימינהadd gameLoction,2h
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.