Konwersja szesnastkowo dziesietna za pomoca procesora Z80


Temat: Konwersja szesnastkowo-dziesiętna.

Skład grupy:

Paweł Wyszyński

Arkadiusz Żanowski

Zadanie:

Zamodelować program realizujący konwersję szesnastkowo-dziesiętną za pomocą procesora Z80.

Do zrealizowania tego zadania zakładamy że:

- w komórce 101h - liczba setek;

- w komórce 102h - liczba dziesiątek;

- w komórce 103h - liczba jedności;

Algorytm działania programu:

  1. Sprawdź czy liczba jest większa lub równa 100, jeśli tak to podziel ją przez 100, wynik zapisz do komórki pamięci 101h. Przejdź do 2). Jeśli nie to do 101h wpisz wartość 0. Jeśli liczba jest mniejsza od 100 i jest większa lub równa 10 to podziel ją przez 10, wynik zapisz do komórki pamięci 102h. Jeśli liczba jest mniejsza od 10 to zapisz ją do komórki pamięci 103h.

  2. Resztę z dzielenia przez 100 sprawdź czy jest większa lub równa 10 jeśli tak to podziel ją przez 10, wynik zapisz do komórki pamięci 102h. Przejdź do 3). Jeśli nie to do 101h wpisz wartość 0.

  3. Resztę z dzielenia przez 10 wpisz do komórki pamięci 103h.

Graficzny algorytm programu:

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

Program konwersji z opisami:

################################################################################

# #

# Micro Series Z80 Assembler V1.25/MD1 14/Apr/99 19:30:05 #

# #

# Source = c:kon.s01 #

# List = c:kon.lst #

# Object = c:kon.r01 #

# Options = #

# #

# (c) Copyright IAR Systems 1984 #

################################################################################

1 ;konwersja szesnastkowo-dziesiętna

2 ;wejście 100h

3 ;wynik 101h-setki, 102h-dziesiatki, 103h-jednosci

4

5 0000 org 0h

6 0000 3A0001 ld a,(100h)

7 0003 4F ld c,a

8 0004 3E64 ld a,100 ;sprawdzanie czy liczba < 100

9 0006 B9 cp c ;porównaj zawartość c z a

10 0007 CA1500 jp z,pierwsza

11 000A DA1500 jp c,pierwsza

12 000D 3E00 ld a,0 ;mniejsza do 100 wiec do 101h wartość 0

13 000F 320101 ld (101h),a

14 0012 C32200 jp druga ;mniejsze od 100 to do druga

15 0015 pierwsza: ;dzielenie przez 100

16 0015 1664 ld d,100

17 0017 CD4B00 call dziel

18 001A 79 ld a,c

19 001B 320101 ld (101h),a

20 001E 48 ld c,b

21 001F C33300 jp druga1

22 0022 druga: ;mniejsza od 100

23 0022 3E0A ld a,10 ;sprawdzanie czy liczba < 10

24 0024 B9 cp c

25 0025 CA3300 jp z,druga1

26 0028 DA3300 jp c,druga1 ;mniejsze od 10 to do trzecia i od 102 wartość 0

27 002B 3E00 ld a,0

28 002D 320201 ld (102h),a

29 0030 C34300 jp trzecia

30 0033 druga1:

31 0033 160A ld d,10

32 0035 CD4B00 call dziel

33 0038 79 ld a,c

34 0039 320201 ld (102h),a ;wynik dzielenia przez 10

35 003C 78 ld a,b

36 003D 320301 ld (103h),a ;reszta z dzielenia przez 10

37 0040 C34A00 jp koniec

38 0043 trzecia: ;mniejsza od 10

39 0043 79 ld a,c

40 0044 320301 ld (103h),a ;to co na wejściu było to do 103h bo mniejsze od 10

41 0047 C34A00 jp koniec

42

43 004A koniec:

44 004A 76 halt

45

46 004B dziel: ;dzielenie z poprzedniego laboratorium

47 004B 0600 ld b,0

48 004D 1E09 ld e,9 ;inicjalizacja licznika bitów w rejestrze pomocniczym

49 004F 78 ld a,b ;najbardziej znaczący bit dzielnika do akumulatora

50 0050 start:

51 0050 47 ld b,a ;zawartość a do b

52 0051 79 ld a,c ;najmniej znaczący bit dzielnej do akumulatora

