POLITECHNIKA LUBELSKA w LUBLINIE |
Laboratorium techniki mikroprocesorowej |
||
|
Ćwiczenie Nr 3B |
||
Wykonujący: Paweł Sobotka Krzysztof Waśkowicz |
Semestr: V |
Grupa: ED5.2 |
Rok akademicki: 1999/2000 |
Temat: Operacje arytmetyczne |
Data: 18.10.1999 |
Ocena |
ZADANIE NR.1
Modyfikacja programu z zad.1
Program dodaje 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
W zapisie uzupełnienia do 2 wszystkie ujemne liczby mają najstarszy bit ustawiony na 1, natomiast najstarszy bit liczb dodatnich ustawiony jest na 0. Liczby w kodzie uzupełnienia do 2 są z zakresu -128...127. Przy dodawaniu liczb z tego zakresu, których suma jest większa od 127 powstaje problem, gdyż suma tych liczb odczytywana jest jako liczba ujemna. Aby zasygnalizować to zdarzenie używa się specjalnej flagi OV, która sygnalizuje wystąpienie tego problemu
ZADANIE NR.2
Program dokonuje mnożenia liczb w postaci BCD
;******************************************* ; LEKCJA 3B - OPERACJE ARYTMETYCZNE ; ZAD.2 - MNOŻENIE LICZB W FORMACIE BCD
;*******************************************
LJMP START
ORG 100H
START:
LCALL LCD_CLR
LCALL WAIT_KEY ;pobierz pierwszy czynnik
PUSH ACC
LCALL NKB_BCD ;wypisz na LCD
MOV A,#'*' ;znak iloczynu
LCALL WRITE_DATA ;wyświetl jako znak
LCALL WAIT_KEY ;pobierz drugi czynnik
PUSH ACC
LCALL NKB_BCD ;wypisz na LCD
MOV A,#'=' ;znak równości
LCALL WRITE_DATA ;wyświetl jako znak
POP ACC
POP B
MUL AB ;pomnóż czynniki
LCALL BIN1_BCD1 ;wypisz wynik na LCD
SJMP $
;************************************************************************
;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
Wynik wyprowadź na LCD
Dodaj do tej liczby
wartość z R1
Wczytaj liczbę z klawiatury
Wprowadź do rejestru R1
z ACC (-10)
START
Pobierz 1 czynnik i połóż na stosie
Podprogram NKB_BCD
Pobierz 2 czynnik i
połóż nastosie
START
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