+ All Categories
Home > Documents > Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ...

Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ...

Date post: 26-Jul-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
80
Lecture 4 סט פקודות של8051 טסליצקי מרקwww.elecstudy.org [email protected]
Transcript
Page 1: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

Lecture 4

8051סט פקודות של

www.elecstudy.orgטסליצקי מרק [email protected]

Page 2: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

2

8051סט פקודות של

מבוא

ארכיטקטורה וארגון זיכרון שלCIP-51.

אפשרויות גישה.

➢Register addressingגישה דרך אוגרים.

➢Direct addressingגישה ישירה.

➢Indirect addressingגישה לא ישירה.

➢Immediate constant addressingגישה בעזרת קבועים מיידיים .

➢Relative addressingגישה לפי כתובת יחסית.

➢Absolute addressingגישה לפי כתובת מוחלטת .

➢Long addressingגישה לפי כתובת ארוכה.

➢Indexed addressing ממוספרת"גישה."

סוגי פקודות.

. פקודות אריתמטיות➢

.פקודות לוגיות➢

.פקודות להעברת נתונים➢

.פקודות משתנים בוליאניים➢

.פקודות קפיצה➢

www.elecstudy.orgטסליצקי מרק [email protected]

Page 3: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

3

מבוא

פקודת מחשב בנויה מקוד הפעלה(op-code) , או לא )ואחריו באים

.אופרנדים לפי סוג הפקודה( באים

לפיop-codeכמה אופרנדים באים ולפי , ניתן לדעת מהו סוג הפקודה

. אופרנדים יודעים מה הוא מקור ומה הוא היעד

אופרנדים יכולים להיות:

.ערכים עצמם➢

.אוגרים➢

.זיכרון➢

.פורטים➢

במידה ופקודה באה עם יותר מאופרנד בודד פורמט שלה תמיד יהיה

:בצורה הבאה

Instruction Destination, Source

www.elecstudy.orgטסליצקי מרק [email protected]

Page 4: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

4

CIP-51ארכיטקטורה של

www.elecstudy.orgטסליצקי מרק [email protected]

Page 5: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

5

ארגון הזיכרון

ארגון הזיכרון של

C8051F020

דומה לארגון

8051הזיכרון של

. סטנדרטי

קוד ונתונים

נמצאים באותו

אך , מרחב זיכרון

צורת הגישה היא

. שונה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 6: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

6

.זיכרון פנימי

www.elecstudy.orgטסליצקי מרק [email protected]

Page 7: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

7

. SFRאוגרים מיוחדים

F8 SPI0CN PCA0H PCA0CPH0 PCA0CPH1 PCA0CPH2 PCA0CPH3 PCA0CPH4 WDTCN

F0 B SCON1 SBUF1 SADDR1 TL4 TH4 EIP1 EIP2

E8 ADC0CN PCA0L PCA0CPL0 PCA0CPL1 PCA0CPL2 PCA0CPL3 PCA0CPL4 RSTSRC

E0 ACC XBR0 XBR1 XBR2 RCAP4L RCAP4H EIE1 EIE2

D8 PCA0CN PCA0MD PCA0M0 PCA0CPM1 PCA0CPM2PCA0CPM

3

PCA0CPM

4

D0 PSW REF0CN DAC0L DAC0H DAC0CN DAC1L DAC1H DAC1CN

C8 T2CON T4CON RCAP2L RCAP2H TL2 TH2 SMB0CR

C0SMB0CN

SMB0ST

ASMB0DAT SMB0ADR ADC0GTL ADC0GTH ADC0LTL ADC0LTH

B8 IP SADEN0 AMX0CF AMX0SL ADC0CF P1MDIN ADC0L ADC0H

B0 P3 OSCXCN OSCICN P74OUT FLSCL FLACL

A8 IE SADDR0 ADC1CN ADC1CF AMX1SL P3IF SADEN1 EMI0CN

A0 P2 EMI0TC EMI0CF P0MDOUT P1MDOUT P2MDOUT P3MDOUT

98 SCON0 SBUF0 SPI0CFG SPIODAT ADC1 SPI0CKR CPT0CN CPT1CN

90 P1 TMR3CN TMR3RLL TMR3RLH TMR3L TMR3H P7

88 TCON TMOD TL0 TL1 TH0 TH1 CKCON PSCTL

80 P0 SP DPL DPH P4 P5 P6 PCON

0(8)

Bit

addressable

1(9) 2(A) 3(B) 4(C) 5(D) 6(E) 7(F)

www.elecstudy.orgטסליצקי מרק [email protected]

Page 8: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

8

.אפשרויות גישה

במיקרו בקרC8051F020 אפשרויות גישה8ישנם.

.אפשרויות גישה דוגמא

Register MOV A, B

Direct MOV 30H,A

Indirect ADD A,@R0

Immediate Constant ADD A,#80H

Relative* SJMP AHEAD

Absolute* AJMP BACK

Long* LJMP FAR_AHEAD

Indexed MOVC A,@A+PC

* Related to program branching instructions

www.elecstudy.orgטסליצקי מרק [email protected]

Page 9: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

9

Register Addressingגישה דרך אוגרים

גישה דרך אוגרים מאפשרת העברת מידע בין אוגר לאוגר .

לדוגמא

MOV R0, A

0הפקודה מעבירה תוכן המצבר לתוך אוגרR .בחירת בנק

(Bank 0, 1, 2 or 3)נעשה לפני פקודה הזאת .

www.elecstudy.orgטסליצקי מרק [email protected]

Page 10: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

10

Direct Addressingגישה ישירה

כינוי"י כתובת של זיכרון או שם "צורה הזאת מאפשרת עברת נתונים ע "

. ”C8051F020.inc“רשומים בתוך קובץ " כינויים. "של פורטים

דוגמא:

MOV A, P3

למצבר3מעבירים תוכן של פורט

MOV A, 020H

לתוך מצברRAMשל זיכרון הקסה20מעבירים תוכן של תא מספר

www.elecstudy.orgטסליצקי מרק [email protected]

Page 11: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

11

Indirect Addressing (עקיפה)גישה לא ישירה

גישה הזאת משתמשת במצביע כדי לשמור כתובת אפקטיבית של.אופרנד

רק אוגריםR0, R1 ואוגרDPTRמיועדים לצורת העבודה הזאת .

אוגריםR0, R1 סיביות ואוגר 8יכולים להצביע על כתובתDPTR יכול. סיביות16להצביע על כתובת

דוגמא:

MOV @R0,A

(60Hלדוגמא )מצביע עליו 0Rהתוכן של המצבר מועבר לתוכן שאוגר

MOVX A,@DPTR

.מועבר למצבר( 1234Hלדוגמא )מצביע עליו DPTRתוכן של תא שאוגר

www.elecstudy.orgטסליצקי מרק [email protected]

Page 12: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

12

Immediate Constant Addressingגישה בעזרת קבועים מיידיים

וזה תלוי בסוג , סיביות16או 8ניתן להשתמש בקבועים באורך. אופרנדים

אוגר היעד צריך להיות באותו גודל כמו הקבוע שמעתיקים עליו .

דוגמא:

ADD A,#030H

(.סיביות8שהוא גם )לאוגר ( סיביות8)30Hהוספת ערך

MOV DPTR,#0FE00H

(. סיביות16שהוא גם )DPTRלמצביע ( סיביות16)FE00Hהעברת ערך

www.elecstudy.orgטסליצקי מרק [email protected]

Page 13: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

13

Relative Addressingגישה לפי כתובת יחסית

צורה הזאת שימושית בפקודות מסוג קפיצות במרחקים קצרים .

SJMP (short jump) ,JNZ

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

בית קדימה או לא 127-כתובת ביעד צריכה להיות במרחק לא יותר מ

של הפקודה שאסתעקב כך , אחרוה מהפקודה הנוכחית128-יותר מ

228הוא = 256.

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

.רחוקה יותר

דוגמא:

GoBack: DEC A ;Decrement A

JNZ GoBack ;If A is not zero, loop back

www.elecstudy.orgטסליצקי מרק [email protected]

Page 14: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

14

Absolute Addressingי כתובת מוחלטת"גישה ע .

פקודות שעובדות לפי צורה הזאת2ישנם :ACALLו-AJMP .

בית כל אחד ומצביעות על כתובת מוחלטת 2פקודות האלה תופסות

. סיביות בתור אופרנד11באורך

5 הן –סיביות לא ניתנות לגישה או לשינוי 16סיביות עליונות מתוך

( . K2. )תאים2048עקב כך שזיכרון מוגבל ל, תמיד אפסים

דוגמא:

ACALL PORT_INIT

PORT_INIT צריכה להיות במרחק שלK2

PORT_INIT: MOV P0, #0FH

PORT_INITקפיצה לתת שגרה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 15: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

15

Long Addressing גישה לכתובת ארוכה

י פקודות "צורה הזאת ממומשת עLCALLו-LJMP .

בית אחרונים מכילים כתובת היעד 2-בית ו3פקודות האלה הן באורך

.סיביות16לקפיצה של

64זה מאפשר עבודה עם אזור זיכרון של K.

תוכנה תמיד תקפוץ למיקום שצוין באופן מוחלט ולא משנה באיזה מקום

. היא הייתה

דוגמא:

LCALL TIMER_INIT

\\;()Timer_Init: נראת כךCפקודה שבשפת

TIMER_INIT: ORL TMOD,#01H ;TIMER_INIT תת שגרה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 16: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

16

Indexed Addressing" ממוספרת"גישה

(. רצף" )טבלה"כאשר מדובר בנתונים סדרתיים שנמצאים ב, משתמשים בגישה הזאת

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

סכום של שני נתונים האלה נותן כתובת אפקטיבית לפקודותJMPו-MOVC .

דוגמא:MOV A,#08H כתובת של נתון מתחילת הטבלה;

MOV DPTR,#01F00H כתובת של הטבלה;

MOVC A,@A+DPTR מצבר מקבל נתון ששני אוגרים מצביעים עליו;

1לאחר הפעלת הקוד שכתוב כאן נתון שנמצא בכתובתF08H (1F00H+08H) יועבר. למצבר

www.elecstudy.orgטסליצקי מרק [email protected]

Page 17: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

17

:סוגי פקודות

במיקרו בקרC8051F020 סוגי פקודות5ישנם:

Arithmetic operationsפעולות אריתמטיות ➢

Logical operationsפעולות לוגיות ➢

Data transfer operationsפעולות עברת נתונים ➢

Boolean variable operationsפעולות עם משתנים בוליאניים ➢

Program branching operationsפעולות קפיצה בתוכנה ➢

www.elecstudy.orgטסליצקי מרק [email protected]

Page 18: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

18

:פעולות אריתמטיות

בהתאם לתוצאת הפקודה

דגלים מסוימים בתוך אוגר

יכולים PSWדגלים

, לדוגמא דגל נשא: להשתנות

. 'דגל אפס וכו

כאשר כתוב@Ri– מדובר עלמצביע על אזור הזיכרון

0Rשמבצעים בעזרת אוגרים .1R-ו

כאשר כתובRn מדובר עלשנמצאים R0-R7האוגרים

בתוך בנק האוגרים הנבחר .מראש

www.elecstudy.orgטסליצקי מרק [email protected]

Page 19: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

19

.פעולות לוגיות

פעולות מבצעות פעולותבוליאניות סיבית על

,AND, OR). סיביתXOR, and NOT)

