Mikroprocesory, Micro 03b, Laboratorium Podstaw System˙w Mikroprocesorowych


Laboratorium Podstaw Systemów Mikroprocesorowych

Nazwisko i imię wykonawców:

Wiesław Rycerz, Tomasz Sugier

Symbol grupy

ED. 5.4

Data wyk. Ćwiczenia

1997-10-27

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 $

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

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

Dodawanie liczb w postaci BCD

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

;LEKCJA 3b - OPERACJE ARYTMETYCZNE

;PRZYKŁAD 2 - SUMOWANIE LICZB W FORMACIE BCD

LJMP START

ORG 100H

START:

LCALL LCD_CLR

LCALL WAIT_KEY ;pobierz pierwszy 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 R0 (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 R1,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 $

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

Samodzielne opracowanie programu.

Program ma za zadanie konwertować liczby zapisane w formacie spakowanym BCD na postać binarną.

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 $

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

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

4). Mnożenie.

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

;LEKCJA 3b - OPERACJE ARYTMETYCZNE

; MNOŻENIE

LJMP START

ORG 100H

START:

LCALL LCD_CLR

LCALL WAIT_KEY ;pobierz pierwszy 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 R0 (BCD)

LCALL WRITE_HEX ;wypisz na LCD

MOV A,#'*' ;znak MNOŻENIA

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 R1,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

MOV B,R1 ;dodaj drugi czynnik

MUL AB ;mnożenia A*B

;starsza część wyniku w B

;młodsza część wyniku w A

XCX A,B

LCALL WRITE_HEX ;wypisz starszą część

MOV A,B ;pobierz młodszą część

LCALL WRITE_HEX ;wypisz młodszą część

SJMP $

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

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.



Wyszukiwarka

Podobne podstrony:
Mikroprocesory, 5, LABORATORIUM PODSTAW
Ekologiczne podstawy systemu ws Nieznany
fiele25, Mechanika i Budowa Maszyn PWR MiBM, Semestr I, Fizyka, laborki, sprawozdania z fizykii, Lab
Laboratorium Podstaw Programowania 2
,Laboratorium podstaw fizyki, WYZNACZANIE WSPÓŁCZYNNIKA ROZSZERZALNOŚCI LINIOWEJ METODĄ
Laboratorium podstaw fizyki ćw ?
Laboratorium Podstaw Fizykipa
Laboratorium Podstaw Elektroniki
Laboratorium Podstaw Fizykiw
Podstawy Systemów Jakości
Podstawy Systemów Okrętowych wykład 04 Przeciw Pożarnicze
Laboratorium Podstaw Fizyki id Nieznany
Program Laboratorium Komputerowe systemy pomiarowe Gawędzki KSP
fiele15, Mechanika i Budowa Maszyn PWR MiBM, Semestr I, Fizyka, laborki, sprawozdania z fizykii, Lab
,laboratorium podstaw fizyki, pytania do laborek
,Laboratorium podstaw fizyki,?danie drgań wymuszonych
,laboratorium podstaw fizyki,WYZNACZENIE GĘSTOŚCI CIAŁ STAŁYCH
,Laboratorium podstaw fizyki, Sprawdzanie prawa Stefana Boltzmanna

więcej podobnych podstron