בעיה בשורד

עמוד
מוצגות 15 תגובות – 1 עד 15 (מתוך 18 סה״כ)
  • מאת
    תגובות
  • #76762
    abit
    משתתף

    אני רוצה להשתמש בשורד שלי ככה שהוא יעתק קוד
    לדוג'
    100>bx>6
    mov word [es:bx],c607h
    mov byte [es:bx+2],09h

    OPCODE c60709 ==mov [bx],9h

    האם האופקוד נכון (אם לא אז מאיפה אפשר להמיר את הפקודות לOPCODE )
    c607hולמה הקוד לא מתקמפל, הוא רושם שה
    לא מוגדרים
    תודה
    צוות abit

    #77954
    CodeGuru
    מנהל בפורום

    שלום Abit
    אתה צריך לכתוב
    mov word [es:bx],07c6h
    הבעיה היא ב
    Endianity
    ראה
    סדר בתים

    מקווה שעזרתי,
    בהצלחה!

    #77953
    abit
    משתתף

    כן אבל התעוררה בעיה חדשה ,האם יש אפשרות לראות את כל הסגמנטים ואת המשתנים במהלך הרצת השורדים

    #77952
    CodeGuru
    מנהל בפורום

    אתה מוזמן להשתמש בתוכנה שקיריל כתב
    https://github.com/kirill578/corewars8086
    לדבג את השורד.

    #77951
    abit
    משתתף

    לא הצלחנו להוסיף את התוסף
    האם אתה יכול לפרט איך להוסיף אותו ?

    #77950
    CodeGuru
    מנהל בפורום
    #77949
    abit
    משתתף

    תודה, זה ממש עזר אבל עדיין לא פתר את הבעיה הראשונה ,
    es לכתוב ל
    אנחנו לא מצליחים לכתוב,(זה עובר קומפילציה אבל בהרצה של השורדים זה תמיד עף בשורה הזו)
    תחילת הקוד :(שורות קוד ראשונות
    mov bx,08h
    mov word [es:bx],07c6h ;<–פה השורד יוצא עקב cpu e
    add bx,02h
    mov byte [es:bx],9h
    תודה :)

    #77948
    GalDor
    משתתף

    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 default

    #77940
    abit
    משתתף

    האם אתם תומכים בפקודת
    jmp
    יחסית לכתובת מקומית
    והאם יש פקודת
    loop
    יחסית
    (לכתובת מקומית)
    אם לא איך אפשר לרשום לולאה עם כתובת דינמית
    תודה
    abit

    #77937
    CodeGuru
    מנהל בפורום

    כן, גם
    JMP
    וגם
    LOOP
    הם יחסיים

    #77935
    abit
    משתתף

    האם אפשר לרשום דוגמא לקפיצה שהיא דינמית
    (מקדמת בקבוע מסויים)
    וקפיצה שהיא לא דינמית
    (לא משנה איפה שהיא תהיה גם אם נעתיק אותה היא תשלח לאותה כתובת)

    #77934
    CodeGuru
    מנהל בפורום

    שלום ערן,
    קפיצה יחסית היא
    jmp label
    והיא מתורגמת ל
    EB offset
    למשל קפיצה לעצמך היא
    EB FE
    שזה לקפוץ שני בתים אחורה (הקפיצה היא יחסית לפקודה שהייתה מתבצעת הבאה אלמלא הקפיצה
    דוגמא לקפיצה למקום קבוע
    jmp ax
    קופצת לכתובת שנמצאת באוגר בלי קשר למקום ממנה בוצעה
    FF E0

    #77933
    abit
    משתתף

    אז אם אנחנו רוצים מכל מקום לקפוץ למקום מסויים
    איך אנחנו עושים את זה ?
    (מבלי שימוש באוגרים )

    #77932
    abit
    משתתף

    האם הפקודה call label
    היא קפיצה יחסית או לכתובת מסויימת בזיכרון ?

    #77931
    CodeGuru
    מנהל בפורום

    הפקודה
    JMP
    יכולה להיות יחסית
    EB או E9
    או קבועה
    EA
    במקרה של קבועה הכתובת היא 32 ביט – כולל מקטע
    אפשר גם לשים כתובת במחסנית ולבצע
    RET
    ואפשר גם לבצע באופן דומה על ידי
    CALL

    ולמה לא להשתמש באוגרים?

מוצגות 15 תגובות – 1 עד 15 (מתוך 18 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.