assembler86 7

assembler86 7



174


6. Makrojęzyk asemblera MASM

Przykład

• Wywołanie makroinstrukcji

IRPC X, 1234 DB X ENDM

powoduje wygenerowanie w programie źródłowym dyrektyw

DB 1 DB 2 DB 3 DB 4

6.2. Makroinstrukcja definiowana

Ta makroinstrukcja umożliwia zdefiniowanie nowej instrukcji, której stosowanie w programie źródłowym powoduje generowanie ciągu rozkazów maszynowych, dyrektyw, komentarzy itp. (ogólnie wiersza programu). Składnia definicji jest następująca

nazwa    MACRO [listaparametrówfornialnych]

; treść makroinstrukcji:

; rozkazy, dyrektywy, komentarze itp.

ENDM

przy czym:

-    nazwa spełnia ogólne wymagania asemblera dotyczące nazw symbolicznych; w programie będzie służyć do wywoływania makroinstrukcji,

-    lista parametrów formalnych jeżeli występuje, to określa argumenty używane w definicji makroinstrukcji, które w czasie wywołania mogą być zmieniane.

Definicja makroinstrukcji w programie źródłowym nie powoduje w procesie asemblacji wygenerowania żadnego kodu wynikowego. Asembler zapamiętuje jedynie, jaką sekwencję rozkazów i dyrektyw należy wprowadzić do programu źródłowego po napotkaniu wywołania makroinstrukcji. Składnia wywołania jest następująca

nazwa [listaparametrówaktualnych]

lista ^parametrówaktualnych zawiera argumenty podstawione w rozwinięciu makroinstrukcji w programie źródłowym za argumenty z listyjparamelrów Jonnalnych.

Liczba argumentów w liście jest ograniczona jedynie długością wiersza programu. Liczba argumentów w obu listach musi być jednakowa. Gdy nie jest spełniony ostatni warunek, w rozwinięciu makroinstrukcji pomija się nadliczbowe argumenty lub też zamiast brakujących przyjmuje się argumenty puste.

Przykłady

• Definicja makroinstrukcji bez parametrów formalnych, pozwalająca symulować rozkaz przesłania zawartości wszystkich rejestrów do stosu

6.2. Makroinstrukcja definiowana

powered by

Mi siół5


PUSHALL MACRO

PUSH BP MOV BP,SP

IRP REJESTR, < AX,BX,CX,DX,SI,DI,DS,ES> PUSH REJESTR ENDM PUSHF

ENDM    ^

Wywołanie makroinstrukcji PUSHALL powoduje wygenerowanie przez asembler w miejscu wywołania następującej sekwencji rozkazów

PUSH BP

MOV BP, SP PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH DS PUSH ES

PUSH    «

•    Analogicznie można zdefiniować makroinstrukcję realizującą odwrotną funkcję

POPALL MACRO

POPF

IRP REJESTR, < ES,DS,DI,SI,DX,CX,BX,AX >

POP REJESTR ENDM MOV SP, BP POP BP

ENDM    ♦

Należy pamiętać o ustawieniu poszczególnych rejestrów we właściwej kolejności.

•    Definicja makroinstrukcji z parametrami formalnymi, pozwalającej przepisać tablicę bajtów o dowolnej długości w pamięci operacyjnej

DANE SEGMENT

• • • •

PREPISZ TAB MACRO ZRODLO,PRZEZNACZENIE,DLUGOSC

PUSH ES MOV AX,DS MOV ES,AX; ES = DS ASSUME ES:DANE


Wyszukiwarka

Podobne podstrony:
assembler?86? 1 182 6. Makrojęzyk asemblera MASM Powyższe wywołania wygenerują następujące rozwini
assembler?86? 0 180 6. Makrojęzyk asemblera MASM DBA ENDM ; wersja bez % BAJTY MACRO A BAJTY M
assembler?86? 7 74 4. Język asemblerowy mikroprocesorów 8086/8088 Przykład ZMIENNA A DW 5*5 ; =
assembler?86? 7 54 4. Język asemblerowy mikroprocesorów 8086/8088 kowych informacji czy skoki do (
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 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
assembler?86? 5 50 4. Język asemblerowy mikroprocesorów 8086/8088 ; w kolejnym przykładzie zmienne
assembler?86? 7 134 5. Rozkazy mikroprocesorów 8086/8088 Przykłady MOVCL, 11 ROR ZMIENNA[BP], CL
assembler?86? 7 214 214 8. Uruchamianie programów asemblerowych Program CREF833. W wyniku działani
assembler?86? 7 254 9. Wykorzystanie procedur systemowych w programach użytkowych • Przykład ilust
skan0171 (2) 174 Roztwory i równowagi fazowe Przykład 4.16. W tab. 4.12 zestawiono dla ciśnienia 760
{Przykładowe wywołanie programu dla widm NBUT20 i NBUT80} » odejmijwidma( NBUT20 , NBUT80 ); Funkcja
pds063 (2) tif Podstawy konstruowania programów w języku Asembler 63 asembler MASM praktycznie różni
73992 skanuj0023 (174) Rys. 1.10. Rozważmy przykład cząsteczki dibromometanu CH2Br2. Ma ona dwie pła
WSiP7 PODSTAWY BAZ DANYCH 37 PRZYKŁAD 9.3 Prześledźmy tę teorię, posługując się przykładem:A
skan0171 (2) 174 Roztwory i równowagi fazowe Przykład 4.16. W tab. 4.12 zestawiono dla ciśnienia 760

więcej podobnych podstron