דוגמאות:

ANL A, #02H

במצבר כל 1משירים סיבית היתר מאפסים

ORL TCON, A

TCONלוגי בין ORפעולות

ומצבר עם הכנסת תוצאה .TCONלתוך

www.elecstudy.orgטסליצקי מרק [email protected]

Page 20: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

20

פקודות להעברת נתונים Data Transfer Instructions

העברת נתונים מתבצעת כדי להעביר

פנימי לאוגרים מיוחדים ללא RAMנתונים מ

.שימוש במצבר

בנוסף יש אפשרות להעביר נתונים בין

RAMפנימי ל-RAM חיצוני בעזרת גישה

. עקיפה

128 בית עליונים שלRAM ניתנים לגישה

אך ורק בגישה אקיפה וגישה לאוגרים

שנמצאים באזור הזה ניתנים SFRמיוחדים

. לגישה רק דרך גישה ישירה

Mnemonic Description

MOV @Ri, direct [@Ri] = [direct]

MOV @Ri, #data [@Ri] = immediate data

MOV DPTR, #data 16 [DPTR] = immediate data

MOVC A,@A+DPTR A = Code byte from [@A+DPTR]

MOVC A,@A+PC A = Code byte from [@A+PC]

MOVX A,@Ri A = Data byte from external ram [@Ri]

MOVX A,@DPTR A = Data byte from external ram [@DPTR]

MOVX @Ri, A External[@Ri] = A

MOVX @DPTR,A External[@DPTR] = A

PUSH direct Push into stack

POP direct Pop from stack

XCH A,Rn A = [Rn], [Rn] = A

XCH A, direct A = [direct], [direct] = A

XCH A, @Ri A = [@Rn], [@Rn] = A

XCHD A,@Ri Exchange low order digits

www.elecstudy.orgטסליצקי מרק [email protected]

Page 21: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

21

Boolean Variable Instructionsפקודות בוליאניות

מיקרו בקרC8051F020 יכול לבצע. פעולות עם סיביות בודדות

וגם, או, לאתחל, לאפס: פקודות האלה הן ,. הפיכה לוגית

