LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH
Wykonali:
Szacuń Adam
Sopotnicki Paweł
Mazurek Paweł
Zadanie 1
W zadaniu został uruchomiony program dodający liczby zapisane w kodzie U2:
LJMP START
ORG 100H
START: LCALL LCD_CLR
CLR A
CLTR C
SUBB A,#1
MOV A,R0
ADD A.#1
LCALL WRITE_HEX
SJMP $
Modyfikacja powyższego programu polegająca na tym , że dodaje om liczbę -10 do wartości pobranej z klawiatury
*****************************************
LEKCJA 3B - OPERACJE ARYTMETYCZNE
ZAD.1- LICZBY UJEMNE U2
**********************************************
START:
CLR A ;zeruj A
CLR C ;zeruj C
SUBB A,#0AH ;A <- 0-10 = -10
MOV R1,A ;zapamiętaj w R1
LCALL WRITE_HEX
LCALL WAIT_KEY ;wczytaj z klawiatury
ADD A,R1 ;A <- A+10 =-10+key
LCALL WRITE_HEX
SJMP $
Schemat algorytmu programu
Powyższy program najpierw zapisuje do akumulatora liczbę -10 poprzez odjecie liczby 10 od 0 , a następnie po zachowaniu tej liczby w R0 dodaje ja do drugiej liczby pobranej z klawiatury .
Wskaźnik C jest zerowany ponieważ instrukcja SUBB używa tego wskaźnika i gdyby był ustawiony to wynik odejmowania byłby zły .
Zadanie nr 2
Program modyfikuję tak, aby dokonywał mnożenia liczb w postaci BCD
Powtarzające się sekwencje zamiany liczby na kod BCD umieszczone są w podprogramie „BCD”
LJMP START
ORG 100H
START:
LCALL WAIT_KEY ;OCZEKIWANIE NA DANĄ Z
;KLAWIATURY
PUSH ACC ;AKUMULATOR NA STOS
ACALL BCD ;ODWOLANIE DO PROGRAMU BCD
LCALL WRITE_HEX ;LICZBA ZAMIENIONA NA BCD
;JEST NA WYŚWIETLACZU LCD
MOV A,#'*'
LCALL WRITE_DATA ;WPISZ ZNAK „*” NA LCD
LCALL WAIT_KEY
PUSH ACC
ACALL BCD
LCALL WRITE_HEX
MOV A,#'='
LCALL WRITE_DATA ;WPISZ ZNAK „=” NA LCD
POP ACC ;STOS DO AKUMULATORA
MOV B,A
POP ACC
MUL AB ;POMNÓŻ A*B (HEX)
ACALL BCD ;ZAMIEŃ WYNIK MNOŻENIA NA
;KOD BCD
LCALL WRITE_HEX ;WYŚWIETL
SJMP $
BCD:
PUSH B
MOV B,#10
DIV AB
SWAP A
ADD A,B
POP B
RET
;Podprogram zamiany NKB na BCD
NKB_BCD:
MOV B,#10 ;zamień liczby na BCD
DIV AB ;dzieląc przez 10
SWAP A
ADD A,B
LCALL WRITE_HEX ;wypisz na LCD
RET
ALGORYTM PROGRAMU
Zadanie 3
Program dokonujący konwersji z BCD do BIN :
START
Wprowadź do rejestru R1
z ACC (-10)
Wczytaj liczbę z klawiatury
Dodaj do tej liczby
wartość z R1
Wynik wyprowadź na LCD
START
Pobierz 1 czynnik i połóż na stosie
Podprogram NKB_BCD
Pobierz 2 czynnik i
połóż nastosie
Wyświetl znak (+)
Wyświetl znak (=)
Pobierz ze stosu do B i ACC
Pomnóż ACC iB
Podprogram NKB_BCD
Podprogram zamiany liczby NKB na BCD i wyświetlanie jej na LCD
Podprogram NKB_BCD