17

17



4 Instrukcje bajtowe) wymiany danych 37

Instrukcja XCHD stosowana jest do zamiany kodu BCD na inny kod, np na kod ASCII. Kodom BCD w zakresie 0..9 odpowiadają kody ASCII w zakresie 30H..39H. Program zamienia mniej znaczącą część liczby w kodzie BCD znajdującej się w komórce wewnętrznej pamięci RAM o adresie zawartym w rejestrze Rl:

Bcd_Asdi_l: .

MOV A,#30H    ;A <= 30H

XCHD A.®R1    ;A3..o«(RD3..o

Tłumaczona liczba zapisana w kodzie BCD jest niszczona.

Tablica z liczbami zapisanymi w kodzie BCD ma adres początkowy Adr_BCD i zajmuje N_BCD bajtów, a tablica z liczbami zapisanymi w kodzie ASCII ma adres początkowy Adr_ASCII i zajmuje 2*N_BCD bajtów. Program dokonuje zamiany kodów liczb z BCD na ASCII:

y


Bcd Asai_N:

MOV

R0,#Adr_BCD

;R0 c= Adr.BCD,

;rejestr RO adresuje tablicę z liczbami w kodzie BCD

MOV

Rl,#Adr_ASCH

;R1 <= Adr_ ASCII.

;rejestr Rl adresuje tablicę z liczbami w kodzie ASCII

MOV

R2,»N.BCD

;R2 c= N_BCD,

.rejestr R2 jest licznikiem liczby tłumaczonych bajtów

MOV

A,#30H

;kodom BCD 0..9 odpowiadają kody ASCII ;w zakresie 30H..39H

a:

.początek powtórzenia fragmentu programu

0

1

U

X

A.6R0

^3..0 c=>.(r°)3..0'

tłumaczenie mniej znaczących bitów

MOV

©Rl.A

;(Rl)c= A,

;zapis przetłumaczonych mniej znaczących bitów

XCH

A.eRO

;A co (RO)

SWAP

A

/■A7..4 A3..0

XCH

A,ORO

;A o (RO)

XCHD

A.@R0

;a3..o »<R0l3..0

INC

Rl

;R1 c= Rl +1

MOV

®R1.A

(Rl) <= A

;zapis przetłumaczonych bardziej znaczących bitów

INC

RO

;R0 c= RO + 1

INC

Rl

;R1 c= Rl ♦ 1

DJNZ

R2.PU

;R2 c= R2 -1, jeśli R2 r 0 to skok do etykiety Pla


Mikrokontroler 8WCMI - oropramowanip

Przykład:

Zamiana czterech mniej znaczących bitów z czterema bardziej znaczącymi bitami akumulatora, A = 1001 101 IB:

R1_A:

RL

A

;A c= 0011 0111B

RL

A

;A<= 01101110B

RL

A

;A c= 1101 1100B

RL

A

;A <= 10111001B

RLC A    Rotate Accumulator Left through Carry

Działanie    An+i c= An, n = 6..0

Ao«=C C c= A7

Adresowanie Mnemonik    Struktura bajtów:    Cykle    Znacz-

maszynowe:    nikt:

rejestrowe:    RLC A


| 0 0 1 1 | 0 0 1 1


C. I*


Opis działania:

Zawartość akumulatora przesuwana jest cyklicznie w lewo o jeden bit, bit A() przyjmuje wartość znacznika przeniesienia (C). a znacznik przeniesienia (C) wartość bitu A7. Sytuację tę przedstawia rysunek:


Przykład:

Mnożenie przez dwa 2-bajtowej liczby całkowitej bez znaku zawartej w rejestrach R6R7:

0oczyn_2:

CLR

C

,-C c= 0

MOV

A.R7

;A R7, R7 zawiera mniej znaczący bajt

RLC

A

.przesunięcie w lewo zawartości A,

; Aq <= C. C <= A7,

MOV

R7,A

;R7<= A

MOV

A,R6

;A <= R6. R6 zawiera bardziej znaczący bajt


Wyszukiwarka

Podobne podstrony:
17 4. Instrukcję bajtowe) wymiany danych 37 Instrukcja XCHD stosowana jest do zamiany kodu BCD na i
19 4. Instrukcje bajtowej wymiany danych 29 Grupa rozkazów MOVX dotyczy wymiany danych między mikro
11 •1 Instrukcje bajtowej wymiany danych
15 4 Instrukcje bajtowej wymiany danych 35 Pop_DPTR: POP DPH    ;DPH <= (SP) = 56
17 -ł Instrukcje bano we; wymiany danych 27 -ł Instrukcje bano we; wymiany danych 27 MOV R4.0C4H MO
13 4 Instrukcje bajtowej wymiany danych 33 i komórki wewnętrznej pamięci KAM o adresie SOH: Mov_RAM
15 4 Instrukcje bajtowej wymiany danych 35 Pop_DPTR: POP DPH    ;DPH c= (SP) = 56H,
19 4 Instrukcje bajtowe) wymiany danych 39 Przykład: Przesianie zawartości czterech banków rejestró
17 5. Instrukcje arytmetyczne 47 INC argument Increment Działanie: A <= A +1 Rn c= Rn + 1 (
11 4. Instgjkc)c bajtowe) wymiany danych 31 4. Instgjkc)c bajtowe) wymiany danych
17 5. Instruktaż na stanowisku roboczym i nadzór 227 Nowo przyjętych pracowników możemy podzielić n

więcej podobnych podstron