profesory3b.doc

(130 KB) Pobierz
ZASTOSOWANIE CHRONOMETRA¯OWO - TABELARYCZNYCH METOD OCENY OBCI¥¯ENIA PRAC¥ DO OKREŒLENIA WYDATKU ENERGETYCZNEGO

 

 

 

 

Laboratorium Podstaw

Systemów Mikroprocesorowych

 

 

 

 

 

 

 

Ćwiczenie nr 3B

 

OPERACJE ARYTMETYCZNE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Wykonawcy:

 

Marcin Grabowiecki

Jacek Gawęda

Sebastian

Data wykonania:

 

97.11.07

Celem ćwiczenia jest zapoznanie się ze sposobem wykonywania podstawowych operacji arytmetycznych na liczbach jednobajtowych oraz metod konwersji formatów stosowanych do reprezentacji danych.

 

Zadanie nr1

 

              LJMP              START

              ORG              100H

START:

              LCALL              LCD_CLR

              CLR              A

              CLR C

              SUBB               A,#1

              MOV              R0,A

              LCALL WRITE_HEX

              MOV              A,R0

              LCALL              WRITE_HEX

              MOV              A,R0

              ADD              A,#1

              LCALL              WRITE_HEX

 

              SJMP              $

 

Efektem działania programu jest pojawienie się “FF00”

 

Modyfikacja programu polegająca na odejmowaniu liczby 10 od wartości pobranej z klawiatury:

 

 

              LJMP              START

              ORG              100H

START:

              LCALL              LCD_CLR              wyczyść wyświetlacz

              LCALL              WAIT_KEY              pobierz liczbę z klawiatury do akumulatora

              MOV              R0,A                            wpisz tą liczbę do rejestru R0

LCALL              WRITE_HEX              wyświetl tą liczbę

              MOV              A,#'-'                            wpisz do akumulatora liczbę odpowiadającą “-” w ASCII

              LCALL              WRITE_DATA              wyświetl ten znak

              MOV              A,#'1'                             wpisz do akumulatora liczbę odpowiadającą “1” w ASCII

              LCALL              WRITE_DATA              wyświetl ten znak

              MOV              A,#'0'                            wpisz do akumulatora liczbę odpowiadającą “0” w ASCII

              LCALL              WRITE_DATA              wyświetl ten znak

              CLR              A                            wyzeruj A

              CLR              C                            wyzeruj C

              SUBB              A,#10                            odejmij od akumulatora 10

              MOV              R1,A                            przenieś wartość akumulatora do R1

              MOV              A,#'='                            wpisz do akumulatora liczbę odpowiadającą “=” w ASCII

              LCALL              WRITE_DATA               wyświetl ten znak

              MOV              A,R0                            R0:=A

              ADD              A,R1                            A:=A+R1

LCALL              WRITE_HEX              wyświetl A

              LJMP              $                            zapętl się

 

Efektem działania programu jest wyświetlenie wyniku odejmowania 10 od liczby wprowadzonej z klawiatury.

Wynik wyświetlany jest w kodzie szestnastkowym.

 

Zadanie nr 2

 

              LJMP              START

              ORG              100H

START:

 

              LCALL              LCD_CLR

 

              LCALL              WAIT_KEY              ;pobierz pierwszy czynnik

              MOV              B,#10                            ;zamień liczbę na BCD                            B = #10

              DIV              AB                            ;dzieląc przez 10

              SWAP              A

              ADD              A,B

              MOV              R1,A                            ;zapamiętaj w R1 (BCD)

              LCALL              WRITE_HEX              ;wypisz na LCD

 

              MOV              A,#'+'                            ;znak sumy

              LCALL              WRITE_DATA              ;wyświetl jako znak

 

              LCALL              WAIT_KEY              ;pobierz drugi czynnik

              MOV              B,#10                            ;zamień liczbę na BCD

              DIV              AB                            ;dzieląc przez 10

              SWAP              A

              ADD              A,B

              MOV              R0,A                            ;zapamiętaj w R1 (BCD)

              LCALL              WRITE_HEX              ;wypisz na LCD

 

              MOV              A,#'='                            ;znak równości

              LCALL              WRITE_DATA              ;wyświetl jako znak

 

              MOV              A,R0                            ;pierwszy czynnik do A

              ADD              A,R1                            ;dodaj drugi czynnik

              DA              A                            ;poprawka dodawania

                                                        ;liczb BCD

 

              LCALL              WRITE_HEX              ;wypisz wynik na LCD

 

              SJMP              $

 

Program ten pobiera z klawiatury dwie liczby i dodaje je. Liczby są wyświetlane w kodzie BCD.

 

Nie możliwe jest mnożenie liczb bezpośrednio w kodzie BCD. Aby tego dokonać należy dokonać konwersji liczb BCD na binarne a następnie  pomnożyć je.

 

Niestety brak czasu nie pozwolił na napisanie tego programu.

 

Zgłoś jeśli naruszono regulamin