דגל TRAP

emissary

New member
דגל TRAP

אני לא מצליח להדליק אותו באסמבלי. האם אתם יכולים להסהיר לי איזה מספר הוא 8? או 9? כי בספר הלימוד אמור 8, אבל אז בשביל להדליק הם עשו pushf pop ax or ax, 100h ואז זה מדליק את הסיבית ה-9 ולא את ה-8. האם יש למישהו הסבר?
 

MotiAd

New member
הדרך הטובה ביותר....

לעשות את זה היא להבין מה הם התנאים שבהם נדלק דגל ה-TRAP. אם תבין את התנאים האלו תוכל לעשות את זה בעצמך ובלי שטיקים ומשחקים עם אוגרים.
 

emissary

New member
אבל לנו אמרו שהדרך היחידה

להדליק הוא לעשות את הטריקים הללוף, כי אין פקודה ישירה שעושה את זה. והשימוש היחיד בדגל זה הוא על מנת לדבג...
 

MotiAd

New member
או קיי...

לגבי דגלים. עבדו עליך. סתם צוחק. בכל מקרה אין כזה דבר שאי אפשר לקבוע סטטוס דגל בעזרת פקודה. לדוגמה, Direction Flag ניתן לקבוע באמצעות SLD אם אני לא טועה (CLD מנקה את הסטטוס שלו). בכל מקרה, הרי דגלים נדלקים כתוצאה מפעולה מסויימת (לדוגמה פעולה אריתמטית שתוצאתה 0 תדליק את Zero Flag וכו'. אלו הטריקים שאני מדבר עליהם). דבר שני. אתה צריך להבין מה צריך לעשות כדי להדליק את הדגל ולמה הוא נדלק (קרא בכתובים של אינטל באתר שלהם לגבי ארכיטקטורת איכס 86) ואז ללאחר שהבנת את זה תוכל להדליק אותו אפילו אחרי 60 פעולות או 2 זה לא משנה.
 

emissary

New member
האלוגרתים להדליק את ה-TF

הוא pushf pop ax or ax, 100h push ax popf הדגל הזה לא מדבר על פעולה אריתמטית או על נתון כל שהוא, הוא דגל מיוטחד שעזרתו עושים דיבג, כלומר לפני כל מחזור הבאה בודקים האם הדגל דלוק ואם כן עוברים לפסיקה מס' 1.
 

MotiAd

New member
ד"א...

סתם שמתי לב עכשיו למה ששאלת... אתה בטוח שהדרך שאתה סופר בה היא הדרך שבה הם סופרים בספר? כי סיבית 8 במקום אחד יכולה להיות 9 במקום אחר, זה תלוי. ואיפה הכוונה שלך שזה מדליק? באיזה אוגר בדיוק? הרי הפקודה OR מבצעת פעולה בוליאנית OR כאשר אם סיבית 9 לא דלוקה ב-AX אז לאחר הפקודה הזו היא כן תידלק, כי הערך של 100H בבינארית הוא: 100000000 ובהכרח הוא מדליק את סיבית 9 ולא 8, אם אתה רוצה להדליק את 8 אז תיעזר בערך ההקסדצימלי של 10000000 שהוא: 128 בעשרוני או 80H.
 

DNile

New member
האמנם?

האם מדובר בסיבית השמינית, או בסיבית שמספרה 8? חשוב לשים לב שכשממספרים דברים בעולם המחשבים, ישנם 2 דרכים לעשות זאת : או להתחיל לספור מ0, או להתחיל לספור מ1. במקרה של סיביות, נהוג לסמן את הסיבית הימנית ביותר ב0, זאת שאחריה ב1, וכן הלאה. למה עושים את זה? כי אז יודעים בפשטות שהערך של סיבית דלוקה במקום N הוא 2 בחזקת N. מה זה אומר? שסיבית מספר 8 היא למעשה הסיבית התשיעית(!), ולהדליק את סיבית מספר 8, משמעה לשים ערך של 2 בחזקת 8 -> 256 -> 100H.
 
למעלה