80
תתתתתתת תתתתתתת תת תתתתת תתתתתת תתתתת תתתת תתתתת תתתתת תתתתת תCPU תתתתת תתתתת תתתתROM תתתתת תתתתת/ת תתתתRAM תתתתת תתתתInterfa ce ADDRESS BUS DATA BUS CONTROL BUS תתתתclock

מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

  • Upload
    hana

  • View
    87

  • Download
    1

Embed Size (px)

DESCRIPTION

מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב. זכרון קריאה בלבד ROM. זכרון קריאה/כתיבה RAM. יחידת ממשק Interface. יחידת עיבוד מרכזית CPU. ADDRESS BUS. שעון clock. DATA BUS. - PowerPoint PPT Presentation

Citation preview

Page 1: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

יחידתעיבוד

מרכזית

CPU

זכרון קריאה בלבדROM

זכרון קריאה/כתיב

הRAM

יחידת ממשקInterface

ADDRESS BUS

DATA BUS

CONTROL BUS

שעון

clock

Page 2: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

עיקרון עבודת המערכת מבוססת מיקרו מחשב

מערכת מבוססת מיקרו מחשב כוללת את שלושת המרכיבים הבאים:

•CPU - Central Processing Unit (Microprocessor) ) יחידת עיבוד מרכזית )מעבד - •Main Memory - בזמן ביצוע ונתונים של התוכנית פקודות זיכרון ראשי בו מאוחסנים•Input/Output Devices – התקנים ליצירת קשר בין המעבד לבין המשתמש•Memory and I/O Subsystem – פסים להעברת מידע בין המעבד לבין הזיכרון

קלט/פלט ובין המעבד לבין התקני•Address Bus מעביר כתובת גישה ממעבד לתאי זיכרון או להתקני קלט/פלט - •Data Bus מעביר נתונים -•Control Busמעביר אותות בקרה לניהול גישה לזיכרון ו להתקני קלט/פלט -

אל מרכיבי המערכת. כל CPUכל מסלול הוא למעשה אוסף של קווים המקשרים את ה- ‹ במקביל .CPUמרכיבי המערכת מחוברים אל ה-

כל משימה שהמערכת צריכה לבצע , כתובה כתוכנית בשפת תכנות כלשהי, מתורגמת•לשפת מכונה ע"י קומפיילר ומאוחסנת בזיכרון כאוסף נתונים בינאריים בסדר מסוים

)Set of Operation Codes - OpCodes.(

פונה לאזור בזיכרון הראשי איפה נמצאת התוכנית המקודדת, CPUאלמנת לבצע המשימה ה-• ומבצע Opcode, מפענח את ה- CPU של הפקודה הנוכחית מזיכרון אל ה-Opcodeמביא את ה-

את הפקודה, שוב פעם פונה לזיכרון להבאת פקודה הבאה וכך עד סוף התוכנית.

Page 3: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

CPUהבאת פקודה לביצוע מהזיכרון אל ה- Opcode Fetch Cycle

Address Bus

Opcode

Address=N

Opcode

N

CPU Main Memory

ClkRd

Data Bus

Control Bus

Program counter

Instruction Register

, counter Program פונה לאזור בזיכרון הראשי עליו מצביע ה- CPUה-•, מפענח CPUשל הפקודה הנוכחית מזיכרון אל ה-Opcodeמביא את ה-

אותה ומבצע את הפקודה. שוב פונה לזיכרון להבאת הפקודה הבאה מפענח ומבצע וכך עד סוף

התוכנית.

Page 4: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

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

Fetchהבא את ההוראה הבאה מהזיכרון- •Execution בצע את ההוראה - •.1 לך לשלב •

ארבע שלבי ביצוע הפקודה•Instruction Fetch הבאתOpcode -של הפקודה לביצוע מזיכרון ראשי אל ה

CPU. •Instruction decode (פענוח הפקודה Opcode) שנמצאת באוגרIP ע"י

החומרה•Execution ) ביצוע הפקודה )עיבוד אריתמטי , אחסון זמני •Write backכתיבת התוצאות העיבוד חזרה לזיכרון הראשי

פס מחזורי חמישה או שונות פעולות חמש קיימות בסך-הכל אפשריים:

קריאה מהזיכרון.• כתיבה לזיכרון.• קריאה מקלט/פלט.• כתיבה לקלט/פלט.• סרק )פעולה פנימית שאינה דורשת גישה לזיכרון או למיפתח קלט/פלט(.•

Page 5: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב
Page 6: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

8086תכונות של המעבד .1978 בשנת INTEL יוצר ע"י חברת 8086המעבד

בעל תכונות הבאות:8086המעבד

סיביות16- רוחב פס נתונים• סיביות , זאת אומרת שהוא יכול לעבד נתונים 16רוחב אוגרים פנימיים - •

סיביות בפעולות אריתמטיות - לוגיות16בעלי , זאת אומרת שהוא יכול לגשת סיביות20כלפי זיכרון - רוחב פס כתובות•

Mbyte 1 = 1,048,576 = 220בגודל לזיכרון ראשי , זאת אומרת שהוא סיביות16רוחב פס כתובות כלפי התקני קלט/פלט - •

Devices 64535 = 216יכול להתחבר למספר התקנים:

אוbyte 1 יכול לגשת לזיכרון להבאת נתונים בגודל 8086המעבד •1 word=2 byte.בגישה אחד, תלוי בפקודה

חוץ מרוחב פס נתונים חיצוני 8086 דומה מאוד למעבד 8088המעבד •שהוא

פעמיים 8088 המעבד word=2 byte 1 סיביות - להבאת נתון בגודל 8בעל ניגש לזיכרון .

Page 7: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

7

קווי כתובת20•

קווי נתונים8•

8088

Page 8: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

הצגת נתון במיקרו מחשב

נתונים לא מסומנים

1 byte – 8 bit

MSB

LSB

LSB

1 word – 16 bit

MSB

נתונים מסומניםMSB LSB

MSB LSB

Sign

Sign

1 byte

1 word

Page 9: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

תיזמון מחזור הפס

Page 10: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

BUSיחידת הקשר ל- - BIU - BUS INTERFACE UNIT – EU - EXECUTION UNIT - יחידות הביצוע-

Page 11: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

8086מיבנה פנימי של המעבד מורכב בתוכו משתי יחידות CPU נקרא גם כן 8086המעבד •

פונקציונאליות יקאריות:oיחידה להבאת נתון מזיכרון– BIU – Bus Interface Unit

יחידה זאת בונה את כתובת גישה לזיכרון , פונה לזיכרון , קוראת את הפקודה ומאחסנת אותה לחוצץ CPUהבאה מהזיכרון לפס נתונים , מעבירה אותה ל-

של).QUEUEבתים - תור פקודות( 6

Code Segment,Data Segment - אוגרי סגמנט 4 כוללת BIUיחידת Stack Segment,Extra Segment ואוגר - Instruction Pointer – 16 (כולם

סיביות)

o – יחידת ביצועEU – Execution Unit0.BIUיחידה זאת לוקחת פקודות מהחוצץ ומבצעת אותן ללא תלות ביחידת

– הפקודה שהוכנסה ראשונה לתור FIFO) עובד בעיקרון של QUEUEהחוצץ ( .EU יוצת ראשונה לביצוע ע"י יחידת BIUהפקודות ע"י יחידת

o-שתי היחידות האלו מפצלות את עומס עבודת הCPU כדי לעלות את מהירותו ואת יעילותו של המעבד.

Page 12: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

8086אוסף אוגרים של המעבד

ES 16 bitCS 16 bit

SS 16 bit

DS 16 bit

IP 16 bit

AH 8 bit

BH 8 bit

CH 8 bit

DH 8 bit

AL 8 bit

BL 8 bit

CL 8 bit

DL 8 bit

SP 16 bitBP 16 bitSI 16 bitDI 16 bit

FLAGS 16 bit

AX 16 bitBX 16 bit

CX 16 bit

DX 16 bit

Extra SegmentCode Segment

Stack SegmentData SegmentInstruction Pointer

Accumulator

Base RegisterCount RegisterData RegisterStack PointerBase PointerSource Index RegisterDestination Index Register

EU registers16 bit arithmetic

BIU registers(for 20 bit address

generation)

Page 13: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

חלוקת זיכרון למקטעים

FFFFFHSegment Registers

EXTRA

DATA

STACK

CODE

MEMORY

00000H

64K DataSegment

64K Code Segment

CS:0

IP )PC(

SI, BX

SS:0

64K Stack Segment

DS:0

SP

Address DI64K Extra Seg

ES:0

Page 14: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

8086אופן גישה לזיכרון ראשי של המעבד

).CD-ROMכל תוכנית באופן קבוע מאוחסנת בזיכרון משני (דיסקט, דיסק קשיח, •בהזמנת תוכנית לביצוע מערכת הפעלה מעתיקה את התוכנית ,שהוזמנה בשמה , •

מזיכרון משני לזיכרון ראשי ומשם התוכנית ניתנת לגישה מצד המעבד. סיביות וכולל 20 ניתן לגישה ע"י פס כתובות בעל 8086זיכרון ראשי של המעבד •

2^20 = 1 Mbyte סיביות כל תא אחד.8 תאים ברוחב סיביות ובעזרת אוגר אחד 16 בעלי רוחב 8086האוגרים הפנימיים של המעבד •

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

מקטעים) בהם מאוחסנים: 4מספר מוגבל של המקטעים (עד , Data Segment or Extra Segment-ב- , נתוניםCode Segmentתוכנה – ב-

. Stack Segmentמחסנית – ב-מערכת הפעלה מנהלת את הזיכרון וממקמת את כל התוכניות שעולות לביצוע •

) בהתאם.CS, DS, SS, ESבסגמנטים משלהם וטוענת את אוגרי המקטעים ( כל תוכנית שרצה יכולה להשתמש אך ורק בתאי הזיכרון שבתוך המקטעים ולגשת•

סיביות בלבד)16אליהם ע"י אוגרי הצבעה פנימיים של המעבד ( בעלי KBytes 64 = 16^2הגודל המכסימלי של המקטע – •

Page 15: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

אופן גישה לזיכרון ע"י שילוב אוגר מקטע ואוגר הצבעה

סיביות20כתובת פיזית וכוללת כתובת מלאה של התא בזיכרון הראשי נקראת • 16בעל הכתובת הזאת נבנה ע"י זוג אוגרים : אוגר מקטע ואוגר הצבעה ,שכל אחד מהם •

סיביות סיביות עליונות של כתובת התחלתית של המקטע נטענת לאוגר מקטע ע"י מערכת 16•

ונקראת הפעלהכתובת התחלתית של המקטע

•CPU 16 מצביע לתוך המקטעים ע"י אוגרי הצבעה וכתובת זאת )בתוך המקטע( בעלת )Effective Addressכתובת אפקטיבית ( או ) Offsetכתובת יחסית ( סיביות נקראת

טוען תוכן של אוגר CPU סיביות משני האוגרים, ה-20כדי לבנות כתובת פיזית בעלת •המקטע לאוגר

הזזה, מזיז אותה בארבע סיביות כלפי שמאל, מחבר אליו תוכן של אוגר ההצבעה ומפיק את תוצאת החיבור לפס כתובות של המערכת

, משייך את אוגרי ההצבעה למקטעים באופן הבא:ברירת מחדל ,באופן CPUה- • : Code Segment מצביע לתוך IP (Instruction Pointer ) or PC ( Program Counter)אוגר ‹

CS:IP Data Segment : DS:SI, DS:DI, DS:BX מצביעים לתוך SI,DI,BXאוגרים ‹Stack Segment : SS:SP, SS:BP מצביעים לתוך SP,BPאוגרים ‹ String - משתמשים במקטע זה רק לפעולות עם מחרוזות – Extra Segmentאין ברירת מחדל ל- ‹

OperationsDS:BP אפשר לשנות את ברירת המחדל ע"י כתיבת זוג אוגרים בפקודה: •

Page 16: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

דוגמה לחישוב כתובת פיזית

.

Memory

Segment Register

Offset

Physical orAbsolute Address

0

+

CS:

IP

04000H

0056H

40000H

40056H

04000

0056

040056H

CS:IP = 4000:56Logical Address

0FFFFFH

0H

Page 17: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Programmer’s Model of the 8086 CPU

Page 18: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

אופן שימוש באוגרים כלליים

סיביות 16 אוגרים בעלי רוחב 8 כוללת 8086הארכיטקטורה של המעבד הבאות: למתרות כלליות של אחסון נתונים ולמתרות מיוחדות

•AX )accumulator( -- צובר תוצאות של פקודות אריתמטיות•BX )base register( – אוגר הצבעה למקטע הנתונים בזיכרון ראשי –

מחזיק כתובת יחסית של הנתונים •CX )counter( -- משמש כמונה לולאות בפקודהLOOP•DX )data):

