Rodomi pranešimai su žymėmis 7. Asemblerio pradmenys. Rodyti visus pranešimus
Rodomi pranešimai su žymėmis 7. Asemblerio pradmenys. Rodyti visus pranešimus

2013 m. sausio 10 d., ketvirtadienis

7.3. Temų 5-7 apibendrinimas



1.      Komandų sistemas galima klasifikuoti pagal šiuos pagrindinius požymius: operando saugojimo vieta, operandų tipas ir dydis, komandoje aiškiai nurodomų operandų skaičius, operacijų tipai.
2.      Pastaruoju metu vyrauja bendrosios paskirties registrų tipo architektūra..
3.      Yra dvi pagrindinės charakteristikos, kurios skiria bendrosios paskirties registrų architektūras:  aritmetinių komandų operandų skaičius - 2 ar 3; pirmu atveju rezultatas talpinamas į vieno iš operandų vietą.
4.      Pagrindiniai naudojami komandų tipai: registras-registras, registras-atmintis, atmintis-atmintis.
5.      Jei komandoje nėra nė vieno adreso, reiškia, kad abu operandai turi būti iš anksto sutartoje vietoje. Paprastai tai būna dvi "viršutinės" dėklo ląstelės, todėl 0 adresų kompiuteris dar vadinamas dėklo tipo architektūros kompiuteriu.
  1. MP 8080 naudojami 1-o, 2-jų, 3-jų baitų komandų formatai. Operacijos kodui skiriama nuo 2 iki 8 vieno baito skilčių.
  2. Vieno baito komandose be operacijos kodo gali būti nurodyti: bendros paskirties registrų adresai, registrų poros adresas, nukreipimo sąlygos kodas.
  3. Dviejų baitų komandų  antruose  baituose  teikiami  betarpiški  operandai,  dalyvaujantys operacijose arba įvesties – išvesties prievadų adresai.
  4. Trijų baitų formatuose antras ir trečias komandų baitai skirti operatyviosios atmintinės ląstelės adresui nurodyti.
  5. Mikroprocesoriaus I8080 komandose yra naudojami tokie adresavimo režimai: tiesioginis registrinis, šalutinis registrinis, neaiškiai išreikštas, tiesioginis, betarpiško operando, dėklo.
  6. Bet kokia programa kompiuteriui vykdoma tik    pervedus ją į mašininių kodų kalbą.
  7. Programos tekstas mašinos kalba vadinamas objektine programa.
  8. Artimiausias mašininių kodų kalbai yra asembleris.  
  9. I8080 komandų sistemą sudaro šios komandų grupės: aritmetinės loginės, 16 bitų duomenų apdorojimo, 8 bitų duomenų siuntimo, nukreipimo (duomenų srautų valdymo), kreiptis į paprogramę, grįžimo iš paprogramės, pagalbinės.
  10. 8-ių bitų duomenų persiuntimo komandos grupės komandos naudojamos duomenims persiųsti tarp registrų arba tarp registrų ir atmintinės. Požymiai nekinta.Visoms pagrindinėms šios grupės komandoms būdinga tai, kad pirmasis operandas išrenkamas iš kaupiklio, 2-asis-iš bendrojo registro, atmintinės ląstelės ar 2-ojo komandos baito. Operacijos rezultatas lieka kaupiklyje.
  11. Dviejų baitų duomenų apdorojimo komandos skirtos dviejų baitų duomenims persiųsti ar sukeisti. Mnemonikoje raidė X (eXtended) parodo, kad būtent kalba eina apie dviejų baitų duomenis.