בנוסף ישנה אפשרות להעברת סיביות.וקפיצות שונות בהתאם למצב סיביות

כל פעולות עם סיביות דורשות גישה ישירה .

דוגמאות:

SETB TR0 ; 0לאתחל טיימר .

POLL: JNB TR0, POLL

; 0-שווה ל0להיות בלולאה כל עוד טיימר

Mnemonic Description

CLR C Clear C

CLR bit Clear direct bit

SETB C Set C

SETB bit Set direct bit

CPL C Complement c

CPL bit Complement direct bit

ANL C,bit AND bit with C

ANL C,/bit AND NOT bit with C

ORL C,bit OR bit with C

ORL C,/bit OR NOT bit with C

MOV C,bit MOV bit to C

MOV bit,C MOV C to bit

JC rel Jump if C set

JNC rel Jump if C not set

JB bit,rel Jump if specified bit set

JNB bit,rel Jump if specified bit not set

JBC bit,relif specified bit set then clear it and

jump

www.elecstudy.orgטסליצקי מרק [email protected]

Page 22: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

22

Program Branching Instructionsפקודות קפיצה

פקודות קפיצה מבצעים העברה

למקום מסוים של קוד עם או ללא

. תנאי מסוים

ישנם פקודות להפעלת שגרות ,

, חזרות משגרות או פסיקות

קפיצות לפי כתובת יחסית או לפי

קפיצות בהתאם , כתובת מוחלטת

.לתנאי בדיקה

Mnemonic Description

ACALL addr11 Absolute subroutine call

LCALL addr16 Long subroutine call

RET Return from subroutine

RETI Return from interrupt

AJMP addr11 Absolute jump

LJMP addr16 Long jump

SJMP rel Short jump

JMP @A+DPTR Jump indirect

JZ rel Jump if A=0

JNZ rel Jump if A NOT=0

CJNE A,direct,rel

Compare and Jump if Not EqualCJNE A,#data,rel

CJNE Rn,#data,rel

CJNE @Ri,#data,rel

DJNZ Rn,relDecrement and Jump if Not Zero

DJNZ direct,rel

NOP No Operation

www.elecstudy.orgטסליצקי מרק [email protected]

Page 23: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

.פירות פקודות

8051 Instruction

www.elecstudy.orgטסליצקי מרק [email protected]

Page 24: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

24

Arithmetic Operationsפקודות אריתמטיות

במידה וכתוב

[@Ri] מדובר על

0Rתוכן שאוגרים

מצביעים 1Rאו

. עליו

במידה וכתובRn

מדובר על אוגרים

R0-R7 מהבנק

.שנבחר מראש

www.elecstudy.orgטסליצקי מרק [email protected]

Page 25: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

25

ADD A,<בית מקור> ADDC A,<בית מקור>

פקודהADD מוסיפה תוכן של בית מקור למצבר ומשנה תוכן של

. בית מקור נשאר ללא שינוי. המצבר

פקודהADDC מוסיפה תוכן של בית מקור לערך של סיבית נשאC וכל

. בית מקור נשאר ללא שינוי. זה למצבר ומשנה תוכן של המצבר

דגל נשא : תוצאת הפעולות האלה יכולות לשנות אוגרים הבאים(CY) ,

דגלים האלה נמצאים . (OV)ודגל מילוי יתר (AC)דגל נשא נוסף

PSW( .Program Status Word .)באוגר

➢CY=1 אחרת מתאפס1-דגל נשא עולה ל7אם הייה מילוי יתר מסיבית.

➢AC =1 זאת אומרת )סיביות נמוכות של בית של מצבר 4אם הייה מילוי יתר מ