לאוגר ‹ )בנוסף הרחבה כאוגר החלק AXמשמש לשמירת אריתמטיות לפעולות ) העליון של התוצאה.

משמש כאוגר אצבעה להתקני קלט/פלט – מחזיק כתובת גישה להתקני קלט/פלט‹•SI & DI )Source Index & Destination Index):

אוגר הצבעה למקטע הנתונים בזיכרון ראשי ‹אוגרי הצבעה למחרוזות‹

•SP )stack pointer(-- אוגר הצבעה לראש המחסנית, משתנה אוטומטית עקב (לא מומלץ לטעון או לשנות אותו ידניתפקודות גישה למחסנית )

•BP )base pointer(אוגר הצבעה לתוך המחסנית – מותר לשימוש חופשי --

Page 19: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

דירוג של שפות תכנות

שפות תכנות מדורגות בשלוש רמות:•High level language שפת – C# , Visual C ,Visual Basic

השפות האלו לא מתייחסות למבנה פנימי של המעבד אלא להיגיון של המשימה בגדול.

•Low level language - Assembly Languageלמבנה פנימי של המעבד ומפרטת למעבד את כל שלבי ביצוע מתייחסתהשפה זו

של המשימה בהתאם לאוסף פקודות של שפת אסמבלי שמוכר למעבד הזה.

•Machine languageשפת מכונה – לביצוע מוכנה וישר בינארי בקוד למספרים מקודדת התוכנית זאת ע"י בשפה

המעבד.מכובה בשפת לפקודה קומפיילר ע"י מתורגמת אסמבלי שפת של פקודה כל

וכוללת Operation Code – OPCODE שדות הבאות: קידוד של פקודה עצמה שניקרא

) כלפיהם מתבצעת את הפקודהOPERANDSומשתנים ( כל תוכנית שכתובה בשפה עלית או בשפת אסמבלי חייבת לעבור תרגום •

לשפת מכונה.

Page 20: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

8086תרגום לשפת מכונה של המעבד

8086 לשפת מכונה של המעבד ASM86תרגום משפת אסמבלי •מתבצעת בשני שלבים :

לזיהוי טעויותListing עם יצירת קובץ TASM Compilerתרגום עצמו ע"י ‹TLINK TASM Linker - וקישור בין חלקי התוכנית ע"י ‹

• TASM/l My_Prog.ASM My_Prog.OBJ , My_Prog.LST • TLINK My_Prog.OBJ My_Prog.EXE

My_Prog.EXE – Executable File

High-levellanguageprogram

Assemblylanguageprogram

Machinelanguageprogram

Compiler Assembler

Page 21: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

שיטות מיעון• Register -אוגר - MOV DX,AX

• Immediate - - מיידיMOV DX,20 ; אופרנט המקור הוא מספר

• Direct – ישיר - TWENTY DW 20h ; גישה לנתון לפי כתובתו MOV DX,TWENTY ; DX 0020h

• Register Indirect - עקיף -MOV DX,[SI] ; גישה לנתון בעזרת אוגרהצבעה

oהכתובת יחסית של התא במקטע בזיכרון הראשי הצבעה זהו ערך באוגרoסוגריים מרובעות [ ] מסמנות מעון עקיף o בברירת מחדל האוגריםBX, DI, SI -מצביעים לתוך ה Data Segment בזוג עם האוגר DSo בברירת מחדל האוגרBP-מצביע לתוך ה Stack Segment בזוג עם האוגר SSo אפשר לשנות את ברירת המחדל ע"י כתיבת זוג בפקודהES:BX; SS:SI

MOV DX,[SS: SI]

• Based Indexed - MOV AX, [BX+DI] גישה לנתון בעזרת זוג אוגרי ; הצבעה

Pair of registers for use: BX+DI; BX+SI; BP+DI; BP+SI

• Based Indexed Plus Displacement - MOV AL, [BP+SI+DISP]

גישה לנתון בעזרת זוג אוגרי הצבעה ועוד היסט מספרי

Page 22: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Data Transfer Instructions

• MOV target, source› reg, reg› mem, reg› reg, mem› mem, immed› reg, immed

שני אופרנטים חייבים להיות באותו גודל•אופרנט המקור יכול להיות :אוגר, תא בזיכרון או קבוע )מספר(•אופרנט המקור יכול להיות :אוגר או תא בזיכרון•אי-אפשר להעביר נתון מתא בזיכרון לתא בזיכרון באופן ישיר•

Page 23: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Data Transfer Instructions – Examples

• MOV Data,67h• MOV AX, [BX]• MOV BX,CS:Data+4• MOV AX,[SS:SI]• MOV AX, [BX+SI+7]• MOV AX,[BP+SI+2]• MOV AX,BL – Impossible• MOV Data1, Data2 – Impossible

Page 24: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

פקודות קפיצה עם תנאי

• JE / JZ Jump equal or jump zero Z=1• JNE / JNZ Jump not equal or jump not zero Z=0

Jump Based on Unsigned Data• JA / JNBE Jump above or jump not below/ equal C=0 & Z=0• JAE / JNB Jump above/ equal or jump not below C=0• JB / JNAE Jump below or jump not above/ equal C=1• JBE / JNA Jump below/ equal or jump not above C=1 or Z=1•

Jump Based on Signed Data • JG / JNLE Jump greater or jump not less/ equal S=0 & Z=0• JGE / JNL Jump greater/ equal or jump not less S=0• JL / JNGE Jump less or jump not greater/ equal S=1• JLE / JNG Jump less/ equal or jump not greater S=1 or Z=1

Page 25: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

דוגמה של תוכנית פשוטה בשפת אסמבלי : מילוי זיכרון ”A “בנתון

SSeg SEGMENT STACK ; Open the Stack Segment DW 50 DUP (?) ; The Stack Size Is 50

WordsSSeg ENDS ; Close the Stack SegmentDSeg SEGMENT ; Open the Data Segment block DB 100 DUP (0) ; Block for Filling bl_length DW 50 ; Number of Data for FillingDSeg ENDS ; Close the Data SegmentCSeg SEGMENT ; Open the Code SegmentASSUME CS: CSeg, DS: DSeg,SS:SSeg main: MOV AX, DSeg MOV DS,AX MOV DI, OFFSET block MOV AL,’A’ MOV CX, bl_lengthnext: MOV [DI],AL INC DI LOOP next INT 3CSeg ENDS ; Close the Code Segment

END main ; End the Program Code

Page 26: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

הייצוג תוכנית בזיכרון ראשי

• Code segment )CS(, which defines the main program or instructions.

• Data segment )DS(, which defines the data you used.

• Stack segment )SS(, which defines the stack.

CS

DS

SS

0100:0000

1750:0000

3230:0000

Address

Page 27: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Directivesהנחיות של שפת אסמבלי -

הנחיות הן לא פקודות לביצוע ע"י המעבד אלא קובעות לקומפיילר

איך לתרגם את התוכנית ואיך לארגן את הזיכרון

• SEGMENTפותח את המקטע ומגדיר את סוגו -- • ENDSסגירת המקטע – • ORGקובע מיקום יחסי של נתון או פקודה בתוך המקטע – • ASSUME משייך את שמו המקטע לאוגר המקטע המתאים – • DB - Define byte הגדרת נתון בגודל - byte• DW - Define wordהגדרת נתון בגודל - word• DD – Define double word - הגדרת נתון בגודל wordכפול • EQU) הגדרת קבוע - Constant ( - מסמן את המקום הנוכחי (כתובת ) בשלב הקומפילציה$ •

Page 28: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

x x x x OF DF IF TF SF ZF x AF x PF x CF

0158086אוגר דגלים של המעבד

) שהוא אוסף של Flag Register כולל אוגר דגלים ( EUיחידת ביצוע דגלי מצב וסיביות בקרה.

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

› -CF Carry Flag- Bit 0 -אם יש גלישה מגודל האוגר1עולה ל › -PF Parity Flag- Bit 2 -אם תוכן של האוגר 1 עולה ל ALזוגי - › -AF Auxiliary Carry Flag- Bit 4 -אם יש גלישה מ-1עולה ל format BCD › -ZF Zero Flag- Bit 6 -0 אם תוצאת הפעולה האריתמטית או הלוגית האחרונה היא 1עולה ל. › -SF Sign Flag- Bit 7 ( מזהה סימן – ערכו כערכה של הסיבית השמאלית MSB של התוצאה )

בפעולות חיבור/חיסור ובפעולות לוגיות.› -TF Single Step Trap Flag- Bit 8 סיבית בקרה – מאפשר ביצוע תוכנית בשלבים › -IF Interrupt Enable Flag- Bit 9 סיבית בקרה – מאפשר קבלת בקשות פסיקה מהחומרה

החיצונית› -DF String Instruction Direction Flag- Bit 10 סיבית בקרה – קובעת כיוון סריקת הזיכרון

בפעולות עם מחרוזות› -OF Overflow Flag- Bit 11 -אם יש גלישה בפעולות אריתמטיות עם מספרים 1עולה ל

מסומנים›Bits 1, 3, 5, 12-15לא מוגדרות –

Page 29: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

ZERO FLAG- דגל האפס1דוגמאות לפעולות שאחריהן דגל האפס יקבל את נערך " ":

:כאשר אנו כותבים את הפקודותDEC CXJZ FINISH

בודקת את מצב הדגל, ועפ"י מצבו מחליטה אם לקפוץ .JZ אנו למעשה נעזרים בדגל האפס,הפקודה

דוגמא נוספת:CMP DL,4JE GOOD

MOV AL,4

SUB AL,4

MOV CL,0FFH

ADD CL,1

0FFH ( לאחר1הוא למעשה )- .0 התשובה היא 1הוספת

תוצאת השוואה משנה את " 1הדגלים, דגל האפס יעלה ל- "

.,מכיוון שקיים שיוויון

MOV DH,5

CMP DH,5

Page 30: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

1באלו מהמקרים הבאים דגל הסימן יעלה ל-" "?

1. MOV DL,0

2. MOV AL,5SUB AL,5

3. MOV AL,0FFHADD AL,1

4. MOV CX,36HCMP CX,’6’

5. MOV AH,-2CMP AH,0FEH

Page 31: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

CARRY FLAGדגל הנשא – 1דוגמאות לפעולות שאחריהן דגל הנשא יקבל את נערך " ":

1111 1111

0001 00000000 0000 1 דגל הנשא

+

OVERFLOW FLAGדגל הגלישה – mov cl,7fh

add cl,5

84שהוא תוצאת , H את הערך CLהפקודה מציבה באוגר

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

mov ah,0ffh

add ah,3

FFH

2 , הערך 2 התשובה היא 3-( ולכן כאשר מוסיפים לו 1שווה בערכו ) מיוצג ולכן דגל הגלישה יהיה 0 לוגי יכול להיות

MOV DL,81H

SUB DL,3

827 נקבל )3אם נפחית ממנו -( . FH 81הוא הערך השלילי של H

לא ניתן להציג ערך כזה באוגרDL.ולכן תהיה גלישה

Page 32: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב
Page 33: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

• AND - Logical And• Usage: AND dest,src dest=dest)and(src• Modifies flags: CF OF PF SF ZF )AF undefined(• Operands • reg,reg • mem,reg • reg,mem • reg,immed • mem,immed • accum,immed • • OR - Inclusive Logical OR• Usage: OR dest,src dest=dest)or(src• Modifies flags: CF OF PF SF ZF )AF undefined(• Operands • reg,reg • mem,reg • reg,mem • reg,immed • mem8,immed8 • mem16,immed16 • accum,immed

Page 34: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

• XOR - Exclusive OR• Usage: XOR dest,src dest=dest)xor(src• Modifies flags: CF OF PF SF ZF )AF undefined(• Operands • reg,reg • mem,reg • reg,mem • reg,immed • mem,immed • accum,immed • • NOT - One's Compliment Negation )Logical NOT(• Usage: NOT dest• Modifies flags: None• Inverts the bits of the "dest" operand forming the 1s complement.• Operands • reg • mem

Page 35: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

• NEG - Two's Complement Negation• Usage: NEG dest• Modifies flags: AF CF OF PF SF ZF• 2מבצע משלים ל- • Operands • reg • mem • • TEST - Test For Bit Pattern• Usage: TEST dest,src• Modifies flags: CF OF PF SF ZF )AF undefined(• אך לא שומרת את הפתרון אלא מעדכנת דגלים בלבד. AND -פקודה זו מבצעת את פעולת ה

.נעדיף להשתמש בפקודה זו לבדיקה של סיבית מסוימת• Operands • reg,reg • reg,mem • mem,reg • reg,immed • mem,immed • accum,immed

4F0H באוגר 1קטע תוכנית הבודקת את הנתון בכתובת בכתובת. אם המספר שלילי יוצב CX באוגר 0 . אם המספר חיובי יוצב CX. • MOV CX,0• TEST BYTE PTR DS:[4F0H],80H• JZ POSITIVE• MOV CX,1• POSITIVE: NOP

Page 36: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

הנחית של שפת אסמבלי להגדרת נתונים

של • באזור המקרים ברוב שמורים תוכנית של Dataנתונים Segment :ומוגדרים בצורה הבאה

•<variable name< DB | DW | DD <value<• V1 DB 25h• V2 DW 28A5h• V3 DB 11001010b

מערך נתונים מוגדר בצורה הבאה:•<arrayname< DB | DW <size<dup (<element<) • Array DB 10 dup(?)<arrayname< DB | DW value1, value2, value3• Integers DB 0, 1, 2, 3, 4

מוגדר בצורה הבאהASCIIמחרוזת נתונים בקוד •• <stringname< DB ‘<string<$’

• String DB “HELLO$”

Page 37: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

אופן שמירת נתונים בזיכרון ראשי

•Word, Double word שמורים בזיכרון בסדר -הפוך

Directive

Data1 DW 35DAh

Data2 DW 256

Data3 DD 1234567H

Bytes in Storage

00000

FFFFFh

Data1

Data2

Data3

DAh

35h

00

01h

67h

45h

23h

01h

Page 38: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Constantsהגדרת קבועים -

• name EQU expression בהמשך התוכניתללא שינויהגדרת קבוע

sample EQU 7Fh ; ערך מספרי message EQU <This is a message> ; מחרוזת

• Name = expression בהמשך התוכנית – ערך מספרי עם שינויהגדרת קבוע

בלבדmax_int = 7FFFhcount = 1count = count * 2

Page 39: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Basic structure of Code Segment

•Code Segment -מקטע שכולל תוכנית מקודדת לביצוע המשימה ע"י המעבד 8086 זוהי אוסף פקודות שמוכרות למעבד ASM86תוכנית בשפת אסמבלי •כל פקודה בנויה לפי תבנית הבאה:•

<Label>:<Mnemonic> <Destination_Operand,Source_Operand> ; <Comment>

•>label name< -תווים , לא מתחיל מספרה , לא מילה שמורה31 - תווית - שם סימבולי קטן מ

•>Mnemonic< 8086 - שם הפקודה מאוסף , מוכר למעבד

•>Destination_Operand,Source_Operand< - שני אופרנטים שמשתתפים בפקודהלאופרנט היעד העברת הנתון תמיד מתבצעת מאופרנט המקור‹בפעולות אריתמטיות/לוגיות תוצאה תמיד נכנסת לאופרנט היעד‹

•>Comment< - טקסט שמלווה את הפקודה אלמנת להסביר תוכנית

• L1: MOV Data_Addr ,86h ;Load number 86h to Data_Addr in Main Memory

Page 40: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

הגדרת תת-שיגרה

<procedure name> PROC {FAR | NEAR}

: : ;***your )main/ sub( program here***

<procedure name> ENDP•<procedure name<חייב להיות מיוחד - •PROCהנחיה לקומפיילר להתחיל תת-שיגרה - •ENDPהנחיה לקומפיילר לסיים תת-שיגרה - •Far-תת-שיגרה נקראת מחוץ ל – Code Segment הנוכחי •Near תת-שיגרה נקראת אותו - Code Segment הנוכחי

Main Program

Proc1 Proc2 Proc3

Page 41: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Segmentation Example: MOV AX,[BX]

MOV Instruction ⇒ DSEffective Address = BXLogical Address = DS:BX = 2100:0123

Page 42: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Segmentation Example: MOV AX,[BX+SI+7]

Page 43: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Segmentation Example: MOV AX,[BP+SI+2]

Page 44: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Change data size operator - ptr

<type< PTR <expression< Operator ptr for change data size definition )from double word to byte or to word for example(

Data DW 1234H

MOV byte ptr Data,55h ; [Data] 1255hMOV AL, byte ptr Data+1 ; AL12h

Page 45: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

פקודת החלפה

• XCHG target, source› reg, reg› reg, mem› mem, regFor example:

DATA DW 20

• XCHG BL, AH• XCHG DATA, AX

אי-אפשר לבצע את XCHG ו- MOVבפקודות •העברת הנתונים בין שני תאי זיכרון

Page 46: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Address Loading Instructions•LEA <reg16>, <EA< ; טעינת כתובת יחסית של הנתון במקטע נתונים לאוגר

הצבעה•MOV <reg16>, offset<data< טעינת כתובת יחסית של הנתון במקטע נתונים ;

לאוגר הצבעה•LDS < reg16>,<Mem32< סיביות ובנוסף אוגר 16; טעינת אוגר הצבעה בעל

בנתון ששמור בזיכרון כדי להכין כתובת DS מקטע חדשה מלאה

LES < reg16>,<Mem32< ; סיביות ובנוסף אוגר 16טעינת אוגר הצבעה בעל בנתון ששמור בזיכרון כדי להכין כתובת ES מקטע

חדשה מלאהDSEG SEGMENT

ORG 10H Data DD 12345670H

------› LDS SI, Data ;SI <= 5670H, DS <=1234H› LEA DI,Data ;DI <=10H offset of Data from Data Segment

Beginning› MOV DI, offset Data ; the same operation

Page 47: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

אופן הגדרת המחסנית בתוכנית

זמני בשלושה • באופן נתונים לשמירת ראשי שמיועדת מזיכרון חלק היא מחסנית מקרים:

PUSHביצוע פקודות שמירה - ‹ procedure callקריאה לתת-שגרות - ‹interrupt executionביצוע פסיקות - ‹

הגדרת גודל המחסנית מתבצעת בהנחיה הבאה:•DW <size of stack< dup)<initial value<(

לדוגמה:Stack_Seg SEGMENT STACK

DW 100h dup(0) Stack_Seg ENDS

המחסנית נוצרת בזמן שהתוכנית עולה לביצוע לזיכרון הראשי••Stack segment register )SS( מקבל ערך התחלתי ממערכת הפעלה - •Stack pointer )SP( המחסנית להגדרת בהתאם המחסנית ראש את קובע -

(SP200h) byte אי-אפשר לשמור נתונים בגודל , word מוגדר כ- 8086רוחב המחסנית במעבד •SP,BP :שני אוגרים מצבעים באופן ברירת מחדל לתוך המחסנית•

מושפע מכל פעולת גישה למחסנית באופן אוטומטיSPאוגר ‹ ניתן להצבעה חופשית בתוך המחסניתBPאוגר ‹

Page 48: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Push,Pop אופן גישה למחסנית עם פקודות

Main Memory

SP=200h

SS

Push Direction

top of stack

00000

FFFFEh

16 bit

Pop Direction

00001

FFFFFh פקודה Pushמאחסנת נתון במחסנית :הפקודה מתבצעת בשני שלבים

SP SP - 2א.SS:SP[ data [ב.

הוצא נתון במחסניתPopפקודה • הפקודה מתבצעת בשני שלבים:•

SS:SP[ data [א.• SP SP + 2ב. •

Page 49: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

פקודות קלט/פלט

כל התקן קלט/פלט מחובר למערכת המיקרופרוססור דרך פורטים בעלי כתובת גישה• אבל מנוצלים הרבה פחות כתובות - FFFFh 0000מסוים. סך הכול מרחב כתובות הוא

תלוי במבנה המערכת

• IN AL, IN_PORT ; סיביות8 סיביות מפורט כניסה בכתובת בעלת 8קליטת נתון בעל • IN AX, IN_PORT ; סיביות8 סיביות מפורט כניסה בכתובת בעלת 16קליטת נתון בעל • MOV DX, IN_PORT ; סיביות16בכתובת גישה לפורט אם הכתובת בעלת DX טעינת אוגר• IN AL, DX סיביות16 סיביות מפורט כניסה בכתובת בעלת 8קליטת נתון בעל ;• IN AX, DX סיביות16 סיביות מפורט כניסה בכתובת בעלת 16קליטת נתון בעל ; • OUT IN_PORT, AL ; סיביות8 סיביות מפורט כניסה בכתובת בעלת 8פליטת נתון בעל • OUT IN_PORT, AX ; סיביות8 סיביות מפורט כניסה בכתובת בעלת 16פליטת נתון בעל • MOV DX,OUT_PORT ; סיביות16בכתובת גישה לפורט אם הכתובת בעלת DX טעינת אוגר• OUT DX, AL ; סיביות16 סיביות מפורט כניסה בכתובת בעלת 8פליטת נתון בעל • OUT DX, AX ; סיביות16 סיביות מפורט כניסה בכתובת בעלת 16פליטת נתון בעל

Page 50: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

)Additionפקודות אריתמטיות – חיבור(

ADD dest, source ; חיבור בין שני נתונים ADC dest, source ; חיבור בין שני נתונים ועוד סיבית הנשא INC dest ; לתוכן האוגר או תא בזיכרון1הוספת DAA ; Decimal adjust for addition

Package BCD )הפקודה מתקנת את תוצאת החיבור בין שני מספרים בצופן בלבדALהפקודה מתבצעת כלפי אוגר ( .Package BCDלצופן

AAA ; ASCII adjust for addition לצופן ASCII)הפקודה מתקנת את תוצאת החיבור בין שני מספרים בצופן

Un-package BCD ) הפקודה מתלעת כלפי אוגרALבלבד

Page 51: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Addition Example for Package BCD data

Data 1 DB 52H ;Data 2 DB 89H ; Result DW 0 ; 0141H………………………….. 52HMOV AL, Data1 + 89H ADD AL, Data2 EBhDAA + )6()6( MOV byte ptr RESULT,AL 0141HADC byte ptr RESULT+1,0

Page 52: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Addition Example for ASCII data

Data 1 DB ‘8’ ;38H Data 2 DB ‘7’ ;37HResult DW 0 ; ’17’ = 3135H…………………………..MOV AL, Data1 38HADD AL, Data2 +37H

6FhAAA ; AX 0105HADD AX,3030h ; AX 3135H )’15’(MOV RESULT,AX

Page 53: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Addition Example – Sum of Block

BLOCK DW 8H, 407H, 1054H, 8DH, 4AC2HOREH DW 5RESULT DD 0-------------------------------------------------------------------

LEA SI, BLOCK MOV CX,OREHNEXT: MOV AX, [SI] ADD WORD PTR RESULT,AX ADC WORD PTR RESULT+2,0 INC SI INC SI LOOP NEXT

Page 54: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

)Subtractionפקודות אריתמטיות – חיסור(

• SUB dest, source חיסור בין שני נתונים ;• SBB dest, source חיסור בין שני נתונים עם מלווה ;• DEC dest מתוכן האוגר או תא בזיכרון1החסר ;• DAS ;Decimal adjust for subtract

)הפקודה מתקנת את תוצאת החיבור בין שני (BCD לצופן BCDמספרים בצופן

בלבדALהפקודה מתבצעת כלפי אוגר • AAS ;ASCII adjust for subtract

)הפקודה מתקנת את תוצאת החיבור בין שני (Un-package BCD לצופן ASCII מספרים בצופן

בלבדALהפקודה מתלעת כלפי אוגר • NEG dest ;dest<= - dest• CMP dest, source השווה בין המקור לבין היעד ללא שינוי ;

היעד הפקודה מעדכנת דגלים בהתאם לתוצאת ההשוואה

שני האופרנטים חייבים להיות באותו גודל

Page 55: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

MUL andפקודות אריתמטיות – כפל וחילוק (DIV(

• MUL {<register> | <memory>}; כפל בין שני מספרים לא מסומנים

• IMUL {<register> | <memory>}; -כפל בין שני מספרים מסומנים 2בשיטה משלים ל AX <= AL * source )source = 8 bit(

DX:AX <= AX * source )source = 16 bit(• DIV {<register> | <memory>} ; חילוק בין שני מספרים לא מסומנים • IDIV {<register> | <memory>} ; חילוק בין שני מספרים מסומנים בשיטה משלים

2ל- AL< = חלק שלם )AX / source( , AH<=שארית; source = 8 bit

AX = חלק שלם ) DX:AX / source(, DX <= שארית; source = 16 bit• AAM ; Adjust AL for multiplication –

בלבד (ALכלפי אוגר אחרי הכפל )Un-package BCD המרת מספר בינארי לצופן • AAD ;Adjust AX for division

בלבד (ALכלפי אוגר למספר בינארי לפני החילוק )Un-package BCD המרת מספר בצופן

• CBW ; convert byte to word for signed division• CWD ; convert word to double word for signed division

Page 56: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

MUL andפקודות אריתמטיות – כפל וחילוק (DIV(

• 1מכפיל הפקודה תוצאה 2מכפיל

• MUL CL ; CL (byte) * AL => AX• MUL BX ; BX (word) * AX => DX : AX

• ארית חלק שלם מחבה מונה הפקודה

• DIV CL ; AX / CL (byte) => AL AH• DIV BX ; DX: AX / BX (word)=> AX DX

Page 57: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

פקודות קפיצה

• Unconditional Jump Instruction

• JMP {<address> | <label> | <register>} o Long Jump in Code Segment– במקטע שהוא כל למקום ערוכה קפיצה

פקודות

• Conditional Jump Instruction

• JXX {<address> | <label>}o Short Jump Instructions – + בתים ממקום 128 -127קפיצה קצרה להיסט

הפקודה

Page 58: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

2פקודות קפיצה עם תנאי -

Arithmetic Jump

• JS Jump sign S=1• JNS Jump no sign S=0• JC Jump carry C=1• JNC Jump no carry C=0• JO Jump overflow O=1• JNO Jump not overflow O=0• JP / JPE Jump parity even P=1• JNP / JPO Jump parity oddP=0• LOOP <label<• The LOOP instruction, which serves the above purpose,

requires an initial value in the CX register. It will decrement the CX register and branches to the target location if the CX register does not contain 0.

Page 59: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Push,Popפקודות גישה למחסנית –

MAIN MEMORY

SP<=top of stack

1234h

SS

Push Direction

next elementto be pushed

00000

FFFFE h

16 bit

5679h

LSBMSB

00001

Pop DirectionFFFFF h

12 34

56 79Mov AX,1234hMov BX,5679hPush AXPush BX

Page 60: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

קריאה לתת-שיגרה

• CALL <label>• RET <immediate>• <procedure name< PROC {FAR | NEAR}• : : ***your )main/ sub( program here***

» RET (RET n)• <procedure name< ENDP

• The CALL instructions take the same forms as the JMP instructions • The return RET instruction returns control to the caller of a

subroutine. It does so by popping the return address off the stack and transferring control to the instruction at the return address. Near call returns pop a 16-bit return address off the stack into the IP register. A far call returns pop a 16-bit offset into the IP register and a 16-bit segment value into the CS register.

Page 61: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

CALL procedure

• The FAR CALL instruction does the following:• .Pushes the CS register onto the stack.• .Pushes the 16-bit offset of the next instruction following the

call onto the stack.• .Copies the 32-bit effective address into the CS:IP register.• .Execution continues at the first instruction of the subroutine.

• The NEAR CALL instruction does the following:• .Pushes the 16-bit offset of the next instruction following the

call onto the stack.• .Copies the 16-bit effective address into the IP register.• .Execution continues at the first instruction of the subroutine.

Page 62: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Simple Logic Function

• . The instructions for Boolean logic are AND, OR, XOR, and NOT. The syntax are:

• AND {register| memory} , {register | memory | immediate}• OR {register| memory} , {register | memory | immediate}• XOR {register | memory} , {register | memory | immediate}• NOT {register | memory}• TEST { register | memory} , {register | memory | immediate}

The TEST Instruction executes the AND Operation without changing the Destination Operand – only sets the Status Flags (Zero Flag)

Page 63: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Rotate & Shift Instructions

• Commands Explanation

• SHL {<register<, <memory<}, {1 | CL} ;Shift Left• SHR {<register<, <memory<}, {1 | CL} ;Shift Right• SAL {<register<, <memory<}, {1 | CL} ;Shift arithmetic left• SAR {<register<, <memory<}, {1 | CL}; Shift arithmetic right• ROL {<register<, <memory<}, {1 | CL};Rotation to left• ROR {<register<, <memory<}, {1 | CL};Rotation to right• RCL {<register<, <memory<}, {1 | CL}; Rotation through

carry bit left• RCR {<register<, <memory<}, {1 | CL};Rotation through

carry bit right

Page 64: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Rotate & Shift Instructions

0C

C

C

C0

C

C

C0

SHL/ SAL SHR

RORROL

RCL RCR

SAR

Page 65: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

String Operations• String - Array of characters )byte or word(• DS:SI - Source array• ES:DI - Destination array• DF )Direction Flag( indicates if SI and DI are to be incremented )0( or• decremented )1( after operation• Byte operations increment/decrement by 1; Word - by 2.• CLD/STD - Clear/Set DF flag• MOVSB / MOVSW - Move byte/word at DS:SI location to ES:DI location• LODSB / LODSW - Load AL/AX with byte/word at DS:SI location• STOSB / STOSW - Store byte/word from AL/AX to ES:DI location• CMPSB / CMPSW - Compare the two bytes/words

› Flags are set based on source )DS:SI( minus destination )ES:DI(• SCASB / SCASW - Compare byte/word in AL/AX to that at location ES:DI

Page 66: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Repetitive String OperationsRepeat string operation using CX to indicate how many timesREP xx - where xx is a string operationREPE / REPZ xx - where xx is compare or scan; repeat xx until

CX = 0 or ZF=0 where ZF set by comparison.REPNE / REPNZ xx - where xx is compare or scan; repeat xx until CX = 0 or ZF =1 by comparison

Compare character by character:STRNG1 DB 5 DUP)?(STRNG2 DB 5 DUP)?( MOV CX,5 LEA SI,STRNG1 ;STRNG1 in DS LEA DI,STRNG2 ;STRNG2 in ES REPE CMPSB JE EQL JB NEQLEQL: ... ;What to do if two are equalNEQ ... ;What to do if two are not equal

Page 67: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Interrupt Instruction

• Interrupts execution of a program so that system can take special action.

› INT <interrupt number<• INT instruction calls the system routines and other special

subroutines )make a system call(. The system supports a maximum of 256 different interrupt service routines.

• The CPU provides a 256 entry interrupt vector table beginning at address 0:0 in memory. This is a 1K table containing a 256 4-byte entries. Each entry in this table contains a segmented address that points at the interrupt service routine in memory. Generally, we will refer to interrupts by their interrupt value, so interrupt INT 0 address is at memory location 0:0, interrupt INT 1 address is at address 0:4, etc.

Page 68: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Interrupt Types

• There are 3 Different Types of Interrups:• 1. System Interrupt ) Called by System – Divide 0 for example(• 2. Software Interrupts ) Called by Instruction INT <n< -

BIOS,DOS(• 3. Hardware Interrupt ) Called by Interrupt Request from

External • Source used Interrupt Controller by Intr Pin of the

Microprocessor Chip(

• The CLI )clear Interrupt Flag( instruction tells the assembler to prevent any hardware interrupt from this point

• The STI )set Interrupt Flag( instruction allows any hardware interrupt raised

Page 69: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Interrupt Execution

When an interrupt occurs, the CPU does the following:

• 1. The CPU pushes the flags register onto the stack.• 2. The CPU pushes a far return address )CS:IP( onto the stack,• segment value first.• 3. The CPU determines the interrupt number and fetches • four-byte interrupt vector from the correspondence address.• 4. The CPU transfers control to the routine specified by• the interrupt vector table entry. After the completion of the steps, the interrupt service routine takes control. When the interrupt service routine wants to return the control, it must execute an IRET (interrupt return) instruction. The interrupt return, similar as RET instruction, pops the far return address and the flags off the stack

Page 70: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Writing the Interrupt Service Routine - ISR

• The ISR has a very special restriction: they must preserve the state of the CPU. In particular, these ISRs must preserve all registers they modify. For example,

• SimpleISR PROC FAR

• PUSH AX

• MOV AX, 0

• …

• …

• POP AX

• IRET

• SimpleISR ENDP

Page 71: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

BIOS Interrupts  BIOS interrupt: it uses the INT instruction to transfer the control directly to BIOS.

• BIOS Interrupts service the simply IO Operations:› Video Display Services -- INT 10h› Serial Port )COM( Services -- INT 14h› Keyboard Read Services – INT 16h› Timer and Real-Time Clock Services – 1Ah

• Every Type) <n< ( of BIOS Interrupts provides the set of the Functions for different IO operations.• The service number of the Function loaded to AH register for operation’s

definition• There are numbers of the functions which needed the Input Parameters

load to Processor Registers • There are numbers of the functions which return the Output Parameters

to Processor Registers • There are numbers of the functions which needed the Input Parameters

and return the Output Parameters

Page 72: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

BIOS interrupt for Video Display - INT 10h

Service No. Explanation 00h Set video mode 02h Set cursor position 06h Scroll window up 08h Read character and attribute at cursor position 09h Write character and attribute at cursor position 0Ch Write pixel 0Fh Get video mode

•some service for screen handling, with different service number

Page 73: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

Text mode video

Page 74: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

BIOS Interrupt Example• Screen Window Creating ,Coloring and Scrolling using BIOS

interrupt INT 10h Service 06h

Registers Input Parameter -Purpose Initial Value

AH Interrupt Service Code 06h

AL Number of lines scrolled up 00 for full screen, other constant for number of lines

BH Specify the color See below

CH Starting row Any value )Suggestion: 00 for full screen(

CL Starting column Any value )Suggestion: 00 for full screen(

DH Ending row Any value )Suggestion: 18h for full screen(

DL Ending column Any value )Suggestion: 4Fh for full screen (

I

7 6 5 4 3 2 1 0

blinking bit

Background color bits

Foreground color bits

r g b r g br - redg - greenb – blueI - intencityB - blinking

B

Internal structure for color definition - VGA Attribute Byte

Page 75: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

BIOS Interrupt Example

• This example would create a window at the center of the • screen with its own parameters • WINDOW PROC NEAR

MOV AH, 06hMOV AL, 00hMOV BH, 01000001b ;red/blueMOV CX, 0A1Ch ;top coordinatesMOV DX, 0E34h ;lower

coordinatesINT 10hRET

WINDOW ENDP

Page 76: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

DOS Interrupt - INT 21h• DOS interrupt: it uses the INT instruction to transfer the control

directly to DOS. As DOS is portable to any PC machine, DOS interrupt can be used in any I/O devices.

• Interrupt 21h provides some service for keyboard and screen handling, with different service number.

• For Example:

Service No. Explanation 01h Keyboard input with echo 02h Display output 07h Keyboard input without echo )no check for Ctrl-C( 08h Keyboard input without echo )check for Ctrl-C( 09h Display string 0Ah Receive String from Keyboard 4Ch Terminate program – Return to DOS

Page 77: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

DOS Interrupt Examples• Read a character from keyboard buffer & display the char on screen:

› MOV AH, 01h› INT 21h› AL<= ASCII Code of the pressed Key (Output Parameter(

• Input a String from keyboard & display the string on screen:

DATA_SEG SEGMENTNAMESTRING DB 10, ?, 10 dup (?)DATA_SEG ENDSCODE_SEG SEGMENT

ASSUME CS: CODE_SEG, DS: DATA_SEGMOV AH, 0Ah

LEA DX, NAMESTRING INT 21h CODE_SEG ENDS

NAMESTRING[0] – Input Parameter – Max Number of The Characters in the String

NAMESTRING[1] – Output Parameter – Real Number or The Characters was pressed

NAMESTRING[2] – String Buffer Beginning for input string saving

Page 78: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

של תוויםASCIIטבלת

• CR = “carriage return” (Windows: move to beginning of line)• LF = “line feed” (Windows: move directly one line below)• SPC = “blank space”

Page 79: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

BCDהצגת מספרים עשרוניים בקוד

•BCD format ) סיביות בינאריות4 ) מוצגת ע"י 9 – 0 – כל ספרה עשרונית

•Unpackaged BCD format - ) 1 ) מוצגת ע"י 9..0כל ספרה עשרונית byte

5 <= 00000101b 58 <= 00000101 00001000b

•Packaged BCD format - 1ספרות עשרונית מוצגות ע"י שתי byte

58 <= 0101 1000b

Unpackaged BCD formatהמרת נתון שהוא ספרה עשרונית מ- •ASCII formatל-

5 <= 00110000b+00000101b =00110101b = 35h=‘5’

Page 80: מרכיבים עיקריים של מערכת מבוססת מיקרו מחשב

8086 CPU Block Diagram

AHAL

BHBL

CHCL

DHDL

SP

BP

SI

DI

ES – Extra Segment

CS – Code Segment

SS – Stack Segment

DS – Data Segment

IP –Instruction Pointer

6

5

4

3

2

1

ARITHMETIC – LOGIC UNIT

OPERANDS

FLAG REGISTER

+

Instruction Stream Byte

Queue

BIU – BusInterface Unit

EU Execution Unit

I/0 AND MAIN MEMORY INTERFACE

INTERNAL BUS

OPCODE DECODER

+

Addr generationBus Controller