Načini adresiranja

Preview:

DESCRIPTION

Načini adresiranja. Instrukcije za obavljanje A-L operacija su jednoadresne . To znači da se jedan od operanada nalazi u akumulatoru A i rezultat će biti u acc A. O vim instrukcijama adresira se isključivo unutrašnji RAM. Instrukcija ADD(zbroji) Postoje 4 načina adresiranja: - PowerPoint PPT Presentation

Citation preview

Načini adresiranja

• Instrukcije za obavljanje A-L operacija su jednoadresne . To znači da se jedan od operanada nalazi u akumulatoru A i rezultat će biti u acc A.

• Ovim instrukcijama adresira se isključivo unutrašnji RAM.

• Instrukcija ADD(zbroji)Postoje 4 načina adresiranja:Neposredno (direktno) adresiranje konstanteDirektno adresiranje unutarnjeg RAM-aIndirektno adresiranje preko registara R0 i R1Adresiranje općih registara (R0-R7)-Rn

• U prva dva načina instrukcija zauzima dva bajta a u 3. i 4. samo jedan bajt.

1. BAJT -OPERACIJSKI KOD za zbrajanje iznosi 00102 ili 2H

(gornja 4 bita prvog bajta)-način adresiranja (donja 4 bita)

Neposredno adresiranje konstanteMnemonički oblik zapisa instrukcije za zbrajanje

u kojoj se direktno adresira konstanta koju zbrajamo sa sadržajem ACC i rezultat ostaje u u ACC:

ADD A,#konst.(DATA)Binarni zapis instrukcije:0 0 1 0 0 1 0 0

Op. Kod za ADD (2H)

Op kod koji znači da je direktno adr. Konstante (4H)

Konstanta u obliku binarnog broja

• Neka je npr konstanta 20H a u ACC se nalazi podatak 10H (prije izvođenja instrukcije)

Napiši binarni HEX oblik instrukcije prije i nakon izvođenja instrukcija.

Prije izvođenja:A 10H

24H

20H

PROGRAM

1. BAJT2. BAJT

• Nakon izvođenja

30HA

24H

20H

PROGRAM

1. BAJT2. BAJT

• 2. DIREKTNO ADRESIRANJE UNUTARNJEG RAM-AU acc se zbraja sadržaj acc i sadržaj sa adrese u

instrukciji (NE ADRESA!)ADD A, direct

Binarni zapis ove instrukcije je

0 0 1 0 0 1 0 1

Op. Kod za ADD (2H)

Op kod koji znači da je direktno adr. Adrese nulte stranice

Adresa u obliku binarnog broja

Hexadedadno:1. Bajt 2. bajt

25H adresa

• Primjer:Neka je npr adr 20H a na toj adr je zapisan broj

30H. U acc neka je 10H.Unutarnji RAM

25H

20H

30HProgramska mem.

10HA

20H21H

• Nakon izvođenja instrukcije

A unutarnji RAM prog. mem40 30H 25H

20H

• Ovim načinom adr se može dohvatiti bilo koji bajt iz nulte stranice unutarnjeg RAM-a pa tako i sadržaj iz bilo kojeg SFR.

3. INDIREKTNO ADR PREKO REGISTAR R0 I R1U reg R0 i R1 je zapisana adresa na kojoj se

nalazi traženi podatak kojeg zbrajamo sa sadržajem ACC(adresiranje adrese)

• Mnemonički oblik ADD A,@Ri i=0 ili 1Instrukcija ima samo 1 bajt u kojem je donja

četvorka bitova 0110-R0 0111-R1

Binarno:0010 0110 ili 26H ako se adresira R00010 0111 ili 27H -||- R1

• Primjer:Neka je u (A)= 10H (R0)=40H (40H)=50H i

imamo instrukciju ADD A, @R0A unut. RAM progr. Memorija10H R0 40H 26H

40H 50HNakon:

A unut. RAM progr. Memorija 60H 26H

• (A)(A)+((R0))

4. ADRESIRANJE OPĆIH REGISTARA R0-R7Ovim načinom se direktno adresira jedan od 8

općih registara iz grupe odabrane u PSW-u sa dva bita.

Instrukcija ima jedan bajt . Gornja četvorka je ista za ADD 0010 ili 2H a donja poprima vrijednost od 1000-1111

Npr. 1000-R0, 1001-R1, … i 1111 za R7

• Primjer:Instrukcija ADD A,R0(A)=10H, (R0)=40H

A RAM PROG. MEM.10H R0 -40H 28H

NakonA50H

• Odredi koji je sadržaj acc A nakon izvođenja instrukcija. Prikaži bin i hex oblik podataka prije i nakon izvođenja instrukcija.

1. ADD A,#10H (A)=10H2. ADD A,#1FH (A)=01H3. ADD A,10H (A)=10H, (10H)=20H4. ADD A,10H (A)=01H (10H)=1FH5. ADD A,@R1 (A)=20H (R1)=10H (10H)=01H6. ADD A,R1 isto kao u prethodnom

