שני Interrupt-ים שקשורים לזמן, לא עובדים ב-Assembly, ב-Windows? - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שני Interrupt-ים שקשורים לזמן, לא עובדים ב-Assembly, ב-Windows?


card

Recommended Posts

שלום

אחרי שנים שלא נגעתי באסמבלי, רציתי לבנות תוכנית ממש קטנה שעושה Delay קטן, למשל של שנייה או כמה שניות.

אני משתמש ב- SP3.

פתחתי חלון DOS, הרצתי debug.exe

והזנתי את התוכנית הבאה:

MOV CX,3D
MOV DX,0900
MOV AH,86
INT 15

פונקציה מספר 86h ב-Interrupt 15h, מבצעת delay,

כאשר הזמן להשהייה(במיקרושניות) נמצא באוגרים CX,DX

כך, אם אנחנו רוצים שהפונקציה תמתין 4 שניות, אז 4,000,000 מיקרושניות, בהקסה-דצימלי זה 3D0900h,

וזה בדיוק מה שהזנתי ל-CX,DX

הרצה של התוכנית הקטנה הזו מסתיימת מייד, בלי שום השהייה..

ניסיתי אופציה אחרת.

פונקציה מספר 0, ב-Interrupt 1Ah, אמורה להחזיר לנו את ערך השעון של המחשב, לתוך האוגרים CX,DX

הרצתי את התוכנית הזו:

MOV AH,0
INT 1A

וערך האוגרים CX,DX בסיומה הוא 0000..

יש סיבה ששני אינטרפטים שקשורים לשעון לא עובדים מתוך חלון DOS ב-Windows?

זה אמור להיות כך?

והאם יש משהו שיכול לאפשר את זה בחזרה?

תודה

קישור לתוכן
שתף באתרים אחרים

מתברר שהסיבה לבעיות היא ש-Windows מריץ עבורנו את DOS במצב של Protected Mode,

ובמצב הזה הרבה גישות ל- (כמו דברים שקשורים לשעון) לא מאופשרים...

קישור לתוכן
שתף באתרים אחרים

מה עושה INT 15 זה כמו SLEEP?

לא יודע לי שיש בווינדוס פונקצייה שפשוט עושה DELAY או חוסמת לזמן מסויים אלא אם כן אתה מדבר על SLEEP שזה לא בדיוק אותו הדבר.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...