9187


Laboratorium Podstaw Systemów Mikroprocesorowych

Nazwisko i imię wykonawców:

Czuryło Paweł ,Banach Tomasz

Symbol grupy

ED. 5.1

Data wyk. Ćwiczenia

1999.10.18

Symbol ćwiczenia

3b

Temat zadania

Operacje arytmetyczne.

ZALICZENIE

Ocena

Data

Podpis

1. Cel ćwiczenia.

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

2. Wykonanie ćwiczenia:

1) Dodawanie liczb zapisanych w kodzie U2.

Analizowany program:

***************************************************************

;LEKCJA 3b - OPERACJE ARYTMETYCZNE

;PRZYKŁAD 1 - LICZBY UJEMNE U2

LJMP START

ORG 100H

START:

LCALL LCD_CLR

CLR A ;zeruj A

CLR C ;zeruj C

SUBB A,#1 ;A <- 0-1 = -1

MOV R0,A ;zapamiętaj w R0

LCALL WRITE_HEX

MOV A,R0 ;A <- R0=-1

ADD A,#1 ;A <- A+1 = -1+1 = 0

LCALL WRITE_HEX

SJMP $

***************************************************************************

Program zmodyfikowany:

***************************************************************************

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 $

***************************************************************************

0x08 graphic
Schemat blokowy algorytmu:

Wprowadź do rejestru R1

z ACC (-10)

Wczytaj liczbę z klawiatury

Dodaj do tej liczby

wartość z R1

Wynik wyprowadź na LCD

2)Mnożenie liczb w postaci BCD

1 ;************************************************

2 ;LEKCJA 3b - OPERACJE ARYTMETYCZNE

3 ;PRZYKťAD - MNOŻENIE LICZB W FORMACIE BCD

4 ;************************************************

5

6 0000: 02 01 00 LJMP START

7 0100: ORG 100H

8 0100: START:

9

10 0100: 12 81 0C LCALL LCD_CLR

11

12 0103: 12 81 1C LCALL WAIT_KEY ;pobierz pierwszy czynnik

13 0106: F8 MOV R0,A

14 0107: 12 81 04 LCALL WRITE_HEX ;wyświetl go na LCD

15 010A: 74 2A MOV A,#'*'

16 010C: 12 81 02 LCALL WRITE_DATA

17 010F: 12 81 1C LCALL WAIT_KEY ;pobierz drugi czynnik

18 0112: F9 MOV R1,A

19 0113: 12 81 04 LCALL WRITE_HEX

20 0116: 74 3D MOV A,#'='

21 0118: 12 81 02 LCALL WRITE_DATA

22 011B: E8 MOV A,R0

23 011C: 89 F0 MOV B,R1

24 011E: A4 MUL AB ;mnożenie rejestrów A i B

25

26 011F: 75 F0 0A MOV B,#10

27 0122: 84 DIV AB ;dzielenie A przez B(10)

28 ;wynik dzielenia w A

29 ;reszta z dzielenia w B

30 0123: C4 SWAP A ;zamień pół bajty

31 0124: 25 F0 ADD A,B dodaj liczbę jednostek

32 0126: D4 DA A

33 0127: 12 81 04 LCALL WRITE_HEX

34 012A: 02 01 2A LJMP $

Algorytm programu

0x08 graphic

3)Samodzielne opracowanie programu

Program dokonujący konwersji liczby zapisanej w formacie spakowane BCD do postaci binarnej

Listing programu:

***************************************************************************

; ZAMIANA BCD-BIN

LJMP START

ORG 100H

START:

LCALL LCD_CLR

CLR A

CLR C

MOV A,#114 ;WPROWADŹ LICZBĘ 72DEC = 0111 0010BCD

MOV R0,A ;R0<-R0=A=72

MOV B,#10H ;

DIV AB ;OBLICZA CYFRĘ DZIESIĄTEK

MOV B,#10 ;DO B WPROWADŹ 10 DEC

MUL AB ;OBLICZA LICZBĘ DZIESIĄTEK

MOV R1,A ;R1<-R1=A=70

MOV A,R0

SWAP A ;WYZNACZAMY

MOV B,#10H ;CYFRĘ JEDNOŚCI

DIV AB

ADD A,R1 ;DODAJEMY LICZBE DZIESIĘTNĄ DO JEDNOŚCI

LCALL WRITE_HEX ;WYPROWADŹ NA LCD W POSTACI HEX.

SJMP $

***************************************************************************

0x08 graphic
Schemat blokowy programu:

Wprowadzamy liczbę 72

w postaci spakowanego BCD

Przeliczanie liczby dziesiątek

Przeliczanie liczby jedności

Zestawienie cyfry jedności

z cyfrą dziesiątek

poprzez zsumowanie ich

wartości

3. Wnioski.

Rozkazy mnożenia i dzielenia są prawidłowo wykonywane tylko dla liczb binarnych. Użycie tych rozkazów dla liczb w kodzie uzupełnienia do 2 lub w BCD daje błędne wyniki.

Podsumowując, należy zauważyć, że mikrokontroler pozwala na bezpośrednią realizację następujących działań na liczbach jednobajtowych:

- odejmowanie SUBB,

- dodawanie ADD, ADDC + rozkaz korekcji dziesiętnej DAA.

Pobierz 1 czynnik

Pokaż na LCD

Wprowadź go do rejestru R0

Pobierz 2 czynnik

Pokaż na LCD LCDLC0x01 graphic
D

Wprowadź go do R1

Wprowadź R0 do akumulatora

Wprowadź R1 do rejestru B

Pomnóż A i B

Zamiana półbajtów akumulatora

Dodaj A i B

Wyświetl wynik na LCD



Wyszukiwarka

Podobne podstrony:
9187
9187
1 Dydaktyka, pojęcia, metody badaniaid 9187 ppt
9187
arkusz Geografia poziom p rok 2010 9187
9187
9187
9187
9187
9187
9187
9187
9187
9187
arkusz Geografia poziom p rok 2010 9187 MODEL
9187

więcej podobnych podstron