. אחרת מתאפס, 1-דגל נשא עזר עולה ל( 3מסיבית

➢OV=1 אם תוצאה מסומנת לא יכולה להיכנס לאופרנד היעד דגל מילוי יתר

. אחרת הוא מתאפס1-עולה ל

www.elecstudy.orgטסליצקי מרק [email protected]

Page 26: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

26

SUBB A,< בית מקור >

פקודהSUBB בדומה לפקודהADDC מחסירה ערך של בית מקור וערך של נשא

. מהתוכן של מצבר ומכניסה ערך חדש לתוך המצבר ומשנה דגלים הרלוונטייםCY=1 אחרת מתאפס1-דגל זה עולה ל7במידה ויש צורך בנשא לסיבית מספר.

AC =1 אחרת מתאפס1-דגל זה עולה ל3במידה ויש צורך בנשא לסיבית מספר.

OV=1 או לסיבית , 6אבל לא לסיבית מספר 7במידה ויש צורך בנשא לסיבית מספר

.אחרת מתאפס1-דגל זה עולה ל, 7ולא לסיבית מספר 6מספר

דוגמא:

(. CY=1)1-ודגל נשא שווה ל40Hמכיל ערך 1Rאוגר , 0C1Hמצבר מכיל ערך

: לאחר פקודה

SUBB A, R1

: ומצב הדגלים יהיה70H-ערך של מצבר ישתנה ל, לא ישתנה1Rערך של

CY=0 AC=0 OV=1

www.elecstudy.orgטסליצקי מרק [email protected]

Page 27: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

27

INC <יעד >

אוגר או אוגר שמצביע על תא של זיכרון, תוכן של תא1-מעלה ב.

:דוגמא

INC 6FH

הערך של תא לאחר ביצוע פקודה ישתנה 30Hמכיל ערך 6FHבמידה ותא בכתובת

.31Hלערך

Example:

MOV R1, #5E

INC R1

INC @R1

1התוכן שלR יהיהE5 ,לערך 1-לאחר פקודה שנייה התוכן של אוגר יעלה בF5 .

. 1-מצביע עליו יעלה ב1Rהפנימי שאוגר RAM-תוכן של תא ב, לאחר פקודה שלישית

www.elecstudy.orgטסליצקי מרק [email protected]

Page 28: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

28

DEC <יעד>

מהערך שיש ביעד1פעולה מורידה .

אוגר או אוגר שמצביע על תא של זיכרון, מהתוכן של תא1מורידה.

הערך החדש יהיה 0מהתא שמכיל 1במידה ומורידיםFFH0 .

דגלים לא משתנים.

www.elecstudy.orgטסליצקי מרק [email protected]

Page 29: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

29

INC DPTR

סיביות16מצביע באורך 1-פקודה מעלה ב .

DPTR סיביות16זה האוגר היחיד שמכיל.

www.elecstudy.orgטסליצקי מרק [email protected]

Page 30: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

30

MUL AB

פקודה מכפילה תוכן של מצברA בתוכן של אוגרB ותוצאה נכנסת בחזרה לשני

. Bוחלק העליון נכנס לאוגר Aחלק התחתון נכנס למצבר : אוגרים האלה

מספריםAו-Bהם מספרים לא מסומנים!!!!

255-במידה ותוצאה גדולה מ(FFH) דגל מילוי יתר(OV )אחרת הוא , 1-עולה ל

. דגל נשא תמיד מתאפס ללא תלות בתוצאת הכפל. מתאפס

לדוגמא אם מצבר מכיל ערךACC=85 (55H) ואוגרB מכילB=23 (17H) , אז

A3Hואז מצבר מכיל ערך , (07A3H) 1955: לאחר ביצוע פקודה נקבל תוצאה

. מתאפסCודגל 1-יעלה לOVדגל . 07Hמכיל Bואוגר

www.elecstudy.orgטסליצקי מרק [email protected]

Page 31: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

31

DIV ABפעולת חילוק.

מחלק תוכן של אוגרA בתוכן של אוגרB .

חלק שלם של תוצאה נכנס לתוך אוגרA ושארית נכנס לתוך אוגרB .

91לדוגמא מצבר מכיל ערךACC=91 (5BH) ואוגרB 5מכיל ערךB=05(05H) , 18מצבר יכיל ערך, 18 = 91/5לאחר פעולת חילוק

(12H) יעובר לאוגר 1ושאריתB .

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

במידה ואוגרB לאחר פעולת חילוק תוכן של , לפני פעולת חילוק0יכילA ותוכן שלBודגל מילוי יתר יעלה , דגל נשא יתאפס, יהיו לא מוגדרים. 1-ל

www.elecstudy.orgטסליצקי מרק [email protected]

Page 32: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

32

BCD .DA Aפעולה להמרה מהקסה דצימלי לקוד

פעולה מיועדת להכנת מספר לפורמטBCD .

פעולה הזאת עובדת רק על המצבר ורק לאחר פעולתADD אוADC

(. 99עד 0-מ)BCDספרות בפורמט 2ובונה מספר שמורכב מ

00פקודה מוסיפה ערכיםH, 06H, 60H or 66H בהתאם למצב של

. PSW-מצבר ו

במידה וערך בסיביותA3-09גדול יותר מ(xxxx1010-xxxx1111) , או

כדי ליצור ערך נכון 6אז פקודה מוסיפה למצבר ערך 1-שווה לACדגל

. ברביעה תחתונה של המצבר

אם דגלCY=1 ,9-עקב כך שמספר ברביעה עליונה גדול מ

(1010xxxx-1111xxxx) לחלק העליון כדי ליצור מספר 6אז מוסיפים

BCDאבל דגל , נכוןCYלא מתאפס .

www.elecstudy.orgטסליצקי מרק [email protected]

Page 33: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

33

.פעולות לוגיות Logical Operations

פעולות לוגיות :AND ,OR ,XOR ,NOT

מבצעים בדרך כלל עם ופעולות עובדות Aאוגר

.סיבית מול סיבית

www.elecstudy.orgטסליצקי מרק [email protected]

Page 34: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

34

ANL <dest-byte>,<source-byte> פעולת וגם

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

אף דגל לא משתנה

דוגמא:

ANL A,R2

75Hמכיל 2Rואוגר D3H (11010011) מכיל ערך ACCבמידה ו ACC=51H (01010001)אז תוצאת הפעולה היא , (01110101)

פעולתANDמממשת פעולת בדיקת סיביות מסוימות או כיבוי מנורות .:לדוגמא

ANL P1,#10111001B

www.elecstudy.orgטסליצקי מרק [email protected]

Page 35: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

35

ORL <dest-byte>,<source-byte> פעולת או לוגי

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

אף דגל לא משתנה

דוגמא:ORL A,R2

אז R2=75H (01110101)ואוגר ACC=D3H (11010011)אם אוגר .ORACC=F7H (11110111)לאחר פעולת

עוד דוגמא:ORL P1,#11000010B

.ללא שינוי של רגליים אחרות, 1Pשל 1,6,7הוראה זאת מעלה סיביות

www.elecstudy.orgטסליצקי מרק [email protected]

Page 36: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

36

XRL <dest-byte>,<source-byte> XORפעולת לוגי

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

אף דגל לא משתנה

דוגמא:XRL A,R0

אז R0=AAH (10101010)ואוגר ACC=C3H (11000011)אם אוגר ACC=69H (01101001)שנכנסת לאוגר XORתוצאת פעולת

דוגמא:XRL P1,#00110001

1P(0← 1 ,1← 0.)של 0,4,5פקודה הזאת הופכת סיביות

www.elecstudy.orgטסליצקי מרק [email protected]

Page 37: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

37

CLR A and CPL A

CLR A פקודה הזאת מנקה את התוכן של אוגרA .

דגלים לא משתנים .

CPL A

פקודה מבצעת היפוך לוגי של אוגרA(סיביות משנה ערך 8כל אחד מ

(one’s complement)-שלו מ

דגלים לא משתנים.

אם תוכן אוגרACC=C3H (11000011) , אז לאחר פעולתCPL ערך

.ACC=3CH (00111100)החדש יהיה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 38: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

38

RL A

8 0מוזז למקום 7סיביות של המצבר מוזזים שמאלה כל אחד וסיבית .

דגלים לא משתנים.

לדוגמא אם מצברACC=C3H (11000011) , לאחר פעולת הזזה ערך

.נשאר ללא שינויCYודגל ACC=87H (10000111)שלו

www.elecstudy.orgטסליצקי מרק [email protected]

Page 39: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

39

RLC A

זזות 6עד 0-זאת אומרת סיביות מ. מצבר מוזז שמאלה דרך דגל נשא

.0נכנס לתוך דגל נשא ודגל נשא נכנס לתוך ביט 7שמאלה סיבית

כל היתר דגלים לא משתנים.

לדוגמא נתוןACC=C3H (11000011)התוצאה . 1-ודגל נשא שווה ל

. 1ודגל נשא יהיה גם ACC=87H (10000111)תהיה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 40: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

40

RR A

8 0מוזז למקום 7סיביות של המצבר מוזזים ימינה כל אחד וסיבית .

דגלים לא משתנים.

לדוגמא אם מצברACC=C3H (11000011) , לאחר פעולת הזזה ערך

.נשאר ללא שינויCYודגל ACC=E1H (11100001)שלו

www.elecstudy.orgטסליצקי מרק [email protected]

Page 41: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

41

RRC A

זזות 7עד 1-זאת אומרת סיביות מ. מצבר מוזז ימינה דרך דגל נשא

.7נכנס לתוך דגל נשא ודגל נשא נכנס לתוך ביט 0ימינה סיבית

כל היתר דגלים לא משתנים.

לדוגמא נתוןACC=C3H (11000011)התוצאה . 0-ודגל נשא שווה ל

. 1ודגל נשא יהיה ACC= 61H (01100001)תהיה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 42: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

42

SWAP A

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

י פעול "פעולה הזאת יכולה להתבצע עRR אוRL4פעמים .

דגלים לא משתנים.

במידה ותוכן מצברACC=C3H (11000011) , אז אחרי פעולת

SWAP תוכן של מצבר יהיהACC=3CH (00111100).

www.elecstudy.orgטסליצקי מרק [email protected]

Page 43: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

43

Data Transfer Instructions פקודות להעברת נתונים

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

. ללא שימוש במצברRAMמיוחדים לבין

ניתן להשתמש בהעברת נתונים ביןRAM פנימי לביןRAM חיצוני

". העברה לא ישירה"בעזרת

128 בית עליונים שלRAM ואוגרי " לא ישירה"ניתנים לגישה בצורה

SFR ישירה"בגישה ."

www.elecstudy.orgטסליצקי מרק [email protected]

Page 44: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

44

Data Transfer Instructions פעולות העברת נתונים

פקודה הסבר

MOV @Ri, direct [@Ri] = [direct]

MOV @Ri, #data [@Ri] = immediate data

MOV DPTR, #data 16 [DPTR] = immediate data

MOVC A,@A+DPTR A = Code byte from [@A+DPTR]

MOVC A,@A+PC A = Code byte from [@A+PC]

MOVX A,@Ri A = Data byte from external ram [@Ri]

MOVX A,@DPTR A = Data byte from external ram [@DPTR]

MOVX @Ri, A External[@Ri] = A

MOVX @DPTR,A External[@DPTR] = A

PUSH direct Push into stack

POP direct Pop from stack

XCH A,Rn A = [Rn], [Rn] = A

XCH A, direct A = [direct], [direct] = A

XCH A, @Ri A = [@Rn], [@Rn] = A

XCHD A,@Ri Exchange low order digits

www.elecstudy.orgטסליצקי מרק [email protected]

Page 45: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

45

MOV <dest-byte>,<source-byte>

תוכן של מקור לתוך היעד( מעתיקה)פקודה מעבירה .

תוכן המקור לא משתנה אף דגל לא משתנה.

:דוגמאותMOV R1,#60 ;R1=60H

MOV A,@R1 ;A=[60H]

MOV R2,#61 ;R2=61H

ADD A,@R2 ;A=A+[61H]

MOV R7,A ;R7=A

www.elecstudy.orgטסליצקי מרק [email protected]

Page 46: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

46

MOV DPTR, #data 16

סיביות למצביע לנתונים16פקודה מעתיקה ערך של קבוע.

:דוגמא

MOV DPTR,#1032

.DPL=32Hוערך DPH=10Hפקודה מעתיקה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 47: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

47

MOVC A,@A + <base-reg>

פקודה הזאת מעבירה את בית של קוד לתוךACC .

סיביות ועוד כתובת של אוגר הבסיס שזה יכול להיות או 8כתובת אפקטיבית מורכבת מכתובתDPTR אוPC( .סופר פקודות .) אף דגל לא משתנה. סיביות כתובת16כך בונים.

פקודה הזאת שימושית כדי לקרוא טבלאות בתוך אזור זיכרון קוד.

אםPC(סופר פקודות )לכתובת לפני שהוא מועבר למצבר1-הוא מתקדם ב, נמצא בשימוש .

:דוגמא

CLR A

LOC1: INC A

MOVC A,@A + PC

RET

Look_up DB 10H

DB 20H

DB 30H

DB 40H

שהוגדרו בעזרת פקודה 4עד 1שגרה הזאת לוקחת ערך שנמצא במצבר שנמצא בין תאים

DB .

לאחר סיום השגרה בתוך המצבר יהיה ערךACC=20H

www.elecstudy.orgטסליצקי מרק [email protected]

Page 48: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

48

MOVX <dest-byte>,<source-byte>

פקודה מעבירה מידע בין מצבר לבין זיכרון חיצוני.

סיביות16סיביות או 8: גודל אזור הזיכרון החיצוני –צורות לפקודה הזאת 2ישנם .

סיביות משתמשים באוגר מיוחד 8כאשר משתמשים בצורהEMI0CN כדי לשמור.כדי לציין חלק תחתון של הכתובת הגישה1Rאו 0Rחלק עליון של הכתובת ואוגר

:לדוגמאMOV EMI0CN,#10H \\הכנסת בית עליון של הכתובת לתוך אוגר עזר

MOV R0,#34H \\הכנסת בית תחתון של הכתובת לתוך אוגר עזר

MOVX A,@R0 \\חיצוני נכנס לתוך מצבר 1034תוכן של תא זיכרון

www.elecstudy.orgטסליצקי מרק [email protected]

Page 49: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

49

MOVX <dest-byte>,<source-byte>

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

:דוגמא

MOV DPTR,#1034H ;Load DPTR with 16 bit

;address to read (1034H).

MOVX A,@DPTR ;Load contents of 1034H

;into ACC.

סיביות שנמצאת באוגר 16דוגמא שנמצאת בעמוד הזה משתמשת בכתובת באורך

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

ישנה אפשרות לגשת לכל אחד מהאוגרים שמרכיבים אתDPTR(DPLו-DPH )

. ולהשתמש בכל אחד מהם בנפרד

www.elecstudy.orgטסליצקי מרק [email protected]

Page 50: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

50

PUSH Direct

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

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

. למחסנית

דגלים לא משתנים ולא מושפעים.

:דוגמא

PUSH 22H

PUSH 23H

נניח שערך התחלתי שלSP4-שווה לFH 22ותוכן של תאיםH ,23H מכילים

.H12-וH11ערכים

מכילים 51H-ו50Hוערך של תאים SP=51Hלאחר ביצוע תוכנה ערך של מצביע

H11ו-H12 .

www.elecstudy.orgטסליצקי מרק [email protected]

Page 51: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

51

POP Direct

בנוסף היא מורידה . פקודה קולטת נתון מאזור של מחסנית ומעבירה אותו לאוגר היעד. דגלים לא מושפעים ולא משתנים. 1-מצביע של מחסנית ב

:דוגמא

POP DPH

POP DPL

אם במצב התחלתיSP=51H 4ותוכן תאי זיכרוןFH ,50H51-וH 30יהיהH ,11H. SP=4FHוערך של DPTR=1211Hאז לאחר סיום הדוגמא ערך של , 12H-ו

POP SP

בהמשך לתוכנית ערך שלSP 4קודם ירד עדEH ואז ערך שלו יהיהSP=30H .

www.elecstudy.orgטסליצקי מרק [email protected]

Page 52: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

52

XCH A,<byte>

פקודה הזאת מחליפה ערך שנמצא בתוך מצבר עם ערך שנמצא באזור

.אף דגל לא משתנה ולא מושפע. נתונים

:דוגמאXCH A,@R0

נניח שאוגרR0=2EH , מצברACC=F3H (11110011) וערך תא

2EH=76H (01110110) . לאחר ביצוע פקודהACC=76H וערך תא

2EH=F3H .

www.elecstudy.orgטסליצקי מרק [email protected]

Page 53: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

53

XCHD A,@Ri

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

לא משנות את מיקומם( 7-4)סיביות של חלק גדול.

אף דגל לא משתנה ולא מושפע.

:דוגמאXCHD A,@R0

:לפני ביצוע

R0=2EH, ACC=76H (01110110) ,2EH=F3H (11110011)RAM

:אחרי ביצוע

ACC=73H (01110011) ,2EH=F6H (11110110)RAM

www.elecstudy.orgטסליצקי מרק [email protected]

Page 54: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

54

פעולות עם סיביות ודגלים

מיקרו בקרC8051F020 מסוגל

.לבצע פעולות עם סיביות

כ ניתן לבצע פעולות הבאות"בסה :

set, clear, and, or , not

ניתן לבצע גם פעולות קפיצה

. בהתאם מצב דגלים וסיביות

כל הפעולות עובדות לפי גישה

. ישירה

Mnemonic Description

CLR C Clear C

CLR bit Clear direct bit

SETB C Set C

SETB bit Set direct bit

CPL C Complement c

CPL bit Complement direct bit

ANL C,bit AND bit with C

ANL C,/bit AND NOT bit with C

ORL C,bit OR bit with C

ORL C,/bit OR NOT bit with C

MOV C,bit MOV bit to C

MOV bit,C MOV C to bit

JC rel Jump if C set

JNC rel Jump if C not set

JB bit,rel Jump if specified bit set

JNB bit,rel Jump if specified bit not set

JBC bit,relif specified bit set then clear it and

jump

www.elecstudy.orgטסליצקי מרק [email protected]

Page 55: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

55

CLR <bit>

במידה ויש פגישה עליו)סיבית ספציפית ( מאפסת)פקודה מנקה .

במידה ולא מדובר על איפוס של דגל . )אף דגל לא משתנה ולא מושפע(.עצמו

:דוגמאCLR P2.7

,Port 2DCH (11011100)מצב התחלתי

5CH (01011100)מצב סופי

www.elecstudy.orgטסליצקי מרק [email protected]

Page 56: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

56

SETB <bit>

1"פקודה הזאת מאתחלת סיבית המבוקשת לערך."

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

אלא אם כן פקודה משנה את הדגל באופן מכוון, אף דגל לא מושפע.

:דוגמאSETB C

SETB P2.0

224H (00100100)נניח שלפני פעולות ערך של פורט

לאחר פקודה ראשונה דגל נשא מאותחל(C1-שווה ל )

לאחר פקודה שנייהPort 2 25H (00100101)

www.elecstudy.orgטסליצקי מרק [email protected]

Page 57: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

57

CPL <bit>

פקודה הזאת הופכת סיבית המבוקשת.

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

אלא אם כן פקודה משנה את הדגל באופן מכוון, אף דגל לא מושפע.

:דוגמאCPL P2.1

CPL P2.2

53יהיה 2נניח שמצב התחלתי של פורטH (01010011)

55יהיה 2לאחר ביצוע פקודות מצב של פורטH (01010101)

www.elecstudy.orgטסליצקי מרק [email protected]

Page 58: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

58

ANL C, <source-bit>

עושיםAND לוגי בין דגלCARRY עם סיבית כלשהי עם הכנסת תוצאה לתוך דגלCARRY .

אז דגל 0אם סיבית היאCARRYאחרת דגל לא משתנה, מתאפס .

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

אף דגל אחר לא משתנה

:דוגמאות

MOV C,P2.0 ;Load C with input pin ;state of P2.0.

ANL C,P2.7 ;AND carry flag with ;bit 7 of P2.

MOV P2.1,C ;Move C to bit 1 of Port 2.

ANL C,/OV ;AND with inverse of OV flag.

במידה ו-P2.0=1, P2.7=0 ודגלOV=0אז לאחר רצף פעולות נקבל :

P2.1=0, CY=0, OV=0

www.elecstudy.orgטסליצקי מרק [email protected]

Page 59: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

59

ORL C, <source-bit>

עושיםOR לוגי בין דגלCARRY עם סיבית כלשהי עם הכנסת תוצאה לתוך דגלCARRY .

אז דגל 0אם סיבית היאCARRY1-אחרת דגל עולה ל, לא משתנה .

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

אף דגל אחר לא משתנה

:דוגמא

MOV C,P2.0 ;Load C with input pin ;state of P2.0.

ORL C,P2.7 ;OR carry flag with ;bit 7 of P2.

MOV P2.1,C ;Move C to bit 1 of ;port 2.

ORL C,/OV ;OR with inverse of OV ;flag.

www.elecstudy.orgטסליצקי מרק [email protected]

Page 60: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

60

MOV <dest-bit>,<source-bit>

פקודה מעתיקה את הסיבית המקור לסיבית היעד.

אחד הסיביות חייבת להיות דגלCARRY( .לא משנה מקור או יעד.)

אף דגל אחר לא מושפע .

:דוגמא

MOV P2.3,C

MOV C,P3.3

MOV P2.0,C

אם נניח ש-P2=C5H (11000101), P3.3=0 ודגלCARRYCY=1 , אז לאחר רצף

.P2=CCH (11001100) ,CY=0פעולות האלה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 61: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

61

JC תווית

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

. אחרת תוכנה ממשיכה בדרכה". 1"

אף דגל לא משתנה.

:דוגמא

CLR C

SUBB A,R0

JC ARRAY1

MOV A,#20H

ARRAY1:

דגלcarryלאחר פקודת חיסור אם , מתאפס לאחר פקודה ראשונהA יותר קטן מערך

לתווית PCמעבירה את JCופקודה 1-עולה לcarryדגל 0Rשנמצא בתוך אוגר ARRAY1 , אחרת אנו ממשיכים לבצע פקודהMOV , 20מעתיקים ערךHלתוך

.המצבר ואז ממשיכים את התוכנית

www.elecstudy.orgטסליצקי מרק [email protected]

Page 62: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

62

JNC תווית

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

.אחרת תוכנה ממשיכה בדרכה". 1"במצב

אף דגל לא משתנה.

:דוגמא

CLR C

SUBB A,R0

JNC ARRAY2

MOV A,#20H

ARRAY2:

דגלcarryלאחר פקודת חיסור אם , מתאפס לאחר פקודה ראשונהA יותר גדול או

PCמעבירה את JCופקודה 1-עולה לcarryדגל 0Rשווה לערך שנמצא בתוך אוגר 20Hמעתיקים ערך , MOVאחרת אנו ממשיכים לבצע פקודה , ARRAY2לתווית

.המצבר ואז ממשיכים את התוכניתלתוך

www.elecstudy.orgטסליצקי מרק [email protected]

Page 63: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

63

JB <תווית,<סיבית

פקודה הזאת היא פקודת קפיצה שמבצעת אותה במידה וסיבית

.אחרת תוכנה ממשיכה בדרכה". 1"הנבדקת נמצאת במצב

אף דגל לא משתנה.

:דוגמאJB ACC.7,ARRAY1

JB P1.2,ARRAY2

מכיל 1ופורט 01001010נניח שמצבר מכילPort 1=57H

פקודה ראשונה לא מבצעת קפיצה ופקודה שנייה כן . 01010111))

