assembler€86ˆ 8

assembler€86ˆ 8



76    4. JÄ™zyk asemblerowy mikroprocesorów 8086/8088

LE (ang. lower eÄ…nal) - mniejszy lub równy,    I

GT (ang.greater then ) - większy niż,

GE (ang. greater eÄ…ual ) - wiÄ™kszy lub równy.    â– 

Jeżeli wynik porówniania jest prawdziwy, to wyrażenie przyjmuje wartość 1H, I w przeciwnym wypadku wartość OH. Porównywane etykiety bÄ…dź zmienne muszÄ… być zdefiniowane w tym samym segmencie - sÄ… bowiem porównywane ich adresy wzglÄ™dem I poczÄ…tku segmentu. Nie można porównywać wyrażeÅ„ liczbowych z etykietami oraz ze zmiennymi.

Przykład

MOV AX, OAAH AND XEQY    M

Jeżeli X = Y, to asembler wygeneruje rozkaz: M()V AX,0AAH. W przeciwnym wypadku rozkaz będzie miał postać: MOV AX, 0.

Operatory +,-

Operatory + , - pozwalajÄ… zrealizować sumÄ™ liczb caÅ‚kowitych lub różnicÄ™ arytmetycznÄ… liczb, zmiennych i etykiet wedÅ‚ug nastÄ™pujÄ…cych reguÅ‚    M

-    liczby mogÄ… być dodawane (lub odejmowane) jedynie do (od) liczb, etykiet lub zmiennych (tzn. ich offsetu) bÄ…dź nazwy segmentu (l/n. adresu poczÄ…tku segmentu), I

-    zmienne i etykiety nie mogÄ… być dodawane,    â– 

-    zmienne i etykiety mogÄ… być odejmowane wzajemnie jedynie wtedy, kiedy sÄ… zdefiniowane w tym samym segmencie,    1

-    można dodawać zawartość rejestru indeksowego i bazowego, np. [BX + DI), I

-    można dodawać lub odejmować liczby do (od) rejestru bazowego lub indeksowego

bÄ…dź ich sumy, np. [BP + SI - 10],    1

-    od liczby nie mogÄ… być odejmowane rejestry.    â– 

PrzykÅ‚ad    1

JMP ETYKIETA + 10H    1

AA    DB(10H + 14) DUP (?)    -M

MOV AX, ZMIENNA - 1    â™¦

Operatory HIGH, LOW    _â– 

Operatory HIGH i LOW sÅ‚użą do oddzielenia bardziej (HIGH) i mniej zna- I czÄ…cego (LOW) bajtu sÅ‚owa. Operatory sÄ… zwiÄ…zane wyÅ‚Ä…cznie z zagadnieniami zgod- â–  noÅ›ci programowej procesorów 8080/8085 i nie sÄ… stosowane w programach dla 8086. I

Operator PTR

Operator PTR przypisuje wyrażeniu adresowemu okreÅ›lony typ (BYTE, | WORD, DWORD dla zmiennych i FAR, NEAR dla etykiet).    ^9

Mi sfol


4.4. Wyrażenia i operatory

Składnia wyrażenia z operatorem PTR jest następująca typ PTR wyrażenieadresowe

Operator PTR musi wystąpić, jeżeli w rozkazie maszynowym nie ma wprost wskazania typu wyrażenia będącego argumentem.

Przykład

DEC [DI]

DEC BYTE PTR [DI]


; źle - nie wiadomo, czy ma być zmniejszane ; sÅ‚owo czy też bajt ; dobrze - ma być bajt

MOV [SI], OFFH    ; źle - nie wiadomo czy zmienna adresowana

; przez rejestr SI jest bajtem ?

MOV WORD PTR [SI], OFFH ; dobrze - zmienna jest słowem

i

JMP [BX]    ; źle - skok jest skokiem wewnÄ…trz

; segmentu, czy też międzysegmentowy ?

JMP WORD PTR [BX] ; dobrze - skok wewnÄ…trz segmentu