53 0052 17 rla ;przesuń akumulator w lewo (najmniej znaczący bit

54 ;dzielnika)

55 0053 4F ld c,a ;zawartość akumulatora zapisz do c

56 0054 1D dec e ;zmniejsz o 1 licznik bitów

57 0055 CA6200 jp z,p1 ;jeśli licznik=0 to skocz do p1

58 0058 78 ld a,b ;najbardziej znaczący bit dzielnej do akumulatora

59 0059 17 rla ;przesuń w lewo a (najbardziej znaczący bit dzielnika)

60 005A 92 sub d ;odejmij od a zawartość d (dzielnik)

61 005B D25000 jp nc,start ;jeśli CY=0 to skocz na start

62 005E 82 add a,d ;jeśli nie to dodaj do a zawartość d (dzielnik)

63 005F C35000 jp start ;skocz na start

64 0062 p1:

65 ;p1 jest wykonywane dopiero po przetestowaniu

66 ;wszystkich bitów

67

68 0062 17 rla ;przesuń a w lewo

69 0063 5F ld e,a ;zawartość a do e (rejestr pomocniczy)

70 0064 3EFF ld a,255 ;do a wpisz wartość 255 (FFh)

71 0066 A9 xor c ;dodaj modulo 2 zawartość c do akumulatora

72 0067 4F ld c,a ;zawartość a zapisz do c (wynik dzielenia)

73 0068 7B ld a,e ;zawartość e (rejestr pomocniczy) do akumulatora

74 0069 1F rra ;przesuń w prawo akumulator

75 006A C9 ret

76

77 006B end

Errors: None #######

Bytes: 107 # kon #

CRC: DB10 #######

Konwersja szesnastkowo-dziesiętna wykorzystuje algorytm dzielenia, operację porównywana zawartości rejestrów oraz zapisu poszczególnych wyników do odpowiednich komórek pamięci. Operację dzielenia przeprowadzamy za pomocą programu zamodelowanego na poprzednim laboratorium.

Przykładowa konwersja i postać jej zapisu w programie:

Liczba - 100h

101h

102h

103h

FF (255)

02

05

05

CB (203)

02

00

03

AA (170)

01

07

00


Laboratorium

z

Techniki Mikroprocesorowej

Temat: Konwersja szesnastkowo-dziesiętna.

Skład grupy:

Paweł Wyszyński

Arkadiusz Żanowski

Sprawdź, czy liczba lub reszta dzielenia przez100 jest >=10...

Podziel przez 100, wynik wstaw do 101h

Sprawdź, czy liczba jest >=100...

START

Podziel przez 10, wynik wstaw do 102h

Wstaw resztę z dzielenia przez 10 do 103h

Zapisz liczbę do 103h

Koniec



Wyszukiwarka

Podobne podstrony:
konwersja za pomocą progr Super 2008
1.Wspomaganie procesu uzdrawiania za pomocą magnetostymulacji, Magnetoterapia
Analiza procesu tłoczenia blachy za pomocą elastycznego stempla
Czy rekrutacja pracowników za pomocą Internetu jest
Leczenie za pomocą MIBG
Instrukcja do ćw 06 Sterowanie pracą silnika indukcyjnego za pomocą falownika
Badanie za pomocą ankiety, Psychologia
Dziwny obiekt w okolicy Słońca uchwycony za pomocą koronagrafu SOHO, W ஜ DZIEJE ZIEMI I ŚWIATA, ●txt
Ćw 4; Wyznaczanie gęstości cieczy za pomocą wagi hydrostatycznej
Metoda projektowania układów regulacji za pomocą linii pierwiastkowych
Wyznaczanie przyspieszenie ziemskiego za pomocą wahadła matematycznego
4 Wyznaczanie gęstości cieczy za pomocą wagi hydrostatycznej
13 Pomiar rezystancji za pomocą mostka prądu stałego
Podstawy Metrologii Pomiary małych rezystancji za pomoca mostka 6 ramiennego Protokol
Japoński mistrz wpływa na zwierzęta za pomocą energii Chi
Czy metodykę ITIL można wdrożyć za pomocą rozwiązań standardowych
Dane do polaczen za pomoca sruby dwustronnej
Oszacowanie parametrów charakterystyk podatnych połączeń stalowych za pomocą sieci neuro rozmytej

więcej podobnych podstron