assembler€86ˆ 8

assembler€86ˆ 8



196


7. Wybrane techniki programowania

TAB 3

TAB 4

Rys. 7.8.

W przypadku, gdy tablice sÄ… zlokalizowane tak jak na rys. 7.8, powyższy program zniszczy ostatnie elementy tablicy TAB4, należy zatem zmienić kierunek transmisji tak, aby odbywaÅ‚a siÄ™ poczÄ…wszy od wiÄ™kszych do mniejszych adresów

MOV CX, 300    ; liczba bajtów do przesÅ‚ania

MOV SI, SEG TAB 3    ; adres źródÅ‚a

MOV DS, SI

MOV SI, OFFSET TAB 3 + 299

MOV DI, SEG TAB4    ; adres przeznaczenia

MOV ES, DI

MOV DI, OFFSET TAB 4 + 299

STD    ; od wiÄ™kszych do mniejszych adresów

RE P MOVSB

• Rozkaz MOVS umożliwia również wypełnienie stałą wartością zadanej tablicy. Przykład programu wpisującego do tablicy TAB 5 stałą 5555H (rys. 7.9)

♦


MOV CX, LENGTH TAB 5-1 LDS SI, TAB 5 ADRES MOV WORD PTR [SI], 5555H LES DI, TAB_5_ADRES INC DI INC DI CLD

REP MOYSW


; wielkość tablicy TAB 5 -1 ; adres tablicy

; wpisz do pierwszego słowa ; adres drugiego słowa w tablicy


Powyższą operację można zrealizować też za pomocą rozkazu STOS. Jest to rozwią zanie krótsze, ale wykorzystujące akumulator

; stała do wpisania


PUSH AX MOV AX, 5555H

powered by

Mi si©n

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

TAB 5

TAB8

Bajt 1

Bajt 2

Bajt 3

Bajt 4

SÅ‚owo 1

5555H

Bajt 5

Bajt 1

SÅ‚owo 2

Bajt 2

SÅ‚owo 3

♦ -i -1

Bajt 3

«_1 TAB_9

Bajt 252

â–¡

Bajt 253 1

SÅ‚owo 150

Bajt 254

Bajt 64

Bajt 255

Bajt 256

Rys. 7.10.

Rys.7.9.

; wielkość tablicy TAB 5 ; adres tablicy


MOV CX, LENGTH TAB 5 LDS DI, TAB 5_ADRES CLD

REP STOSW POP AX

• Rozkazy Å‚aÅ„cuchowe używane bez przedrostków powodujÄ… wykonanie dziaÅ‚ania (np. przesÅ‚ania) na jednym elemencie Å‚aÅ„cucha. PrzykÅ‚adowo można zorganizować przepisywanie tablic z równoczesnym wykonywaniem dziaÅ‚aÅ„ na elementach. NastÄ™pujÄ…cy program przepisuje bajty tablicy TAB 6 do TAB 7 pomijajÄ…c bajty równe 55H

PI:


; ustaw znaczniki, czy bajt = 55H ?


M()V CX, S1ZE TAB 6 MOV SI, SEG TAB 6 MOV DS, SI

MOV SI, OFFSET TAB 6 MOV DI, SEG TAB 7 MOV ES, DI

MOV DI, OFFSET TAB 7 CLD

CMP BYTE PTR [SI], 55H


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


; adres przeznaczenia


MOVSB JNZP2 DEC Dl LOOP PI


P2:


; prześlij niezależnie od wyniku porównania

; usuń przesłany bajt równy 55H ; następny bajt

Przykład utworzenia tablicy TAB 9 z co czwartego bajtu tablicy TAB 8 (rys. 7.10)

MOV CX, 64

LDS SI, TAB 8 ADRES

LES DI, TAB 9 ADRES ; liczba bajtów wynikowych ; adres tablicy źródÅ‚owej ; adres tablicy przeznaczenia

â– 


Wyszukiwarka

Podobne podstrony:
assembler?86? 2 184 7. Wybrane techniki programowania Z tworzeniem podprogramów zasadniczo są zwią
assembler?86? 3 186 7. Wybrane techniki programowania Przykład • •• ASSUME SS:STOS MOV AX, STOS MO
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? 7 194 7. Wybrane techniki programowania WEKTOR_P 32 EQU STOS WORD PTR ES:32*4 SEGMEN
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
ALG#4 234 Rozdział 9. Zaawansowane techniki programowania problemu. Mimo iź wersje iteracyjne i reku
karą techniczną drużyny, która dokonała przekroczenia. W przypadku, gdy krążek zniknie z pola widzen
Ewolucja technik programowania■Zestawienie cech wybranych języków programowania Language
Końcowym etapem pracy jest opracowanie projektu krajobrazowego dla wybranego wnętrza WAK (tab.5) lub
IV. TREŚCI PROGRAMOWEWymiar zajęć programowych Tab. 1. Wymiar zajęć
assembler?86? 8 236    9. Wykorzystanie procedur systemowych w programach użytkowyc
assembler?86? 8 25610. Przykłady programów z parametrem błędnym (różnym od 1 lub 2) powoduje wyświ
assembler?86? 8 216 8. Uruchamianie programów asemblerowych Wywołanie programu bibliotekarza A>

więcej podobnych podstron