פורסם 2015 במרץ 1310 שנים שלוםאחרי שנים שלא נגעתי באסמבלי, רציתי לבנות תוכנית ממש קטנה שעושה Delay קטן, למשל של שנייה או כמה שניות.אני משתמש ב-Windows XP SP3.פתחתי חלון DOS, הרצתי debug.exeוהזנתי את התוכנית הבאה:MOV CX,3DMOV DX,0900MOV AH,86INT 15פונקציה מספר 86h ב-Interrupt 15h, מבצעת delay,כאשר הזמן להשהייה(במיקרושניות) נמצא באוגרים CX,DXכך, אם אנחנו רוצים שהפונקציה תמתין 4 שניות, אז 4,000,000 מיקרושניות, בהקסה-דצימלי זה 3D0900h,וזה בדיוק מה שהזנתי ל-CX,DXהרצה של התוכנית הקטנה הזו מסתיימת מייד, בלי שום השהייה..ניסיתי אופציה אחרת.פונקציה מספר 0, ב-Interrupt 1Ah, אמורה להחזיר לנו את ערך השעון של המחשב, לתוך האוגרים CX,DXהרצתי את התוכנית הזו:MOV AH,0INT 1Aוערך האוגרים CX,DX בסיומה הוא 0000..יש סיבה ששני אינטרפטים שקשורים לשעון לא עובדים מתוך חלון DOS ב-Windows?זה אמור להיות כך?והאם יש משהו שיכול לאפשר את זה בחזרה?תודה נערך 2015 במרץ 1310 שנים על-ידי card
פורסם 2015 במרץ 1310 שנים מחבר מתברר שהסיבה לבעיות היא ש-Windows מריץ עבורנו את DOS במצב של Protected Mode,ובמצב הזה הרבה גישות ל-BIOS (כמו דברים שקשורים לשעון) לא מאופשרים...
פורסם 2015 במרץ 2010 שנים מה עושה INT 15 זה כמו SLEEP?לא יודע לי שיש בווינדוס פונקצייה שפשוט עושה DELAY או חוסמת לזמן מסויים אלא אם כן אתה מדבר על SLEEP שזה לא בדיוק אותו הדבר.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.