.ARRAY2מבצעת ומעבירה אותנו לפי תווית

www.elecstudy.orgטסליצקי מרק [email protected]

Page 64: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

64

JNB <bit>,rel

פקודה הזאת היא פקודת קפיצה שמבצעת אותה במידה וסיבית

.אחרת תוכנה ממשיכה בדרכה". 0"הנבדקת נמצאת במצב

אף דגל לא משתנה.

:דוגמאJNB ACC.6,ARRAY1

JNB P1.3,ARRAY2

מכיל 1ופורט 01001010נניח שמצבר מכילPort 1=57H

פקודה ראשונה לא מבצעת קפיצה ופקודה שנייה כן . 01010111))

.ARRAY2מבצעת ומעבירה אותנו לפי תווית

www.elecstudy.orgטסליצקי מרק [email protected]

Page 65: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

65

JBC תווית,<סיבית>

פקודה הזאת היא פקודת קפיצה שמבצעת אותה במידה וסיבית

היא גם כן מאפסת את הסיבית לאחר , " 1"הנבדקת נמצאת במצב

.אחרת תוכנה ממשיכה בדרכה ללא שינוי סיבית. בדיקה

אף דגל לא משתנה.

:דוגמאJBC P1.3,ARRAY1

JBC P1.2,ARRAY2

