הצילו!2 עמוד ברוכים הבאים לאתר תחרויות קודגורו! › פורומים › אקסטרים › הצילו!2 This topic has 7 תגובות, 2 משתתפים, and was last updated לפני 18 שנים, 10 חודשים by DL!. מוצגות 8 תגובות – 1 עד 8 (מתוך 8 סה״כ) מאת תגובות 30 בינואר 2006 בשעה 12:54 #77098 QVBמשתתף האם וכיצדמותר לקפוץ אל כל מקום בקוד וכיצד זה נעשה?מדוע קטע הקוד הבא לא עובד?mov[0], 0e9fdfeh jmp 0; כאשר הקוד0e9fdfehבשפת מכונה משמעוjmp 0 תודהQVB 30 בינואר 2006 בשעה 13:32 #78551 DL!משתתף הקוד שלכם אינו קוד חוקי באסמבלי 16 ביט (שבו משתמשים בתחרות), כיוון שאין אפשרות לכתוב לזיכרון יותר מ-16 ביט באופקוד בודד. לכן השורהmov [0], 0e9fdfehאינה חוקית. זה משהו שהקומפיילר / אסמבלר שלכם היה אמור לצעוק עליו. 30 בינואר 2006 בשעה 13:37 #78550 DL!משתתף עוד נקודה למחשבה: ב-8086 פקודתJMPהיא רלטיבית. ז"א, ה"קידוד" שלה בשפת מכונה אומר משהו בסגנון "קפוץ 314 בתים אחורה", ולא "קפוץ לכתובת 0". לכן, הבתיםE9 FD FEשאתם משתמשים בהם, יקפצו לכתובת 0 רק אם המעבד מריץ אותם מהכתובת 0x100. 30 בינואר 2006 בשעה 14:09 #78548 QVBמשתתף האסמבלר למעשה קימפל את זה ולכן חשבתי, שאולי הוא מתרגם את זה ל2 MOVEים, או משהו בסגנון. הבעיה היא בכל מקרה לא ה MOVE אלא ה JMP. האם ניתן לקפוץ אל כל מיקום במקטע הקוד? כ 30 בינואר 2006 בשעה 14:15 #78547 QVBמשתתף לדוגמא הקוד הבא: mov cx,0ffffhmov word ptr [bx], 0f3a5h ; rep stoswjmp[bx] מדוע אינו עובד? 30 בינואר 2006 בשעה 14:29 #78546 DL!משתתף The reason is Endianness issues. The code would probably work fine if you change the second opcode to:mov word ptr [bx], 0a5f3h ; rep stosw For full details see http://en.wikipedia.org/wiki/Endianness 30 בינואר 2006 בשעה 14:35 #78545 DL!משתתף And another thing to consider: Notice the difference between JMP BX JMP [BX] Your code does the second, but I think you mean the first. 30 בינואר 2006 בשעה 15:25 #78544 QVBמשתתף it doesen't…..nor with settung the bytes one by one, something to do with the fact that f3ab is a deifferent opcode. it should be 00:F3 01:AB מאת תגובות מוצגות 8 תגובות – 1 עד 8 (מתוך 8 סה״כ) יש להתחבר למערכת על מנת להגיב. התחבר שם משתמש: סיסמה: זכור אותי התחבר