Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in...

36
Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen

Transcript of Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in...

Page 1: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

Logische bewerkingen

Over het toepassen van

AND, OR, NOT en EXOR

bewerkingen in programmeeromgevingen

Page 2: 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

Page 3: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

Menu

IN en OUT bewerkingen

Setten met OR

Resetten met AND

Inverteren met EXOR

Stoppen

Page 4: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 5: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 6: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 7: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 8: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

IN- en OUT bewerkingen

De waarde kan je weergeven als:01010010B of %01010010 (binair) of als52H of $52 (hexadecimaal) of als80 (decimaal)

01010010 waarde

Page 9: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 10: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 11: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 12: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 13: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 14: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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)

Page 15: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 16: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 17: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 18: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 19: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 20: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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.

Page 21: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 22: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 23: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 24: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

?

Page 25: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 26: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 27: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 28: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 29: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 30: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 31: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 32: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 33: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 34: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 35: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

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

Page 36: Logische bewerkingen Over het toepassen van AND, OR, NOT en EXOR bewerkingen in programmeeromgevingen.

Setten met OR

Dit is het laatst scherm

STOPPEN