נניח שמצב של פורטP1=56H (01010110) . פקודה ראשונה לא

לאחר פקודה שנייה תוכנה קופצת . משנה כלום וממשיכה לפקודה שנייה

.52H (01010010)ישתנה לערך P1וערך של פורט ARRAY2לתווית

www.elecstudy.orgטסליצקי מרק [email protected]

Page 66: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

66

Program Branching Instructions פקודות קפיצה

בפקודות האלה אנו

משתמשים כדי לבצע

סדר פעולות רצוי

וקפיצות בין קטע קוד

, לקטע קוד אחר

לקריאת שגרות וחזרה

. מפסיקות

ישנם פקודות שמבצעות

קפיצות תמיד או

בהתאם לתנאים

. מסוימים

Mnemonic Description

ACALL addr11 Absolute subroutine call( סיביות11עד )קריאה לתת שגרה

LCALL addr16 Long subroutine call( סיביות16עד )קריאה לתת שגרה

RET Return from subroutineחזרה משגרה

RETI Return from interruptחזרה מפסיקה

AJMP addr11 Absolute jumpסיביות 11קפיצה עד

LJMP addr16 Long jumpסיביות 16קפיצה עד

SJMP rel Short jumpקפיצה קצרה

JMP @A+DPTR Jump indirectקפיצה של גישה עוקבת