17.  Sulyginimo komandos naudojama registro A turiniui  ir operandui palyginti. Palyginama atimant, bet rezultatas niekur neįrašomas, o formuojamos tik požymių reikšmės.
  1. Nukreipimo ir kreiptis į paprogrames komandos keičia įprastinę komandų   vykdymo tvarką.
  2. Nukreipimo komandos JMP (jump) naudojamos skaičiavimų eigai nukreipti
  3. Besąlyginio nukreipimo komandos pakeičia komandų skaitiklio turinį (įrašo naują reikšmę iš antrojo ir trečiojo komandos baito).
  4. Kreiptis į paprogrames komandos CALL (Call) t.p. nukreipia skaičiavimų eigą ir papildomai įrašo į dėklą komandų skaitiklio turinį.
  5. Besąlyginės  kreipties į paprogramę komandos pakeičia komandų skaitiklio turinį (įrašo naują reikšmę iš antrojo ir trečiojo komandos baito) bei įsimena dėkle komandų skaitiklio PC turinį.
  6. Sąlyginės nukreipimo  ir kreiptis į paprogrames komandos keičia komandų skaitiklio
  7. parodymą, tik esant įvykdytai t.t. sąlygai.
  8. Sudarant nesudėtingas programas, rašoma nuosekli komandų seka pagal  užduoties sąlygą. Jei uždavinys sudėtingesnis, tikslinga sudaryti programos algoritmą.
26.  Algoritmu vadinama baigtinė nuoseklių veiksmų seka, kurią procesorius turi atlikti su pradiniais duomenimis, kad gautų uždavinio sprendinį.
27.  Kompiuteris pats dar nėra išsprendęs nei vieno uždavinio, o sprendžia uždavinį tik tuomet, kai žmogus sudaro to uždavinio sprendimo ALGORITMĄ ir jį užkoduoja (parašo programą) taip, kad būtų “aišku” kompiuteriui. Taigi, žmogus paprastai k u r i a uždavinio sprendimo algoritmą, o kompiuteris tik v y k d o sukurtą ir patikrintą algoritmą.
28.  Atskirus algoritmo veiksmus (veiksmų grupes) grafiškai priimta vaizduoti skirtingomis geometrinėmis figūromis vadinamomis blokais. Projektuojant arba analizuojant algoritmo blok-schemą nustatoma sprendimo proceso valdymo perdavimo, iš vieno bloko į kitą, tvarka.
29.  Kiekvienam algoritmui privalu turėti pradžios ir pabaigos blokus. Valdymo procesas prasideda PRADŽIOS bloke , nuosekliai praeina visus algoritmo blokus ir baigiasi PABAIGOS bloke. Priimta tuos blokus vaizduoti tam tikrų matmenų ovalais, su juose įrašytais žodžiais PRADŽIA ir PABAIGA (kaip parodyta pav.1).
30.  Kiekvieną bloką rėminanti linija kairiajame viršutiniame kampe privalo būti trūki, čia įrašomas bloko numeris.
31.  Visi blokai numeruojami pradedant pradžios ir baigiant pabaigos bloku.

7.1. Programų algoritmai



Algoritmu vadinama baigtinė nuoseklių veiksmų seka, kurią procesorius turi atlikti su pradiniais duomenimis, kad gautų uždavinio sprendinį.
Parašyti sudėtingos programos tekstą iš karto, dažniausiai nelengva. Pirmiausia būtina sukurti uždavinio sprendimo algoritmą. Priklausomai nuo to, kas sprendžia uždavinį (kas yra uždavinio sprendimo procesorius), algoritmas gali būti pateikiamas įvairiai: - kompiuterio mikroprocesoriui algoritmą reikia pateikti mašinine kalba (dvejetainis, aštuntainis arba šešioliktainis kodai), nes tik tokią kalbą supranta mikroprocesorius; - žmogui, esančiam procesoriaus vaidmenyje, algoritmą galima pateikti daugelyje formų: -teksto forma, t.y., programos , parašytos pseudo kodu, arba bet kuria, algoritmine kalba (paskalis, C++, asembleris, mašininė kalba); -grafine forma, t.y., blok-schemos pavidalu.
Pirmiausia išsiaiškinkime, kodėl pradėjom kalbėti apie žmogų kaip procesorių. Reikia priminti, kad kompiuteris pats dar nėra išsprendęs nei vieno uždavinio, o sprendžia uždavinį tik tuomet, kai žmogus sudaro to uždavinio sprendimo ALGORITMĄ ir jį užkoduoja (parašo programą) taip, kad būtų “aišku” kompiuteriui. Taigi, žmogus paprastai k u r i a uždavinio sprendimo algoritmą, o kompiuteris tik v y k d o sukurtą ir patikrintą algoritmą.
Kūrimo ir tikrinimo procese naudotina informatyviausia - grafinė algoritmo forma, pvz., algoritmo blokinė schema.
Algoritmo blokinės schemos elementai
Atskirus algoritmo veiksmus (veiksmų grupes) grafiškai priimta vaizduoti skirtingomis geometrinėmis figūromis vadinamomis blokais. Projektuojant arba analizuojant algoritmo blok-schemą nustatoma sprendimo proceso valdymo perdavimo, iš vieno bloko į kitą, tvarka.

