ברוכים הבאים לאתר תחרויות קודגורו! › פורומים › אקסטרים › בעיה בשורד
- This topic has 17 תגובות, 4 משתתפים, and was last updated לפני 11 שנים, 8 חודשים by
CodeGuru.
-
מאתתגובות
-
21 בינואר 2014 בשעה 07:22 #76762
abit
משתתףאני רוצה להשתמש בשורד שלי ככה שהוא יעתק קוד
לדוג'
100>bx>6
mov word [es:bx],c607h
mov byte [es:bx+2],09hOPCODE c60709 ==mov [bx],9h
האם האופקוד נכון (אם לא אז מאיפה אפשר להמיר את הפקודות לOPCODE )
c607hולמה הקוד לא מתקמפל, הוא רושם שה
לא מוגדרים
תודה
צוות abit21 בינואר 2014 בשעה 07:46 #77954CodeGuru
מנהל בפורוםשלום Abit
אתה צריך לכתוב
mov word [es:bx],07c6h
הבעיה היא ב
Endianity
ראה
סדר בתיםמקווה שעזרתי,
בהצלחה!22 בינואר 2014 בשעה 07:54 #77953abit
משתתףכן אבל התעוררה בעיה חדשה ,האם יש אפשרות לראות את כל הסגמנטים ואת המשתנים במהלך הרצת השורדים
22 בינואר 2014 בשעה 08:16 #77952CodeGuru
מנהל בפורוםאתה מוזמן להשתמש בתוכנה שקיריל כתב
https://github.com/kirill578/corewars8086
לדבג את השורד.22 בינואר 2014 בשעה 08:43 #77951abit
משתתףלא הצלחנו להוסיף את התוסף
האם אתה יכול לפרט איך להוסיף אותו ?22 בינואר 2014 בשעה 09:18 #77950CodeGuru
מנהל בפורוםלהורדה של הדיבגר המקומפל
https://github.com/downloads/kirill578/CoreWars8086-Debugger/Compiled.rar22 בינואר 2014 בשעה 11:57 #77949abit
משתתףתודה, זה ממש עזר אבל עדיין לא פתר את הבעיה הראשונה ,
es לכתוב ל
אנחנו לא מצליחים לכתוב,(זה עובר קומפילציה אבל בהרצה של השורדים זה תמיד עף בשורה הזו)
תחילת הקוד
שורות קוד ראשונות
mov bx,08h
mov word [es:bx],07c6h ;<–פה השורד יוצא עקב cpu e
add bx,02h
mov byte [es:bx],9h
תודה
22 בינואר 2014 בשעה 12:45 #77948GalDor
משתתףThe game engine does not support (at the moment) segment prefixes, meaning that
MOV [bx], 0xDEAD
is fine, but
MOV [es:bx], 0xDEAD
throws an unsupported opcode exception.
The way around this is that [bx] references ds by default, so if you edit ds so that it is equal to es, then the code will work, e.g.,
PUSH es ; push the value of es
POP ds ; place it into ds
MOV [bx], 0xDEAD ; write it into [bx], which is [ds:bx] by default9 בפברואר 2014 בשעה 09:08 #77940abit
משתתףהאם אתם תומכים בפקודת
jmp
יחסית לכתובת מקומית
והאם יש פקודת
loop
יחסית
(לכתובת מקומית)
אם לא איך אפשר לרשום לולאה עם כתובת דינמית
תודה
abit9 בפברואר 2014 בשעה 15:10 #77937CodeGuru
מנהל בפורוםכן, גם
JMP
וגם
LOOP
הם יחסיים15 בפברואר 2014 בשעה 05:16 #77935abit
משתתףהאם אפשר לרשום דוגמא לקפיצה שהיא דינמית
(מקדמת בקבוע מסויים)
וקפיצה שהיא לא דינמית
(לא משנה איפה שהיא תהיה גם אם נעתיק אותה היא תשלח לאותה כתובת)15 בפברואר 2014 בשעה 05:46 #77934CodeGuru
מנהל בפורוםשלום ערן,
קפיצה יחסית היא
jmp label
והיא מתורגמת ל
EB offset
למשל קפיצה לעצמך היא
EB FE
שזה לקפוץ שני בתים אחורה (הקפיצה היא יחסית לפקודה שהייתה מתבצעת הבאה אלמלא הקפיצה
דוגמא לקפיצה למקום קבוע
jmp ax
קופצת לכתובת שנמצאת באוגר בלי קשר למקום ממנה בוצעה
FF E015 בפברואר 2014 בשעה 06:44 #77933abit
משתתףאז אם אנחנו רוצים מכל מקום לקפוץ למקום מסויים
איך אנחנו עושים את זה ?
(מבלי שימוש באוגרים )15 בפברואר 2014 בשעה 07:03 #77932abit
משתתףהאם הפקודה call label
היא קפיצה יחסית או לכתובת מסויימת בזיכרון ?15 בפברואר 2014 בשעה 07:08 #77931CodeGuru
מנהל בפורוםהפקודה
JMP
יכולה להיות יחסית
EB או E9
או קבועה
EA
במקרה של קבועה הכתובת היא 32 ביט – כולל מקטע
אפשר גם לשים כתובת במחסנית ולבצע
RET
ואפשר גם לבצע באופן דומה על ידי
CALLולמה לא להשתמש באוגרים?
-
מאתתגובות
- יש להתחבר למערכת על מנת להגיב.