JZ rel Jump if A=0קפיצה במידה ומצבר ריק

JNZ rel Jump if A NOT=0קפיצה במידה ומצבר לא ריק

CJNE A,direct,rel

Compare and Jump if Not Equal

צורות שונות של תשווה ותקפוץ במידה אם לא שווה

CJNE A,#data,rel

CJNE Rn,#data,rel

CJNE @Ri,#data,rel

DJNZ Rn,relDecrement and Jump if Not Zero

.0-ותקפוץ אם לא שווה ל1תחסיר DJNZ direct,rel

NOP No Operation. פעולה שלט מבצעת כלום

www.elecstudy.orgטסליצקי מרק [email protected]

Page 67: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

67

ACALL addr11

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

פקוד מעלה אתPCדוחפת ערך של , 2-בPC(16סיביות ) קודם בית )לתוך מחסנית. 2-בSPומעלה ( תחתון ואז בית עליון

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

תת שגרה חייבת להיות באותו אזור של זיכרון(2 kB block .)

אף דגל לא משתנה.

:דוגמא

ACALL LOC_SUB

מצב נוכחי :SP=07H ,LOC_SUB 0567נמצא במקוםH , וערך שלPCשווה ל-0230H.

08מחסנית מקומות : מצב לאחר ביצוע פקודהH09-וH 32מכילהH02-וH ,SP=09H וערך חדש שלPC=0567H.

www.elecstudy.orgטסליצקי מרק [email protected]

Page 68: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

68

LCALL addr16

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

פקוד מעלה אתPCדוחפת ערך של , 3-בPC(16סיביות ) קודם בית )לתוך מחסנית. 2-בSPומעלה ( תחתון ואז בית עליון

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

תת שגרה יכולה להיות בכל אזור של זיכרון(64 kB block .)

אף דגל לא משתנה.

:דוגמא

LCALL LOC_SUB

מצב נוכחי :SP=07H ,LOC_SUB 2034נמצא במקוםH , וערך שלPCשווה ל-0230H.

08מחסנית מקומות : מצב לאחר ביצוע פקודהH09-וH 33מכילהH02-וH ,SP=09H וערך חדש שלPC=2034H.

www.elecstudy.orgטסליצקי מרק [email protected]

Page 69: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

69

RET

פקודה מחזירה את התוכנה מתת שגרה לתוכנה ראשית .

פקודה מעבירה בית עליון ובית תחתון מהמחסנית לאוגרPC 2ומורידהביתים האלה הם בעצם כתובת חזרה משגרה לתוכנה SP( .2מאוגר

(. ראשית ומוחקת את הנתונים האלה מהמחסנית

פקודה הזאת מסיימת את הפעלת השגרה שמפעילים אותה בעזרת. ”call“פקודה

אף דגל לא משתנה.

נניח שאוגרSP=0BH וכתובות בראש המחסנית( חלק שלRAM )0AH0-וBH 30מכילות ערכיםH02-וH.

ותוכנה ממשיכה לרוץ מכתובת SP=09Hלאחר ביצוע פקודה 0230H.

www.elecstudy.orgטסליצקי מרק [email protected]

Page 70: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

70

RETI

פקודה מחזירה את התוכנה מפסיקה לתוכנה ראשית .

פקודה מעבירה בית עליון ובית תחתון מהמחסנית לאוגרPC 2ומורידהביתים האלה הם בעצם כתובת חזרה משגרה לתוכנה SP( .2מאוגר

(. ראשית ומוחקת את הנתונים האלה מהמחסנית

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

נניח שאוגרSP=0BH וכתובות בראש המחסנית( חלק שלRAM )0AH0-וBH 30מכילות ערכיםH02-וH.

ותוכנה ממשיכה לרוץ מכתובת SP=09Hלאחר ביצוע פקודה 0230H.

אוגרPSWלא מתחדש באופן אוטומטי .

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

.אותה עקב פסיקה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 71: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

71

AJMP addr11

פקודהAJMP 11לפי כתובת של –מאפשרת קפיצה באותו בלוק זיכרון

. סיביות

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

2kB.

אף דגל לא משתנה.

:דוגמאAJMP NEAR

נניח שכרגעPC 0120מכיל ערך שלH ותוויתNEARנמצא בכתובת

0234H . לאחר ביצוע פקודה ערך חדש שלPC 0234יהיהH .

www.elecstudy.orgטסליצקי מרק [email protected]

Page 72: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

72

LJMP addr16

פקודהLJMP 16לפי כתובת של –מאפשרת קפיצה באותו בלוק זיכרון

. סיביות

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

64kB.

אף דגל לא משתנה.

:דוגמא

LJMP FAR

נניח שכרגעPC 0120מכיל ערך שלH ותוויתFARנמצא בכתובת

3234H . לאחר ביצוע פקודה ערך חדש שלPC 3234יהיהH .

www.elecstudy.orgטסליצקי מרק [email protected]

Page 73: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

73

SJMP rel

היא מוסיפה ל. פקודה לקפיצה קצרה-PC2 ואחר כך מוסיפה לו ערך‘rel’. (signed 8-bit)סיביות 8שיכול להיות עד

זאת תהיה כתובת חדשה שנמצאת ב-PC ולשם תוכנה תתקדם בשלב. הבא

בית קדימה או 127בעזרת פקודה הזאת ניתן להגיע לכתובות במרחק עד. בית אחורה128

:דוגמאSJMP RELSRT

RELSRT:

www.elecstudy.orgטסליצקי מרק [email protected]

Page 74: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

74

JMP @A + DPTR

סיביות שנמצא בתו אוגר 8פקודה הזאת מוסיפה ערךACC(מצבר ) סיביות 16לאוגר

(. זה אומר שתוכנה קופצת למיקום חדש)PCותוצאה נכנסת לתוך אוגר

אף אחד מהאוגרים(ACC ,DPTR )לא משתנה

אף דגל לא משתנה .

:דוגמא

MOV DPTR, #LOOK_TBL

JMP @A + DPTR

LOOK_TBL:

www.elecstudy.orgטסליצקי מרק [email protected]

Page 75: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

75

JZ rel

פקודה הזאת מבצעת קפיצה לתוויתrel בתנאי שתוכן האוגרACC.אחרת תוכנה ממשיכה לפקודה הבאה ברצף, 0-שווה ל

אוגרACCלא משתנה ואף דגל לא משתנה.

:דוגמא

SUBB A,#20H

JZ LABEL1

DEC A

במידה ואוגרACC 20מכיל ערךH ודגלCARRY0-שווה לCY=0 ,אחרת תוכנה , LABEL1לאחר פקודת חיסור תוכנה תקפוץ לתווית

. ADECתמשיך לפקודה

www.elecstudy.orgטסליצקי מרק [email protected]

Page 76: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

76

JNZ rel

פקודה הזאת מבצעת קפיצה לתוויתrel בתנאי שתוכן האוגרACC.אחרת תוכנה ממשיכה לפקודה הבאה ברצף, 0-שונה מ

אוגרACCלא משתנה ואף דגל לא משתנה.

:דוגמאDEC A

JNZ LABEL2

MOV RO, A

במידה ואוגרACCתוכנה 1לאחר פקודת חיסור , 1-מכיל ערך שונה מ.MOVאחרת תוכנה תמשיך לפקודה , LABEL2תקפוץ לתווית

www.elecstudy.orgטסליצקי מרק [email protected]

Page 77: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

77

CJNE <dest-byte>,<source-byte>,rel

פקודה משווה ערך שנמצא ב-dest-byteעם ערך שנמצא ב-source-byte . אם הם

. relשונים היא מבצעת קפיצה לתווית

אםdest-byteקטן מ-source-byte דגלcarryשני . )אחרת דגל מתאפס" 1"-עולה ל

(. ערכים הם לא מסומנים

אף אופרנד לא משתנה.

:דוגמא

CJNE R3,#50H,NEQU

… …

NEQU: JC LOC1

LOC1: … …

www.elecstudy.orgטסליצקי מרק [email protected]

Page 78: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

78

DJNZ <byte>,<rel-addr>

פקודה הזאת”decrement jump not zero” אפשר לתרגם תחסיר אחד ותקפוץ אם.0-תוצאה שונה מ

תוכנית קופצת לפי תווית0-מהתוכן של זיכרון ואם התוצאה שונה מ1היא מחסירה .

ערך חדש שיהיה בתוך התא יהיה 0-במידה ותוכן התא שווה לFFH .

אף דגל לא מושפע.

:דוגמא

DJNZ 20H,LOC1

DJNZ 30H,LOC2

DJNZ 40H,LOC3

20נניח שתאי זיכרוןH, 30H , 40H , מתא 1לאחר הורדת . 1,2,3מכילים ערכיםH20 מתא 1אם נוריד . ותוכנית תמשיך לפקודה הבאה0נקבל שם ערךH30 נקבל

. 2LOCואז תוכנית תקפוץ לפי תווית ( 0-שהוא שונה מ)1תוכן

www.elecstudy.orgטסליצקי מרק [email protected]

Page 79: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

79

NOP

פקודה שלא מבצעת שום פעולה.

פקודה מתבצעת בפולס שעון בודד .

משתמשים בפקודה כדי ליצור השהייה מדויקת ללא שימוש בטיימרים .

12נניח שתדר הגביש MHz , 12זה אומר שתדר של פולס פנימי הוא MHz/12 ושווה

בדוגמא הזאת אנו בונים . מיקרו שנייה1זמן פעולה הבסיסית ביותר הוא . MHz 1-ל

.kHz 125. מיקרו שניות4" 1", מיקרו שניות1.2P–"0 "4גל ריבועי ברגל

:דוגמא

home: CLR P1.2

NOP

NOP

NOP

SETB P1.2

NOP

sjmp home

www.elecstudy.orgטסליצקי מרק [email protected]

Page 80: Lecture 4meyda.education.gov.il/.../homer-limud/silicon/Lecture_4.pdfLecture 4 לש תודוקפ טס markalex012@gmail.com קרמ יקצילסט 2 לש תודוקפ טס אובמ

www.silabs.com/MCU

www.elecstudy.orgטסליצקי מרק [email protected]


Recommended