לשימושכם בתרגול, הנה אתר עם כל הפסיקות הקיימות בDOS ו- בBIOS
https://www.stanislavs.org/helppc/idx_interrupt.html
תרגיל 1 – הדפסת תו בודד¶
-
הגדר את הרגיסטרים כך שהפסיקה
INT 21h (שירות 02h) תדפיס את האותA. -
לאחר ההדפסה סיים את התוכנית בצורה תקנית (AH = 4Ch).
תרגיל 2 – אקו של תו מקלדת¶
-
קרא תו מהמקלדת בעזרת
INT 21h (AH = 01h). -
הדפס את התו חזרה למסך עם
INT 10h (AH = 0Eh).
תרגיל 3 – הדפסת מחרוזת¶
-
צור במקטע הנתונים מחרוזת
'Hello, DOS!$'. -
הדפס אותה בעזרת
INT 21h (AH = 09h). -
סיים את התוכנית.
תרגיל 4 – קריאת מחרוזת מהמשתמש¶
-
הקצה Buffer כפי שמחייב השירות AH = 0Ah (אורך + ספירת תווים + מרחב).
-
קרא עד 19 תווים מהמקלדת ו‑אחר‑כך הדפס אותם חזרה בעזרת AH = 09h.
‑‑ זכור להוסיף ‘$’ בסוף לפני ההדפסה.
תרגיל 5 – פסיקה מותאמת אישית (INT 60h)¶
-
כתוב Handler שמדפיס כוכבית
* בכל קריאה, ואז מבצע IRET. -
שמור את ה‑Vector הישן של
INT 60h, התקן את החדש שלך בטבלת ה‑IVT,
קרא פעמיים INT 60h מהקוד הראשי, ואז שחזר את ה‑Vector הישן לפני סיום.
תרגילי העשרה¶
התרגילים הבאים הם תרגילי העשרה- לא חובה.
כדי לפתור את התרגילים תצטרכו לחפש באינטרנט ולחקור בעצמכם- בהצלחה.
תרגיל 6 - תצוגת שעה ממסך ה‑BIOS¶
-
קבל את ערך מונה ה‑טיימר (BIOS Tick Counter) בעזרת
INT 1Ah (AH = 00h). -
המר את מספר ה‑Ticks (55 Ticks ≈ שנייה) לשניות שעברו מאז חצות,
הדפס את המספר בעזרת שירות AH = 02h (תו‑תו).
(מספיקה הצגה כ‑Decimal ללא עיצוב של שעות/דקות).
תרגיל 7 – “Press any key to continue…”¶
-
הדפס את הטקסט הנ”ל בעזרת AH = 09h.
-
המתן להקשה ב‑
INT 16h (BIOS Keyboard, AH = 00h). -
נקה את התו מה‑Buffer (אין צורך להציג אותו) וסיים.
תרגיל 8 – טיפול בסיסי בשגיאה¶
-
נסה לפתוח קובץ בלתי‑קיים בעזרת
INT 21h (AH = 3Dh). -
קבל את ערך שדה CF (Carry Flag) אחרי הקריאה:
‑‑ אם CF = 1, הדפס “Error!”; אחרת הדפס “Opened!”.
(טיפ: השתמש ב‑JC/JNC).