7.Koji je drugi bajt instr. u prvom zadatku (binarno i hex)

8.Koliko bajtova imaju instrukcije u 1., 2.,3., 4., i 5. zad

9.ADD A,#data ako je dugi bajt 00H, (A)=00H, koji je broj u A nakon izvođenja instr.

10. ADD A, direct ako je drugi bajt instr 10H, (10H)=00H, (A)=00H Što je u A nakon izvođenja instr.

• Odgovori:1. 20H2. 20H3. 30H4. 20H5. 21H6. 30H7. 1. bajt 24H2.bajt 10H8. 2H

11.Prije izvođenja (SP)=10H, (A)=00H što je u sp a što u A nakon instr

MOV A,SPADD A,#02HMOV C,APUSH C

12. (A)=00H, (X)=20H, (SP)=09HADD A,XADD A,#10PUSH AADD A,SP

Simbolički oblik adresa

Asembler dopušta pisanje adresa u simb. Obliku. Postoje tablice u kojima se automatski prevode te adr u binarni oblik. Tako npr umjesto adrese specijalnih reg pišemo simbole kao:

A ili ACC za akumulator A, B umjesto adrese B regSP kazalo stoga

Ispred hex brojeva koji počinju znamenkama A-F potrebno je staviti 0 ispred (da se ne bi razumjeli kao neki slovčani simboli)

npr. AH treba napisati kao 0AHNaredba asemb EQU nekom broju pridružuje

slovčani simbolSTO EQU 64H (vrijednosti broja 64H=10010

pridružujemo simbol STO)

DESET EQU 10 (1010=0AH)

SLOVO_A EQU 41H KONST_1 EQU STONaredba asemblera ORG zadaje na koju adresu u

memoriji će biti smješten prvi bajt instrukcije programa.

ORG 20002000 CLR A 2001, 2002 ADD A,#STO

2003, 2004 ADD A,DESET

2000 1110 0100 E4H2001 0010 0100 24H2002 0110 0100 64H2003 0010 0101 25H2004 0000 1010 0AH

• Oznake ili labeleOlakšavaju razumijevanje napisanog programa.

Pišu se ispred instrukcije i iza se stavlja dvotočka. Asembler ih pretvara u vrijednost koja je jednaka adresi na kojoj se nalaze.

Npr.ORG 2000H

CLR AADD A,#STO

ZBROJ:ADD A,DESET

Vrijednost koju poprima oznaka zbroj je 2003HOznake se često koriste kod instrukcija skoka npr

JMP ZBROJ

Instrukcije za aritmetičke operacije

Aritmetičke instrukcije procesora Intel 8051 mogu se podijeliti na sljedeće

podskupine:

Instrukcije za zbrajanje i oduzimane (ADD, ADDC, SUBB)Instrukcije za množenje i dijeljenje (MUL, DIV)Instrukcije za uvećanje i umanjenje sadržaja za jedan (INC, DEC)Instrukcije za podešavanje sadržaja nakon zbrajanja pakiranih BCD brojeva (DA)

• Postoje i instrukcije koje se odnose na zastavicu C (SETB C, CLR C)

SETB C ili D3 ili 1101 0011CLR C ili C3 ili 1100 0011

• Dijeljenje

Broj spremljen u A se dijeli brojem spremljenim u B.

Rezultat ide u A a ostatak u B.Zastavica OV postavit će se u 1 ako je prije

dijeljenja u B nula.Primjer:

X EQU 30H ;(30H)=172Y EQU 31H ;(31H)=15REZ EQU 32HOST EQU 33HORG 1500HMOV A,XMOV B,YDIV ABMOV REZ,AMOV OST,B

• Instrukcije INC i DECINC A (A)<-(A)+1INC direct (dir)<-(dir)+1INC @RiINC RnINC DPTR (DPTR)+1isto za DEC…

• Instrukcije za logičke operacijeANL-logičko IORL- ILIXRL isključivo ILICPL negacija

• Primjer pretvoriti ascii kod malog slova u kod za veliko slovoSLOVO EQU 30HVELIKO_SLOVO EQU 31HMASKA EQU 11011111B

ORG 2000HMOV A,SLOVOANL A,#MASKAMOV VELIKO_SLOVO,A

Primjer :Uporabom ili operacije može se ascii kod velikog slova pretvoriti u kod malog slova

SLOVO EQU 30HMALO_SLOVO EQU 31HMASKA EQU 00100000B

ORG 2000HMOV A,SLOVOANL A,#MASKAMOV MALO_SLOVO,A

• Instrukcije vezane samo za akumulator-CPL A (A)-RR A (rotate right)Svi bitovi se pomiču za jedno mjesto udesno a

zadnji prelazi na mjesto prvoga.MOV A,#2CHRR Aprije 0010 1100nakon 00010110

)(A

RRC ARotacija se odvija kroz zastavicu C

RL A rotacija u lijevu stranuRLC A

A7 A6 A0

C

SWAP Aprimjer prije 1100 0000nakon 0000 1100CLR A