Kiekvienam algoritmui privalu turėti pradžios ir pabaigos blokus. Valdymo procesas prasideda PRADŽIOS bloke , nuosekliai praeina visus algoritmo blokus ir baigiasi PABAIGOS bloke. Priimta tuos blokus vaizduoti tam tikrų matmenų ovalais, su juose įrašytais žodžiais PRADŽIA ir PABAIGA (kaip parodyta pav.1).
Kiekvieną bloką rėminanti linija kairiajame viršutiniame kampe privalo būti trūki, čia įrašomas bloko numeris. Visi blokai numeruojami pradedant pradžios ir baigiant pabaigos bloku. PASTABA. Kadangi PRADŽIOS ir PABAIGOS blokai yra unikalūs, tai jų numeracija nebūtina. Paprastai sprendimą (algoritmą) sudaro nuosekli veiksmų kompozicija, todėl pageidautina ir blokus numeruoti pagal valdymo perdavimo eigą.
Nesudėtingame algoritme, kai jo blokinė schema telpa į vieną lapą, blokus numeruojame sveikais skaičiais. Jeigu algoritmas sudėtingas ir jam pavaizduoti reikia kelių lapų, tai bloko numeracija gali turėti kelias dalis, atskirtas taškais: pvz. -2.12 (lapo numeris.bloko numeris). Santakos blokus (paprastai tai atitinkamo spindulio apskritimai, kurių viduje nurodytas vardas) įvardinti taip pat galima skaičiais, bet galima ir raidėmis. Pav. 1.
Algoritmo blokinės schemos grafinio vaizdavimo elementai
Aritmetinių ir loginių veiksmų blokas vaizduojamas stačiakampiu, su jame įrašytais aritmetinių (loginių) išraiškų sakiniais (pav.1. -2 blokas). Sąlygos tikrinimo blokui vaizduoti naudojama rombo forma (4-blokas) , jo viduje įrašoma tikrinama sąlyga. Informacijos įvedimo/išvedimo blokui panaudota lygiagretainio forma, kur įvedami/išvedami duomenys užrašomi skliaustuose. Įvedimo bloko kairiojoje pusėje įrašomas požymis IN, išvedimo bloke-požymis OUT (8-BLOKAS).
Kreipimosi į paprogramę blokas turi stačiakampio su dvigubom šoninėm linijom formą, jame nurodoma, kuriai paprogramei bus perduodamas valdymas. Visi algoritmo blokai tarpusavyje sujungiami taip vadinamomis valdymo linijomis, kurios gali būti tik vertikalios arba tik horizontalios.Valdymo krypčiai nurodyti valdymo linijos užsibaigia rodyklėmis.
PASTABA. Jeigu valdymas perduodamas į dešinę arba žemyn, linijos gale rodyklės nebūtinos. Išskyrus blokus, kuriuose vienaip ar kitaip tikrinama sąlyga, valdymo linijos į bloką patenka tik iš viršaus, išeina tik iš apačios. Į sąlygos tikrinimo blokus valdymas gali patekti tik iš viršaus, išeiti - tik per šonus. Išimtį sudaro tik FOR ciklo parametro modifikavimo ir sąlygos tikrinimo blokas (pav.1- 5 blokas), kur šalia pagrindinio įėjimo viršuje, kairėje pusėje yra dar modifikuoto parametro įėjimas.
Valdymo linijos gali sueiti į vieną vietą, ji žymima apskritimu ir vadinama santakos bloku. Apskritimo viduje gali būti nurodyta santakos žymė (pav1.-α). Į santaką valdymo linijos gali įeiti ir išeiti iš bet kurios pusės, tačiau keliama sąlyga-įėjimai gali būti keli, išėjimas tik vienas. Kai algoritmo schema gaunasi sudėtinga, neįmanoma išvengti valdymo linijų kryžiavimosi, tenka linijas nutraukti. Nutraukimo vietose dedamos ŽYMĖS, rodančios iš kur ateina nutrauktoji linija (iš kurio bloko) ir kur ji nueina toliau (į kurį bloką) 

7. Asemblerio pradmenys



Tikslai:
1.            Suprasti programų rengimo principus.
2.            Įgyti programų rengimo įgūdžių.
3.            Žinoti algoritmų rengimo principus.
Temos studijoms reikalingas laikas:  1,8 val.  teorijos;
10 val.  praktika;
                                    8 val. savarankiško darbo.

Programos kuriamos pagal užduoties reikalavimus.
Sudarant nesudėtingas programas, rašoma nuosekli komandų seka pagal užduoties sąlygą. Jei uždavinys sudėtingesnis, tikslinga sudaryti programos algoritmą.
Kai reikia apdoroti masyvų duomenis, rašomos ciklinės programos.
Išnagrinėkite pateiktų programų pavyzdžius:
  1. Logiškai sudėti registrų B, C ir D turinius , o gautą rezultatą įrašyti į 8600 atminties ląstelę.

Adresas
Mašininis kodas
Asemblerio komanda
Komentaras
8200

MOV A, B
; registro B turinį persiųsti į A
8201

ORA C
; logiškai pridėti C registro turinį
8202

ORA D
; logiškai pridėti D registro turinį
8203

STA 00 86
; registro A turinį nusiųsti adresu 8600
8206

RST 8
; užbaigti programos darbą
  1. Susumuoti atmintinės ląstelių 8400, 8401 ir 8402 turinius , o gautą rezultatą įrašyti į 8500 atmintinės ląstelę.


Adresas
Mašininis kodas
Asemblerio komanda
Komentaras
8200

LXI H 00 84       
; adresą 8400 nusiųsti į registrų porą HL
8203

MOV A, M   
; 8400 ląstelės turinį persiųsti į registrą A
8204

INX H  
; adresą HL poroje padidinti vienetu
8205

ADD M    
; prie A registro turinio prisumuoti 8401 ląstelės turinį
8206

INX H    
; adresą HL poroje padidinti vienetu
8207

ADD M    
; prie A registro turinio prisumuoti 8402 ląstelės turinį
8208

STA 00 85
; registro A turinį nusiųsti adresu 8500
820B

RST 8
; užbaigti programos darbą

  1. Sudaryti programą skaičių sumai rasti: sekos ilgis nurodytas ląstelėse 0040 ir 0041, seka prasideda nuo ląstelės 0042H, rezultatas ne didesnis kaip 255 ir įrašomas į ląstelę 0050H.


Adresas
Mašininis kodas
Asemblerio komanda
Komentaras
040
DUOM
EQU 0042H

041
REZ
EQU 0050H

100

XRA A
; ištrinti seną registro turinį
101

LXI H, DUOM
; siųsti sekos ilgio adresą į registrus HL
104

MOV B, M
; B registre formuoti sekos skaitiklį
105

INXH
; padidinti adresą
106
SUMD:
ADD M
; pridėti operandą
107

DCR B
; sumažinti sekos ilgį
108

JNZ SUMD
; kartoti, jei ne visa seka
10B

STA REZ
; įrašyti rezultatą
10E

END


Tam, kad gerai suprasti programiškai valdomą duomenų apdorojimą, užpildykite lentelę, nurodydami joje, kaip keičiasi programinio modelio registrų bei atmintinės ląstelių turiniai, vykdant atskiras programos komandas.  Įrašyti registrų turinius, po nurodytos komandos įvykdymo).

PC
RG  A
RG  B
RG  H
RG  L
RG   F







Atmintinė (duomenys, rezultatai)
Adresas
Ląstelės turinys



Dėmesio !
Simbolinėje programoje galima nenaudoti tikrųjų adresų. Ląstelei 40H suteikiamas simbolinis adresas DUOM. Dirbant su konkrečiu kompiuteriu ar programų derinimo stendu, pagal dokumentaciją nustatomi leistini konkretūs adresai.
Dirbant su programų derinimo stendais asembleriu parašyta programa iš karto koduojama mašininiais kodais, todėl makrokomandos nenaudojamos.
Atskirų tipų programų rengimo principai aptarti laboratorinių darbų teorinėje dalyje.

Etiketės