Assembler - 3. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Assembler - 3. lekceAssembler - 3. lekce

 

Assembler - 3. lekce

Google       zatím neprovedena       30. 7. 2005       24 935×

• Matematické operace (2)
• Bitové nastavení a logické operace
• Programové vybavení (2) ..

Reklama
Reklama
Slovo úvodem :
koly jsem do teď bral rozsahem 1, 4 a 5, protože jste přesně nevěděli, jak má vypadat úprava, nyní budu již známkovat v celém rozsahu, na konci lekce je popsána úprava.



Matematické operace (2)


ADD a ADDC
Jsou příkazy sčítání akumulátoru s místem v paměti RAM.
Pokud akumulátor přeteče (velikost je FFH), nastaví se příznak Carry a příznak přetečení AC. Příkaz ADDC navíc ještě sčítá k výsledku příkazy Carry a AC.

Ukázka :
ORG 0
MOV A,# 250 ;v acc je 250
ADD A,# 12 ;po vykonání je v acc 6 a nastaví se Carry
ADDC A,# 2 ;přičte se k acc 2 a Carry

A = 250+12 = 256+6 =>=> Carry = 1 + Acc = 6

SUBB
Příkaz pro odečítání od akumulátoru.
Pokud výsledek směřuje do záporných hodnot ukáže nám to Carry.

Ukázka :
ORG 0
MOV A, #6 ;Acc = 6
SUBB A, #12 ;Acc = 6-12 = 0-6 =>=> 256-6 = 250 = 0FAH
ADDC A, #1 ;Acc= 250+1+Carry =>=> 252 = 0FCH
NOP ;prázdná instrukce (nic nedělá, slouží abyste v As51 viděli předešlý krok)
END

Pozn.: Pokud do programu píšete hexa číslo a začíná písmenem je zapotřebí před něj napsat nulu.


Bitové nastavení a logické operace

SETB A CLR
Nastavení bitu do jedničky a do nuly, například nemusíme používat: MOV P1, #00001000B ale SETB P1.3 (místo bitu se počítá zprava a od nuly), u akumulátoru vypadá příkaz takto: SETB Acc.3 , můžeme i uměle nastavovat příznaky: SETB C ; (carry).

ANL - Je logický součin, výsledkem je log. 1, pokud vstupní operandy zaujímají stav log. 1.
Tedy : 1*1=1 1*0=0 0*1=0 0*0=0

ORL - je logický součet, výsledkem je log. 1, pokud alespoň jeden ze vstupních operandů zaujímá stav log. 1
Tedy : 1+1=1 1+0=1 0+1=1 0+0=0

XRL - je výlučný logický součet (komparátor), výsledkem je log. 1, pokud se hodnoty operandů liší
Tedy : 1+1=0 1+0=1 0+1=1 0+0=0

Při těchto operacích se pracuje se všemi osmi místy.
Takže pro příklad:
MOV A, #217 ; 11011001B MOV A, #217 ; 11011001B
MOV R3, #150 ; 10010110B MOV R3, #150 ; 10010110B
ANL A, R3 ; 10010000B ORL A, R3 ; 11011111B


Programové vybavení (2)


V minulém díle jsme si osvojili první program ve vybavení As51, dnes budeme v tomto duchu pokračovat.
Tedy na obrázku pod textem jsou vysvětleny kolonky programu:

Místo v paměti ROM a strojový kód nás nemusí zajímat, ale

Váš program už ano, zde totiž po kompilaci můžete vidět chyby kterých jste se dopustili nebo zde vidíte trasovat program, odhalí chyby například špatně napsaného „JMPs cosi“, nebo pokud se v jumpu odkazujete na adresu, která neexistuje.

Časové registry budeme hodně používat a jejich funkci si popíšeme v příštím díle, jen napovím, že se bude hodně počítat :-).

Sériová linka se, jak už z názvu vyplývá, používá pro komunikaci po seriové lince, my toto bohužel probírat nebudeme pro mou neznalost protokolu, vím jen že slouží hlavně pro přenesení programu z PC do mikroprocesoru.


Vnitřní paměť RAM můžete prohlížet, ale i zapisovat.
Dělá se to tak, že v hlavním menu označíte položku Modify nebo, pokud již trasujete program, zmáčknete klávesu F5, nyní můžete zapisovat nejen do paměti RAM, ale i do všech registrů, pro přeskakování do jiných kolonek se používá klávesa Page Up a Down. V paměti RAM se pak přemísťujete pomocí Ctrl a zase Page Up a Down nebo přímo na místo Shift a F6 a nyní napíšete místo, kde se chcete objevit (v hexa).

Nápověda je velmi dobrá pomůcka když nevíte co by... Podle toho kde se nacházíte vám ukazuje možné klávesové zkratky a jejich vysvětlení.

Zobrazení příznaků speciálních registrů a registry povolení přerušení nás zatím nemusí zajímat, probereme to blíže až v dalších dílech.

Registry aritmetické jednotky – bez nich by se nic nevykonalo, jsou zde registry: Acc – akumulátor (vykonává matematické operace přes jednotku ALU)
PSW – registr příznaků pra Acc
B – pomocný registr u DIV a MUL
SP – jsem nikdy nepoužil, protože jsme to nepotřebovali
PC – Program counter – je čítač který ukazuje na instrukci která má následovat
DPTR – je ukazatel na místo v paměti ROM, budeme používat při čtení hodnot jdoucí za sebou

Porty – jsou komunikačním prostředkem pro mikroprocesor, na ně se napojují periferie, sběrnice a externí paměti.

Úprava:
Je mi celkem jedno jestli budete psát velkým, malým, či smíšeným, záleží jen na tom jak jste zvyklí např. z jiných jazyků, tedy abyste měli nějaký styl, ale teď k tomu co požaduji: i když to v kurzu občas vypadá nezarovnaně, protože nejde používat obyčejný tabulátorový příkaz odsazení, již jsem na to apeloval admina, takže bych byl rád, kdyby mi vyhověl, ale vy se snažte to mít zarovnané a co nejvíce okomentované (komentář se píše za středníkem a prosím bez diakritiky). UKÁZKOVÝ PROGRAM



DU :
Vytvořte program který bude sčítat obsah míst v paměti od adresy 35H po 7FH dokud výsledek nebude 1000, pak se první a poslední sčítaná hodnota logicky sečte a zapíše na port P2 a nakonec se výsledná hodnota zapíše jako 16-ti bitové číslo do paměti 32h a 33h, nemusíte do těchto polí v programu nic vepisovat postačí když si to vyzkoušíte v As51 a do RAM si vepíšete hodnoty uměle. Nejdřív popřemýšlejte co by mohlo nastat a pak program ošetřit proti kolizím. Tento úkol je už trošku složitější, ale pokud umíte matematiku, přečetli jste si kurz celý a máte trochu programátorského ducha, tak si myslím, že to nebude nemožné vytvořit.

Povzbuzení na závěr : „Bude toho víc… tak se těšte :o)“

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Tagy:
Hlasování bylo ukončeno    
0 hlasů
Google
Autor programuje v Assembleru, zajímá se o elektroniku a tunning PC.

Nové články

Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý