Domein Getallen 1 Standaard- bewerkingen Optellen Aftrekken Vermenigvuldigen Delen.
Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in...
-
Upload
theodoor-smet -
Category
Documents
-
view
227 -
download
3
Transcript of Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in...
Logische bewerkingen
Over het toepassen van
AND, OR, NOT en EXOR
bewerkingen in programmeeromgevingen
InleidingZowel in lagere als hogere programmeertalen wordt soms met bitpatronen gemanipuleerd. Meestal als er gewerkt wordt met in- en output poorten. De logische bewerkingen die hier voor worden toegepast zijn:
AND voor het resetten van bits,OR voor het setten van bitsEXOR voor het inverteren van bits
Hoe dat in zijn werk gaat leer je in dit instructieprogramma
beginnen
Menu
IN en OUT bewerkingen
Setten met OR
Resetten met AND
Inverteren met EXOR
Stoppen
IN- en OUT bewerkingen
Via poorten kunnen binaire waarden vanuit de buitenwereld in de computer worden ingelezen.Een poort heeft een poortadres (ook wel poortnummer genoemd). In dit geval is dat poortadres 0379H
IN
b.v. poort 0379H
b0
b7
IN- en OUT bewerkingen
Op de ingangen van de INPUT-poort kunnen schakelaars zijn aangesloten. Staat de schakelaar in de bovenste stand, dan is de ingang 1. In de onderste stand is dat 0.
IN
5V
8x
b.v. poort 0379H
b0
b7
IN- en OUT bewerkingen
Bij een IN instructie wordt de waarde van de ingangen in de computer geladen.In assembly (machinetaal) is dit b.v. IN AL,DXIn een hogere taal (VB) is dit waarde = INPORT (&H379)
IN
01010010
5V
8x
b.v. poort 0379H
b0
b7
01001010
IN- en OUT bewerkingen
De binaire waarde staat hu in een register en heeft in een hogere taal een naam. Hier is dat “waarde”. Met deze variabele “waarde” kunnen we dingen doen.
01010010 waarde
IN- en OUT bewerkingen
De waarde kan je weergeven als:01010010B of %01010010 (binair) of als52H of $52 (hexadecimaal) of als80 (decimaal)
01010010 waarde
IN- en OUT bewerkingen
Met out instructies kan je een bepaalde waarde ( in dit geval de variabele bitpatr1) naar een outputpoort sturen.In assembly (machinetaal) is dit b.v. OUT DX,ALIn een hogere taal (VB) is dit OUTPORT (&H37A) = waarde
bitpatr1 01101110
IN- en OUT bewerkingen
Met out instructies kan je een bepaalde waarde ( in dit geval de variabele bitpatr1) naar een outputpoort sturen.In assembly (machinetaal) is dit b.v. OUT DX,ALIn een hogere taal (VB) is dit OUTPORT (&H37A) = waarde
01101110bitpatr1
OUT
b0
b7
1110110
0
b.v. poort 037AH
IN- en OUT bewerkingen
De uitgangen van de poort worden nu 0 en 1 gemaakt in het bitpatroon uit de variabele.Welke waarde heeft de variabele bitpatr1 uitgedrukt in hex en dec? Schrijf dat op en kijk dan pas naar het volgende scherm.
01011110bitpatr1
OUT
b0
b7
1110110
0
IN- en OUT bewerkingen
Kan je deze conversie niet maken, kijk dan nog eens naar het instructieprogramma talstelsels uit projectperiode 3
01011110bitpatr1
OUT
b0
b7
1110110
0
01011110B = 5EH = 94
Resetten met AND
IN
5V
8x
b.v. poort 0379H
b0
b7
0???????
We hebben een waarde ingelezen via een poort en willen in ons programma iets doen als de schakelaar in de bovenste stand staat. Bitje b0 is dan 1.Hier is sprake van een IF….(bitje0=1) …THEN situatie
waarde
Resetten met AND
IN
xxxxxxx0
5V
8x
b.v. poort 0379H
b0
b7
0???????
De toestand van de andere ingangen is onbekend en doet er nu niet toe. We noemen dit don’t care conditions. We schrijven hiervoor een X.
waarde
waarde = INPORT (&H379)
Resetten met AND
xxxxxxx0
Om de toestand van bitje b0 te kunnen testen moeten we alle andere bits eerst resetten.
Dit doen we met de AND instructie.
waarde
Resetten met AND
xxxxxxx0
We kennen de AND functie. Bekijk de waarheidstabel goed.
waarde
&
A
BF
A B F
0 0 0
0 1 0
1 0 0
1 1 1
Resetten met AND
xxxxxxx0
Je kunt ook zeggen:AND-en met een 0 is altijd 0AND-en met een 1 verandert nietsof: A · 0 = 0 en A · 1 = A
waarde
&
A
00
A B F
0 0 0
0 1 0
1 0 0
1 1 1
&
A
1A
Resetten met AND
xxxxxxx0
Terug naar de ingelezen waarde:Als ik alle bitjes wil resetten behalve bit 0, dan moet ik de waarde AND-en met 00000001B. Bit bij bit wordt nu een AND bewerking uitgevoerd.
waarde
A B F
0 0 0
0 1 0
1 0 0
1 1 1
00000001AND
Resetten met AND
xxxxxxx0
Alle bits worden gereset behalve bit 0. Deze was al nul en blijft nul (rood).
waarde
A B F
0 0 0
0 1 0
1 0 0
1 1 1
00000001AND
00000000
Resetten met AND
xxxxxxx0 waarde
00000001AND
00000000
xxxxxxx1 waarde
00000001AND
00000001
Bit 0 was 1 Bit 0 was 0
Bit 0 blijft staan terwijl de rest wordt gereset.
Resetten met AND
00000001AND
00000000
Kijk goed naar de instructie en de figuur. De AND functie met 01H (=00000001B) voeren we in een keer uit.
IN
xxxxxxx0
5V
8x
b.v. poort 0379H
b0
b7
0???????
waarde
waarde = (INPORT (&H379) AND &H01)
waarde
Resetten met AND
00000001AND
00000000
Als de waarde 01 is, moet de schakelaar wel in de bovenste stand staan. Is de waarde 00 dan weten we zeker dat de schakelaar in de onderste stand staat.
IN
xxxxxxx0
5V
8x
b.v. poort 0379H
b0
b7
0???????
waarde
waarde = (INPORT (&H379) AND &H01)
waarde
Resetten met AND
00000001AND
00000000
We wilden graag realiseren: IF….(bitje0=1) …THEN…... Dit kunnen we nu programmeren als:waarde = (INPORT (&H379) AND &H01) IF waarde = 01 THEN…….
IN
xxxxxxx0
5V
8x
b.v. poort 0379H
b0
b7
0???????
waarde
waarde
Resetten met AND
????????AND
Bedenk nu een programma dat iets doet als bit7 laag is
IN
xxxxxxxxb.v. poort 0379H
b0
b7
??????0
waarde
waarde
?
Resetten met AND
10000000AND
x0000000
Eerst resetten we alles behalve bit 7. Als de waarde daarna 0 is moet bit b7 wel nul zijn.Bekijk goed het programma.Je mag natuurlijk ook gebruiken AND 128. Dit is de decimale waarde van het bitpatroon 10000000B
IN
xxxxxxxxb.v. poort 0379H
b0
b7
??????0
waarde
waarde
?
waarde = (INPORT (&H379) AND &H80) IF waarde = 0 THEN…….
Inverteren met EXOR
Soms is het nodig bepaalde bits te inverteren. Hiervoor gebruiken we de EXOR bewerking.Kijk eerst goed naar de waarheidstabel.
=1
A
BF
A B F
0 0 0
0 1 1
1 0 1
1 1 0
Inverteren met EXOR
Je kunt ook zeggenEXOR-en met een 1 inverteert de variabeleEXOR-en met een 0 verandert nietsOF A 1 = /A en A 0 = A
=1
A
0A B F
0 0 0
0 1 1
1 0 1
1 1 0
=1
A
1/A
A
Inverteren met EXOR
In het voorbeeld worden de bits 0 t/m 3 niet geïnverteerd en de bits 4 t/m 7 wel.Deze functie kan je noemen: EXOR &HF0.
=1
A
0A B F
0 0 0
0 1 1
1 0 1
1 1 0
=1
A
1/A
A
11110000EXOR
01101100
10011100 waarde
waarde
F0H
Inverteren met EXOR
Nog een voorbeeld.Wat is de uitkomst?
=1
A
0A B F
0 0 0
0 1 1
1 0 1
1 1 0
=1
A
1/A
A
11000011EXOR
10001110 waarde
waarde
C3H
Inverteren met EXOR
Controleer jouw uitkomst. De rode bits zijn geïnverteerd.De functie is EXOR &HC3Maar EXOR 195 doet hetzelfde!
=1
A
0A B F
0 0 0
0 1 1
1 0 1
1 1 0
=1
A
1/A
A
11000011EXOR
01001101
10001110 waarde
waarde
C3H
Setten met OR
Soms is het nodig bepaalde bits te setten. Hiervoor gebruiken we de OR bewerking.Kijk eerst goed naar de waarheidstabel.
1
A
BF
A B F
0 0 0
0 1 1
1 0 1
1 1 1
Setten met OR
Je kunt ook zeggenOR-en met een 1 set de variabeleOR-en met een 0 verandert nietsOF A + 1 = 1 en A + 0 = A
1
A
0A B F
0 0 0
0 1 1
1 0 1
1 1 1
1
A
11
A
Setten met OR
In het voorbeeld worden de bits 4 t/m 7 geset. De bits 1 t/m 3 veranderen niet. Deze functie kan je noemen: OR &HF0.
11110000OR
11111100
10011100 waarde
waarde
F0H
10A B F
0 0 0
0 1 1
1 0 1
1 1 1
1
A
11
A
Setten met OR
Nog een voorbeeld.Wat is de uitkomst?
A
11000011OR
10001110 waarde
waarde
C3H
10A B F
0 0 0
0 1 1
1 0 1
1 1 1
1
A
11
A
Setten met OR
Controleer jouw uitkomst. De rode bits zijn geset.De functie is OR &HC3Maar OR 195 doet hetzelfde!
11000011OR
11001111
10001110 waarde
waarde
C3H
10A B F
0 0 0
0 1 1
1 0 1
1 1 1
1
A
11
A
Setten met OR
Dit is het laatst scherm
STOPPEN