assembler86 0

assembler86 0



180 6. Makrojęzyk asemblera MASM

DBA

ENDM

; wersja bez %

BAJTY MACRO A BAJTY

MACRO A

B =0

B = 0

REPT A

REPT A

BAJT %B

DB B

B = B+ 1

B = B -t-1

ENDM

ENDM

ENDM

ENDM

Wywołanie makroinstrukcji w postaci

BAJTY 3

BAJTY 3

spowoduje wygenerowanie dyrektyw

DBO

DB B

DB 1

DB B

DB 2

DB B

6.4. Przykłady stosowania makroinstrukcji

• Makroinstrukcja dokonująca konwersji tablicy (łańcucha) zawierającej kolejne cyfry liczby, wyrażone w kodzie ASCII, na jej dwójkową postać.    ^

ASCII BIN MACRO ŁAŃCUCH,DLUGOSC,WYNIK ; konwersja ASCII -* postać dwójkowa LOCAL DZIESIEC,START,OBLICZ,MNOZ,KONIEC JMP START

DZIESIECDB 10

START: MOV WYNIK,0

XOR CX,CX    ; CX«-0

MOV CL,DLUGOSC    ^

XOR SI,SI    ; SI«-0    '

OBLICZ: XOR AX,AX; AX<-0

MOV AL,ŁAŃCUCH [SI]; cyfra do konwersji SUB AL,30H; konwersja cyfry

CMP CX,2; czy ostatnia cyfra ?    .|

JL KONIEC; tak

PUSH CX; nie, schowaj CX, bo LOOP !

DEC CX

MNOZ:MUL CS:DZIESIEC; pomnóż cyfrę przez n*10, przy LOOP MNOZ; czym n określa pozycję cyfry POP CX

KONIEC: ADD WYNIK,AX; wynik poprawny o kolejną cyfrę INC SI; następna cyfra

powered by

6.4. Przykłady stosowania makroinstrukcji    I Mi sial

LOOP OBLICZ; do konwersji ENDM

Sposób wywołania

ASCIIBIN LICZBA,8,LICZBA BIN

• Makroinstrukcja umożliwiająca przepisywanie w pamięci bajtów, słów bądź podwójnych słów. Jest ona przykładem wywoływania makroinstrukcji wewnątrz innej makroinstrukcji. Głębokość zagnieżdżania makroinstrukcji jest ograniczona jedynie wielkością dostępnej w czasie asemblacji pamięci operacyjnej.

MOV BAJT


MOV SŁOWO


MOV PODWÓJNE


MOV ZMIENNA


MACRO X,Y; przesłanie bajtu MOV AL,Y MOV X,AL ENDM

MACRO X,Y ; przesłanie słowa PUSH Y POPX ENDM

MACRO X,Y ; przesłanie podwójnego słowa MOV_SLOWO < WORD PTR X >, < WORD PTR Y > MOV_SLOWO < WORD PTR X + 2>,< WORD PTR Y + 2>

ENDM

MACRO PRZEZN,ZRODLO IFE (TYPE PRZEZN)-(TYPE ZRODLO)

IFE (TYPE ZRODLO)-l

MOV BAJT PRZEZN, ZRODLO ELSE

IFE (TYPE ZRODLO)-l

MOV SŁOWA PRZEZN, ZRODLO;; tak, słowa! ELSE    ;; nie słowa

MOV PODWÓJNE PRZEZN, ZRODLO ;; podwójne słowa ENDIF ENDIF

ELSE    ;; typy niezgodne

CALL BLAD ENDIF


;; typy zgodne? ;; lak, bajty?

;; tak, bajty!

;; nie bajty ;; słowa ?


ENDM

Sposoby poprawnego wywołania

MOV_ZMIENNA BAJT 1, BAJT 2 MOV ZMIENNA SŁOWO l, SLOWO_2 MOV ZMIENNA BAJT 1, SLOWO_2 MOY ZMIENNA PODWOJNE1, PODWÓJNE 2


Wyszukiwarka

Podobne podstrony:
assembler?86? 7 174 6. Makrojęzyk asemblera MASM Przykład • Wywołanie makroinstrukcji IRPC X, 1234
assembler?86? 1 182 6. Makrojęzyk asemblera MASM Powyższe wywołania wygenerują następujące rozwini
assembler?86? 0 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
assembler?86? 6 172 6. Makrojęzyk asemblera MA SM dyrektywy pomocnicze PURGE, EXITM, LOCAL specjal
assembler?86? 8 176 6. Makrojęzyk asemblera MA SM MOV SI,OFFSET ZRODLO MOV DI,OFFSET PRZEZNACZENIE
assembler?86? 0 8. Uruchamianie programów asemblerowych8.1. Programy pomocnicze W rozdziale zostan
assembler?86? 0 60 4. Język asemblerowy nuKroprocesorów 8086/8088 ; OOh    16-23 DA
assembler?86? 0 220 8. Uruchamianie programów asemblerowych E adres [lista] Polecenie może mieć dw
img234 Kąt między wektorami <p Kąt między wektorami <pjest dany wzorem cos (p = - 0°< (p<
pds063 (2) tif Podstawy konstruowania programów w języku Asembler 63 asembler MASM praktycznie różni
45897 ZF Bień0 180 Kształtowanie struktury
Zarz Ryz Finans R050 180 Zarządzanie ryzykiem finansowym Pożyczka Przypuśćmy, że pożyczka została u
ET0 180 Rozdział 10. Polityka turystyczna Jedynym przedakcesyjnym programem pomocowym finansowanym
assembler?86? 0 20 2. Mikroprocesory 8086/8088 Znacznik kierunku DF jest wykorzystywany przy wykon
assembler?86? 1 42 4. Język asemblerowy mikroprocesorów 8086/80X8 (ODH). Asembler przetwarza łańcu

więcej podobnych podstron