6c7d7fe0b5ae5052dad52e388c5492b7.ppt
- Количество слайдов: 15
תרגול 9 קלט/פלט סינכרוני 1 מבוסס על שקפים מאת יאן ציטרין
הסכמה של קלט / פלט 2 ©את"ם - תרגול מס' 01
ממשק בין המחשב לבין התקני קלט/פלט • הממשק בין המחשב לבין התקני קלט/פלט ממומש ע"י ארבע מילים מיוחדות הנקראות ”. “interface registers • לכל רגיסטר כזה יש כתובת קבועה בזיכרון וניתן לפנות אליו כאל חלק מהזיכרון. • למרות שהמילים הללו מכונות רגיסטרים הם למעשה אינם אוגרים במובן רגיל. המידע מגיע מחומרה בלבד 3 ) 177562 (Read Only TKB 465771 TPS ) 177566 (Write Only המידע מיועד למדפסת בלבד 065771 TKS TPB ©את"ם - תרגול מס' 01
TKB & TPB התו מגיע מהמקלדת אל תוך הבית הנמוך של ה- . TKB התוכנית קוראת את התו ע"י פקודות רגילות שניגשות לזיכרון. TKB כאן מאוחסן קוד ה- ascii של התו שהוקלד כדי להדפיס את התו יש להכניס אותו לבית הנמוך של ה- . TPB חומרת המדפסת מזהה את הגישה ל- TPB ומתחילה להדפיס את התו. TPB כאן מאוחסן קוד ה- ascii של התו שנשלח להדפסה 4 ©את"ם - תרגול מס' 01
TPS מדוע זקוקים לבקרה על המדפסת? מכיוון שהמחשב הרבה יותר מהיר מהמדפסת, היא אינה יכולה להדפיס תווים בקצב שלו, אז צריך לחכות לאחר כל תו שנשלח, לסיום תהליך ההדפסה. דרוש אינדיקטור כלשהו שמציין את סיום ההדפסה הקודמת. TPS הנו חוצץ שמספק מנגנון בקרה על המדפסת, והוא מכיל אינדיקטור כזה. 0 1 2 3 4 5 6 7 8 9 01 11 21 31 41 51 TPS 5 ready הביט"ם - תרגול מס'1 כאשר המדפסת ©את הזה הוא 01 מוכנה לקבל תווים להדפסה
TKS ומדוע יש צורך בבקרה על המקלדת? לא נרצה שייכנס אל תוך TKB תו חדש, לפני שהספקנו לקרוא את הקודם. TKS הנו חוצץ שמספק מנגנון בקרה על המקלדת. באופן דומה ל- TPS הוא מציין שהוקלד תו חדש ע"י המשתמש והתוכנית יכולה לקבל אותו. קיימים 3 דגלים שאחראים על האינטראקציה 0 1 2 3 4 5 6 7 01 11 21 31 41 51 8 9 TKS RE –read enable חייב לעלות מ-0 ל- 1 כדי שהמקלדת תוכל להכניס תו ל - TKB done מציין שקוד ה- ©אתשל התו מס' " ascii ם - תרגול 6 שהוקלד מוכן ב- TKB 01 busy מציין שהתו טרם הועבר מהמקלדת ל- TKB
0 1 2 3 4 5 6 TKS 7 8 9 01 11 21 31 41 51 TKS כיצד התוכנית תבדוק האם יש תו מוכן עבורה? • הפתרון הנאיבי: ע"י פקודת . (bit) bic • ע"י התייחסות ל TKS כשני בתים במקום כמילה אחת. )בדיקת דגל N עבור הבית הנמוך( 7 ©את"ם - תרגול מס' 01
המנגנון של הקלט פעולה אחריות ) Read Enable (RE 1 RE התוכנית המשתמש מקיש תו המקלדת התו מוכן ב- TKB המקלדת קוראים את התו מ- TKB התוכנית Done Busy )*( )*( – הפעולה מתבצעת אוטומטית ע"י החומרה 8 ©את"ם - תרגול מס' 01
המנגנון של הקלט )המשך( RE Busy Done קלט פיסי – הזמן מהקשת התו עד שיועבר ל- TKB קלט לוגי – כל התהליך 9 ©את"ם - תרגול מס' 01
המנגנון של הפלט 1. ממתינים עד שדגל ה- Ready יעלה. 2. מכניסים תו ל- . TPB המדפסת מורידה את ה-. Ready מדפסת עסוקה הכנסת תו מדפסת מוכנה 01 ©את"ם - תרגול מס' 01
דוגמה tks = 177560 tkb = 177562 tps = 177564 tpb = 177566. = torg + 1000 main: mov #msg, r 1 mov #6, r 2 r_loop: mov #1, @#tks busy_w: tstb @#tks bpl busy_w movb @#tkb, (r 1)+ sob r 2, r_loop mov w_loop: tstb bpl movb sob halt msg: . blkw #msg, r 1 #6, r 2 @#tps w_loop (r 1)+, @#tpb r 2, w_loop 10 , התוכנית מקבלת מהמשתמש 6 תווים , (msg) כותבת אותם לזיכרון לאחר מכן קוראת את אותם התווים . ומדפיסה אותם busy wait – משתמשת במנגנון 10 ' ©את"ם - תרגול מס 11
( דוגמה נוספת )מהמבחן : נתונה התוכנית שמבצעת את המשימה הבאה Loop: read character c from keyboard if ( c == ‘/’ ) then stop if ( c > ‘ 9’ or c < ‘ 0’ ) then Error translate character c to the corresponding digit i. print table[i] go to Loop Error: print ‘*’ go to Loop 10 ' ©את"ם - תרגול מס 12
1. 2. 3. 4. 5. main: 6. in: 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ( דוגמה מהמבחן )המשך tks tkb tps tpb mov tstb bpl movb bic cmpb beq cmpb blt cmpb bgt bic movb = 177560 = 177562 = 177564 = 177566 #1, @#tks in @#tkb, r 1 mask 1, r 1, end sof r 1, #60 err r 1, #71 err mask 2, r 1 table(r 1), r 2 ; RE 1 ; While ( there is no input) busy ; wait for input wait ; R 1 input character ; Clear irrelevant bits (high byte) ; if ( r 1 == ‘/’ ) ; go to sof ; if ( r 1 < ‘ 0’ ) ; go to err ; if (r 1 > ‘ 9’ ) ; go to err ; Conversion: ‘ 0’ 0, ‘ 1’ 1, etc. ; R 2 Character to be printed 10 ' ©את"ם - תרגול מס 13
( דוגמה מהמבחן )המשך 18. out: 19. 20. 21. tstb bpl movb br 22. err: 23. movb star, r 2 br out ; R 2 error message ; go to printing 24. sof: halt ; Stop the program 25. 26. 27. 28. 29. 30. . word 177600. word 177760. ascii</>. ascii<*>. byte 12. ascii<abcdefghi> mask 1: mask 2: end: star: table: @#tps out r 2, @#tpb main ; while ( the printer is busy ) ; wait for printer to be ready ; print R 2 ; proceed to the next input 10 ' ©את"ם - תרגול מס 14
דוגמה מהמבחן )המשך( -שאלות מה יודפס עבור הקלט “ ? "192 b * aib 51 ©את"ם - תרגול מס' 01
6c7d7fe0b5ae5052dad52e388c5492b7.ppt