assembler�86� 9

assembler�86� 9



198


7. Wybrane techniki programowania

CLD

PI:    MOVSB

; modyfikacja adresu źródła


; następny bajt


INC SI INC SI INC SI LOOP PI

W dotychczasowych przykładach rozkazów łańcuchowych z przedrostkiem (wielokrotnych) był wykorzystywany przedrostek REP powodujący wykonanie rozkazu wielokrotnego, kończącego się z chwilą wyzerowania rejestru CX. Zastosowanie przedrostków REPE/REPZ/REPNE/REPNZ umożliwia dodatkowe testowanie znacznika ZF i uzależnienie zakończenia wykonywania rozkazu od jego stanu.

•    Przykład przeszukiwania tablicy TAB10 począwszy od jej końca (tzn. większych adresów) do chwili napotkania bajtu zawierającego kod różny od kodu spacji (20H)

MOV CX, S1ZE TAB 10

STD    ; przeszukiwanie od końca

MOV AL, 20H    ; szukany wzorzec

LES DI, TAB_10_ADRES

ADD DI, (LENGTH TAB_10)-1    ; adres ostatniego bajtu

REPNE SCASB JZ ZNALEZIONO

JMP NIE ZNALEZIONO    <

•    Czasem zachodzi potrzeba znalezienia wzorca składającego się z kilku bajtów (znaków), np. czterech. Jeżeli w przeszukiwanej (tym razem od początku) tablicy znaki te są umieszczone kolejno jeden pod drugim, to program może mieć postać

; przeszukiwanie od początku

; kod dwóch pierwszych znaków ; kod kolejnych dwóch znaków


MOV CX, LENGTH TAB J1 CLD

MOV DI, SEG TAB ll MOV ES, DI

MOV DI, OFFSET TAB ll PI:    MOV AX, ZNAKI12

REPNE SCASW JNZ NIE ZNALEZIONO P2:    MOV DX, ZNAKI 3_4

CMP WORD PTR ES:[DI], DX JNZ PI

• Podprogram zamieniający w tekście wszystkie przecinki na spacje

; adres początku tekstu jest przekazywany do pod-; programu przez stos, długość tekstu ; natomiast przez rejestr CX

powered by

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


Mi sTól

STOS

STOS

PROGRAM

ZAMIEŃ


PORÓWNAJ:

KONIEC:


ZAMIEŃ

PROGRAM


SEGMENT STACK    -

DW 10 DUP ?

ENDS

SEGMENT

; kierunek

; adres tekstu

; koniec tekstu!

; zamiana

; odtworzenie ; stanu rejestrów


ASSUME CS:PROGRAM, SS:STOS PROC FAR PUSH BP MOV BP, SP PUSH AX PUSH CX PUSH ES PUSH DI PUSHF CLD

MOV AL, V

LES DI, DWORD PTR [BP + 6]

REPNE SCASB JCXZ KONIEC

MOV BYTE PTR ES:[DI-1], 20H JMP PORÓWNAJ POPF POP Dl POP ES POP CX POP AX POP BP

RET 4    ; powrót do podprogramu

; wywołującego i zwolnienie ENDP    ; obszaru przeznaczonego

ENDS    ; na parametry wywołania    ♦


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? 8 196 7. Wybrane techniki programowania TAB 3 TAB 4 Rys. 7.8. W przypadku, gdy tabli
assembler?86? 4 188 7. Wybrane techniki programowania Opisany mechanizm jest bardzo skutecznym nar
PI. Przygotowanie prezentacji ilustrującej lekcję z wybranego przedmiotu w programie w programie Mac
Ewolucja technik programowania■Zestawienie cech wybranych języków programowania Language
assembler?86? 9 78 4. Język asemblerowy mikroprocesorów 8086/8088 PROGRAM SEGMENT • • • A DALEKO E
assembler?86? 9 218 S. Uruchamianie programów asemblerowych z pliku o rozszerzeniu MAP pozwoli to
assembler?86? 9 238    9. Wykorzystanie procedur systemowych w programach użytkowyc
assembler?86? 9 25810. Przykłady programów 104 105    0871    D
img189 (9) r4.7 Frasprogramme mit Unterprogramm - Technik L 4.7.3 Programmier-iibung: Unter*
DOOATEK A ZASADA DUALNOŚCI Wełny pod uwagę zodonle programowanie liniowego (pi t r-w o t n o); Należ
Metody numeryczne w inżynierii produkcji Ocena z prezentacji projektu Techniki programowania II Oce

więcej podobnych podstron