JMP DWORD PTR [BX]    ; dobrze - skok miÄ™dzysegmentowy

MOV AX, WORD PTR ZMBAJTOWA ; do akumulatora słowo

; rozpoczynajÄ…ce siÄ™ od ZM BAJTOWA MOV AH, BYTE PTR ZM_SLOWOWA ; do AH jeden bajt ze zmiennej

; ZMSLOWOWA

JMP FAR PTR ETYKIETA    ; skok do ETYKIETY zdefiniowanej

; w innym segmencie    +

Operator THIS

Operator THIS wytwarza atrybuty offset i segment dla aktualnej wartości wskaźnika pozycji asemblera oraz wskazanego (za operatorem) typu. Wraz z dyrektywą EQU operator THIS pozwala redefmiować zmienne i etykiety.

Przykład

dane segment

SLOW A l

bajty i Bajty~2

SLOWA2

SLOWa 3

bajty 3 tabela

Dane


atrybuty zdefiniowanych zmiennych OFFSET TYP LENGHT SIZE SEGMENT

0

2

1

2

DANE

0

1

100

100

DANE

100

1

1

1

DANE

100

2

200

400

DANE

500

2

1

2

DANE

500

1

1

1

DANE

500

4

100

400

DANE


powered by


EQU THIS WORD DB 100 DUP (?) EOU THIS BYTE DW 200 DUP (?) EQU THIS WORD EQU THIS BYTE DÅ‚> 100 DUP (?) ENDS


Wyszukiwarka

Podobne podstrony:
assembler?86? 8 56 4. Język asemblerowy mikroprocesorów 8086/8088 433. Połączenia międzymodułowe O
assembler?86? 0 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
assembler?86? 3 46 4. Język asemblerowy mikroprocesorów 8086/8088 PARA - początek segmentu będzie
assembler?86? 4 48 4. Język asemblerowy mikroprocesorów 8086/8088 tępne segmenty będą łączone jak
assembler?86? 5 50 4. Język asemblerowy mikroprocesorów 8086/8088 ; w kolejnym przykładzie zmienne
assembler?86? 6 52 4. JÄ™zyk asemblerowy mikroprocesorów 8086/8088 MOV AX, DANE 2    
assembler?86? 7 54 4. Język asemblerowy mikroprocesorów 8086/8088 kowych informacji czy skoki do (
assembler?86? 2 64 4. Język asemblerowy mikroprocesorów 8086/8088 64 4. Język asemblerowy mikropro
assembler?86? 3 66 4. Język asemblerowy mikroprocesorów 8086/8088 66 4. Język asemblerowy mikropro
assembler?86? 4 68 4. Język asemblerowy mikroprocesorów 8086/8088 Dyrektywy .LALL, .SALL, .XALL Dy
assembler?86? 5 70 4. Język asemblerowy mikroprocesorów 8086/8088 .186
assembler?86? 6 72 4. Język asemblerowy mikroprocesorów 8086/8088 72 4. Język asemblerowy mikropro
assembler?86? 7 74 4. Język asemblerowy mikroprocesorów 8086/8088 Przykład ZMIENNA A DW 5*5 ; =
assembler?86? 9 78 4. Język asemblerowy mikroprocesorów 8086/8088 PROGRAM SEGMENT • • • A DALEKO E
assembler?86? 1 42 4. Język asemblerowy mikroprocesorów 8086/80X8 (ODH). Asembler przetwarza łańcu
assembler?86? 2 44 4. Język asemblerowy mikroprocesorów #086/8088 Wiersz programu kończy się zasad
assembler?86? 0 60 4. JÄ™zyk asemblerowy nuKroprocesorów 8086/8088 ; OOh    16-23 DA
assembler?86? 8 156 5. Rozkazy mikroprocesorów 8086/8088 JNC (ang.jump if no carry ) skok względny
assembler?86? 9 58 4. Język asemblerowy mikroprocesorów 808618088 Dyrektywy: DB, DW, DD, DQ, DT Li

więcej podobnych podstron