assembler86 7

assembler86 7



194


7. Wybrane techniki programowania

WEKTOR_P 32 EQU STOS


WORD PTR ES:32*4 SEGMENT STACK


• ••

STOS    ENDS

DANE    SEGMENT

• • •

DANE

PROGRAM GŁÓWNY


PROGRAM GŁÓWNY PODPR PRZERWAŃ PODPR NMI


PODPR PRZERWAŃ


ENDS SEGMENT MOV AX,0 MOV ES,AX

MOV WEKTORNMI, OFFSET PODPR NMI MOV WEKTOR_P_4, OFFSET PODPR P 4 MOV WEKTORP32, OFFSET PODPR P_32 ; ciąg dalszy programu głównego ; jak w poprzednim przykładzie

ENDS SEGMENT PROC FAR

; segment podprogramów obsługi przerwań jak ; w poprzednim przykładzie

ENDS

7.3. Przetwarzanie łańcuchów (tablic)

Mikroprocesory 8086/8088, w porównaniu do swych 8-bitowych poprzedników, mają rozbudowaną grupę rozkazów umożliwiających proste, a przede wszystkim szybkie przetwarzanie łańcuchów, tablic i innych struktur danych w postaci ciągłego obszaru pamięci. Rozkazy te opisano szczegółowo w p. 5.4. Działają one podobnie jak rozkazy blokowe w mikroprocesorze Z80 (zob. np. [8]), chociaż ich koncepcja jest nieco odmienna. Stosowanie rozkazów transmisji łańcuchowych skraca czas operacji dzięki temu, iż rozkaz do wykonania jest pobrany jednokrotnie niezależnie od wielkości przetwarzanego łańcucha. Rozwiązanie klasyczne w postaci pętli wymaga wielokrotnego, zależnie od liczby przetwarzanych bajtów, pobierania odpowiedniego rozkazu.

Przykład

; program przesyła tablicę bajtów TAB1 do TAB 2 (w klasycznej pętli) i nie ; wykorzystuje rozkazów transmisji blokowych

; źródło adresowane przez rejestr SI ; przeznaczenie przez rejestr Dl ; następny element

; powtórz dla następnego elementu


PĘTLA: MOV AL, TAB J[SI]

MOV TAB 2[DI], AL INC SI INC DI

LOOP PĘTLA

; w powyższym programie przesłanie każdego bajtu jest związane z pobraniem 5

powered by

7.3. Przetwarzanie łańcuchów (tablic)


Mi sl^ol

kodów rozkazów (fetch) do jednokrotnego wykonania pętli

to samo można zrealizować jednym rozkazem łańcuchowym z przedrostkiem

(jednokrotne pobranie kodu jednego rozkazu i przedrostka

dla operacji przesłania całej tablicy)

REP MOVS TAB_2, TAB 1    +

Schemat blokowy realizacji tego rozkazu przedstawiono na rys. 5.3, w p. 5.4 przedstawiono natomiast ogólne założenia i reguły operacji łańcuchowych rejestrów DI. SI, DS, ES oraz znacznika DF. Operacje łańcuchowe mogą być realizowane na bajtach lub słowach. Aby asembler mógł wygenerować właściwy kod rozkazu, musi znać typ przetwarzanego łańcucha, który można zadeklarować.

Przykłady

• Deklaracja przez podanie argumentu rozkazu łańcuchowego, którego typ został zdefiniowany dyrektywą DB lub DW.

TAB 1 DB 100 DUP (?)

TAB 2 DB 200 DUP (?)

MOVS TAB 1,TAB 2    +

•    Deklaracja przez określenie typu, operatorem PTR.

MOVS BYTE PTR ES:[DI], DS:[SI]    ♦

•    Deklaracja przez zastosowanie właściwej mnemoniki rozkazu.

MOVSB - dla bajtów

MOYSW - dla słów    ♦

W tym ostatnim przypadku nie należy dopisywać żadnych argumentów, które są określone jednoznacznie zawartością rejestrów DS:SI oraz ES:DI. Poniżej Czytelnik znajdzie kilka przykładów typowego wykorzystania rozkazów łańcuchowych.

•Przepisanie zawartości TAB 1 do TAB 2 (rys. 7.7) można zrealizować sekwencją rozkazów

MOV CX, 300 MOV SI, SEG TAB 1 MOV DS, SI

MOV SI, OFFSET TAB 1 MOV DI, SEG TAB 2 MOV ES, DI

MOV DI, OFFSET TAB 2 CLD

REP MOYSB

; liczba bajtów do przesłania ; adres źródła

; adres przeznaczenia

; od niejszych do większych adresów



Wyszukiwarka

Podobne podstrony:
assembler?86? 3 186 7. Wybrane techniki programowania Przykład • •• ASSUME SS:STOS MOV AX, STOS MO
assembler?86? 2 184 7. Wybrane techniki programowania Z tworzeniem podprogramów zasadniczo są zwią
assembler?86? 5 190 7. Wybrane techniki programowania Offsc! Stos SP, nowe BP + 2 +4 + 6 
assembler?86? 6 192 7. Wybrane techniki programowania to wydzielony fragment pamięci operacyjnej (
assembler?86? 8 196 7. Wybrane techniki programowania TAB 3 TAB 4 Rys. 7.8. W przypadku, gdy tabli
assembler?86? 9 198 7. Wybrane techniki programowania CLD PI:    MOVSB ; modyfikacj
assembler?86? 4 188 7. Wybrane techniki programowania Opisany mechanizm jest bardzo skutecznym nar
assembler?86? 7 214 214 8. Uruchamianie programów asemblerowych Program CREF833. W wyniku działani
Resize of7 1    Wyjściowy obraz do programowania funkcji w wybranym systemie. 2
1tom015 1. WYBRANE ZAGADNIENIA Z MATEMATYKI I FIZYKI 32 Pole wektorowe a nazywa się różniczkowalnym,
53044 z motylem w tle7 I. Borecka, Z motylem w tle ® Ćwiczenie wybranych technik dramowych. © Omówi
Ewolucja technik programowania■Zestawienie cech wybranych języków programowania Language
assembler?86? 7 234 9. Wykorzystanie procedur systemowych w programach użytkowych Przerwania sprzę
assembler?86? 7 254 9. Wykorzystanie procedur systemowych w programach użytkowych • Przykład ilust

więcej podobnych podstron