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