258 259

258 259



258

Oto program:


O


0000

BIVI C, 27H

0012

JNZ 0008H

0002

LXI H, 0021H

0015

MVT A, 0

0005

IN 0

0017

OUT 0

0007

U0V B, A

0019

JE? 0002H

0008'

kov a, b

001C

KVI A, 1

0009

ANA ŁI

001E

JM? 0017H

OOOA

mc h

0021

DOH

000B

CMP M

0022

COH

oooc

JZ 001CH

0025'

47H

OOOF

mc h

0024

05H

0010

M0V A, L

0025

28H

0011

CMP C

0026

OOH

Program ten działa następująco: w komórkach pamięci 0021H * 0026H umieszczono parani bajt maskujący i liczbę porównywaną z zamaskowaną liczbą wejściową (w poprzedniej wersji programu pary te były umieszczone w drugich bajtach rozkazów ANI i CPI). Procesor pobiera z pamięci kolejne pary i sprawdza, czy wynik mnożenia logicznego liczby wejściowej przez bajt maskujący jest równy drugiemu bajtowi pary. Jeżeli tak, to na wyjście zostaje wysłana 1, jeżeli nie, to procesor sprawdza, czy wszystkie pary zostały już sprawdzone (procesor dokonuje tego porównując adres zawarty w rejestrze L z liczbą 27H). Jeżeli adres jest mniejszy od 27H, procesor pobiera i sprawdza następną parę, jeżeli adres jest równy 27H, znaczy to,że wszystkie próby zostały już wykonane i wszystkie z wynikiem negatywnym i procesor wysyła na wyjście sygnał 0* Wysłanie 0 lub 1 kończy obliczenie wartości funkcji dla danej liczby wejściowej x,j ,x^,... ,Xg i procesor wraca do początku programu wczytując nowe dane wejściowe.

Zwróćmy uwagę, że fragment programu pomiędzy adresami 000SK a 0012H, który sprawdza wartość logiczną kolejnego składnika badanej funkcji, może być wykonywany kilkakrotnie w trakcie obliczania wartości funkcji dla jednej liczby wejściowej. Każdy obieg pętli 0006H - 0012H różni się tylko pobieraniem z pamięci par danych o innych adresach. Dzięki istnieniu tej pętl-i przedstawiony program może 'wyznaczać wartość funkcji logicznej skła-dającej się z dowolnej ilości iloczynów. V.'tedy zwiększa się tylko ilość danych zapisanych w pamięci począwszy od adresu 0021H oraz zmienia się pierwszy rozkaz, który powinien wpisywać zwiększony o jeden adres ostatniej danej.    #

Następny, podany niżej przykład będzie dotyczył programu, w którym wygodne będzie wykorzystanie podprogramu.

Przykład 6.5

Przygotować program dla ^P 8080 sprawdzający, czy sumy arytmetyczne liczb 8-bitowych wczytanych z urządzenia nr 1 i urządzeń 2,3,4 są zawarte w przedziale 20,200. Pozytywny wynik sprawdzenia jest sygnalizowany wyprowadzeniem jedynek do urządzenia wyjściowego nr 1, zaś negatywny wyprowadzeniem zer. Po wykonaniu trzech sprawdzeń program ?/czytuje następne 4 liczby.

Już z pobieżnej analizy zadania wynika, że program powinien składać cię z dwóch części: pierwszej, która dokonuje wczytywania liczb z zewnątrz

w odpowiedniej kolejności i drugiej, która będzie porównywała sumę dwóch liczb z zadanymi progami. Tę drugą część potraktujemy jako podprogram, do

którego pierwsza część programu będzie się odwoływała rozkazami CALL.

Oto program:

0000

LXI SP,0060H

0019

JC 002BH

0003

IN 1

001C

CPI 201

0005

MOV 3,A

001E

JNC 002BH

0006

IN 2

0021

CPI 20

0008

CALL 0016H

0023

JC 002BH

000B

IN 3

0026

UVI A,FFK

00OD

CALL 0018H

0028

OUT 1

0010

IN ą

002A

RET

0012

CALL 0018H

002B

LVI A ,0

0015

W 0003H

002D

OUT 1

0018

ADD B

002F

RET

