1 / 49

Načini adresiranja

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:

roy
Download Presentation

Načini adresiranja

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Načini adresiranja

  2. 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.

  3. Ovim instrukcijama adresira se isključivo unutrašnji RAM. • Instrukcija ADD(zbroji) Postoje 4 načina adresiranja: • Neposredno (direktno) adresiranje konstante • Direktno adresiranje unutarnjeg RAM-a • Indirektno adresiranje preko registara R0 i R1 • Adresiranje općih registara (R0-R7)-Rn

  4. 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)

  5. Neposredno adresiranje konstante Mnemonič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: Konstanta u obliku binarnog broja Op. Kod za ADD (2H) Op kod koji znači da je direktno adr. Konstante (4H)

  6. 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 PROGRAM 10H BAJT BAJT

  7. Nakon izvođenja PROGRAM A 30H BAJT BAJT

  8. 2. DIREKTNO ADRESIRANJE UNUTARNJEG RAM-A U acc se zbraja sadržaj acc i sadržaj sa adrese u instrukciji (NE ADRESA!) ADD A, direct Binarni zapis ove instrukcije je Op. Kod za ADD (2H) Op kod koji znači da je direktno adr. Adrese nulte stranice Adresa u obliku binarnog broja

  9. Hexadedadno: • Bajt 2. bajt 25H adresa

  10. Primjer: Neka je npradr 20H a na toj adr je zapisan broj 30H. U acc neka je 10H. Unutarnji RAM Programska mem. A 20H 21H

  11. Nakon izvođenja instrukcije A unutarnji RAM prog. mem 40 30H 25H 20H

  12. 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 R1 U reg R0 i R1 je zapisana adresa na kojoj se nalazi traženi podatak kojeg zbrajamo sa sadržajem ACC(adresiranje adrese)

  13. Mnemonički oblik ADD A,@Ri i=0 ili 1 Instrukcija ima samo 1 bajt u kojem je donja četvorka bitova 0110-R0 0111-R1 Binarno: 0010 0110 ili 26H ako se adresira R0 0010 0111 ili 27H -||- R1

  14. Primjer: Neka je u (A)= 10H (R0)=40H (40H)=50H i imamo instrukciju ADD A, @R0 A unut. RAM progr. Memorija 10H R0 40H 26H 40H 50H Nakon: A unut. RAM progr. Memorija 60H 26H

  15. (A)(A)+((R0))

  16. 4. ADRESIRANJE OPĆIH REGISTARA R0-R7 Ovim 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

  17. Primjer: Instrukcija ADD A,R0 (A)=10H, (R0)=40H A RAM PROG. MEM. 10H R0 -40H 28H Nakon A 50H

  18. Odredi koji je sadržaj acc A nakon izvođenja instrukcija. Prikaži bin i hex oblik podataka prije i nakon izvođenja instrukcija. • ADD A,#10H (A)=10H • ADD A,#1FH (A)=01H • ADD A,10H (A)=10H, (10H)=20H • ADD A,10H (A)=01H (10H)=1FH • ADD A,@R1 (A)=20H (R1)=10H (10H)=01H • ADD A,R1 isto kao u prethodnom

  19. 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.

  20. Odgovori: • 20H • 20H • 30H • 20H • 21H • 30H • 1. bajt 24H 2.bajt 10H • 2H

  21. 11.Prije izvođenja (SP)=10H, (A)=00H što je u sp a što u A nakon instr MOV A,SP ADD A,#02H MOV C,A PUSH C

  22. 12. (A)=00H, (X)=20H, (SP)=09H ADD A,X ADD A,#10 PUSH A ADD A,SP

  23. 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 reg SP kazalo stoga

  24. 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 0AH Naredba asemb EQU nekom broju pridružuje slovčani simbol STO EQU 64H (vrijednosti broja 64H=10010 pridružujemo simbol STO) DESET EQU 10 (1010=0AH)

  25. SLOVO_A EQU 41H KONST_1 EQU STO Naredba asemblera ORG zadaje na koju adresu u memoriji će biti smješten prvi bajt instrukcije programa. ORG 2000 2000 CLR A 2001, 2002 ADD A,#STO 2003, 2004 ADD A,DESET

  26. 2000 1110 0100 E4H • 0010 0100 24H • 0110 0100 64H 2003 0010 0101 25H 2004 0000 1010 0AH

  27. Oznake ili labele Olakš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.

  28. Npr. ORG 2000H CLR A ADD A,#STO ZBROJ: ADD A,DESET Vrijednost koju poprima oznaka zbroj je 2003H Oznake se često koriste kod instrukcija skoka npr JMP ZBROJ

  29. Instrukcije za aritmetičke operacijeAritmetičke instrukcije procesora Intel 8051 mogu se podijeliti na sljedeće podskupine:

  30. 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)

  31. Postoje i instrukcije koje se odnose na zastavicu C (SETB C, CLR C) SETB C ili D3 ili 1101 0011 CLR C ili C3 ili 1100 0011

  32. Dijeljenje

  33. 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:

  34. X EQU 30H ;(30H)=172 Y EQU 31H ;(31H)=15 REZ EQU 32H OST EQU 33H ORG 1500H MOV A,X MOV B,Y DIV AB MOV REZ,A MOV OST,B

  35. Instrukcije INC i DEC INC A (A)<-(A)+1 INC direct (dir)<-(dir)+1 INC @Ri INC Rn INC DPTR (DPTR)+1 isto za DEC…

  36. Instrukcije za logičke operacije ANL-logičko I ORL- ILI XRL isključivo ILI CPL negacija

  37. Primjer pretvoriti ascii kod malog slova u kod za veliko slovo SLOVO EQU 30H VELIKO_SLOVO EQU 31H MASKA EQU 11011111B ORG 2000H MOV A,SLOVO ANL A,#MASKA MOV VELIKO_SLOVO,A

  38. Primjer :Uporabom ili operacije može se ascii kod velikog slova pretvoriti u kod malog slova SLOVO EQU 30H MALO_SLOVO EQU 31H MASKA EQU 00100000B ORG 2000H MOV A,SLOVO ANL A,#MASKA MOV MALO_SLOVO,A

  39. Instrukcije vezane samo za akumulator -CPL A (A) -RR A (rotateright) Svi bitovi se pomiču za jedno mjesto udesno a zadnji prelazi na mjesto prvoga. MOV A,#2CH RR A prije 0010 1100 nakon 00010110

  40. RRC A Rotacija se odvija kroz zastavicu C RL A rotacija u lijevu stranu RLC A C

  41. SWAP A primjer prije 1100 0000 nakon 0000 1100 CLR A

More Related