Pierwszy rozkaz LXI SP,0060H wprowadza liczbę 0060H do wskaźnika stosu, rezerwując w ten sposób miejsce w pamięci dla przechowywania zawartości licznika rozkazów przy rozkazie CALL. Rozkazy o adresach 0003H+0J15H powodują wczytanie danych z zewnątrz i odwołanie się do podprogramu. Rozkazy o adresach 0018H +■ 002FH stanowią podprogram, który porównuje sumy dwóch liczb z zadanymi progami 20 i 200.    **

Ostatni z tej grupy przykładów będzie dotyczył programu obsługi przerwania.

Przykład 6,4

Przygotować program dla y.V 6080 wykonujący obliczenia z przykładu 3.2 oraz obsługujący przerwanie. Obsługa przerwania ma polegać na wczytaniu liczby dwójkowej z urządzenia wejściowego nr 2, dodaniu jej do zawartości pary komórek pamięci zewnętrznej o adresach 0065H i 0066H i podaniu na urządzenie wyjściowe nr 2 aktualnej zawartości tej pary komórek pamięci. •Sygnał przerwania powoduje podanie do procesora rozkazu RST 6.

Oto program:

0000

LXI SP,0C5CH

0033

OUT

2

0003 ’

program z przykładu 6.2 z odpowiednie zmodyfikowanymi adresami

003A

MCV

M, A

0029 J

0033

0033

0030

0033

M07

INR

ADC

OUT

A, H

L

H

2

0030

FUSH PS*

0060

KC-V

fi,A

0031

PUSK H

0061

POP

H

0032

IN 2

0062

POP

FlW

003^

LXI H,0O65H

0063

El

0037

ADD M

OQUh

RET

Pojawienie się sygnału przerwania w dowolnej chwili wykonywania programu zawartego w komórkach OOOpH - 00029H, powoduje ukończenie wykonywanego aktualnie rozkazu i przejście procesora do cyklu POTWIERDZENIE PRZERWANIA, w czasie którego procesor otrzymuje z urządzenia przerywającego rozkaz R3T6. Rozkaz ten powoduje z kolei skok do adresu 003SH, w którym rozpoczyna się program obsługi przerwania. Program ten na początku zabezpiecza przed zniszczeniem, poprzez przesłanie do stosu zawartość rejestru A, wskaźników i rejestrów V i L, a następnie dokonuje wskazanego sumowania liczby wejścicwej z liczbą w p'mięci.    r'.kończeniu tych. operacji pro-

*


Wyszukiwarka

Podobne podstrony:
258 259 258 Oto programt 0000 mi C, 27H 0012 JNZ OOOSH 0002 ŁXI H, 0021H 0015 mi a, o 0005 IN
DSC01536 wy. Oto program. A co do metody, to polega ona przede wszystkim na piskliwym śmiechu, a tak
ANSI C 9 5 WSKAŹNIK! I TABLICE ________— A oto program: #include <stdio.h> #include
Dziennik Ustaw -14- Poz. 258 Załącznik nr 2 RAMOWY PROGRAM SZKOLENIA I WYMAGANIA EGZAMINACYJNE
Dziennik Ustaw -2- Poz. 258 4. Objaśnienia symboli i skrótów stosowanych w ramowych programach
054(1) 258.    X2—y2 = 6; j^+4y2 = 16 259.    y = sinx; y = sin 2* 260
CB i rad 140 PL-259 /6T /ST 6mm 9mm 2x PL-259 PS-102 PL-258 Rys. 90. Złączki i ich symbole handlowe
CCF20100515008 257. 258. 259. 260. 261. 262. Błąd standardowy Odchylenie standardowejty y = IM
8111 16145Q 251 252 253 254 255 (255) 257 258 259 260
60299 ZF Bień00 300 IndeksL leasing 257-267 finansowy 259-260 operacyjny 258-259 opłacalno
258 259 nOTKe, npireGa b coieTanim c uaneiKolt ynpaB.ieinifl nraoit. 8to AOB0.1LHO .ycTape.mfl Tim y
neptun6 1 R 1-300 251 XI, X3 260, XI, 259, 254. 255. 256. 258, 300’400 351
CCF20120104034 258 259 zdań składowych, funkcjonujących jako składnik w inny~ zdaniach złożonych. W
255 256 257 258 259 260
258 259 nOTKe, npireGa b coieTanim c uaneiKolt ynpaB.ieinifl nraoit. 8to AOB0.1LHO .ycTape.mfl Tim y

więcej podobnych podstron