assembler€86ˆ 7

assembler€86ˆ 7



74 4. Język asemblerowy mikroprocesorów 8086/8088

Przykład

ZMIENNA A

DW 5*5

; = 25

ZMIENNA B

DW 50 MOD 7

; = i

ZMIENNA C

DW 50/7

; = 7

Operatory SHR, SHL

Operatory SHR i SHL pozwalajÄ… przesuwać argument o zadanÄ… liczbÄ™ bitów w prawo lub w lewo. I tak y SHR x oznacza przesuniÄ™cie argumentu y o x bitów w prawo, natomiast y SHL x oznacza przesuniÄ™cie argumentu y o x bitów w lewo. ObowiÄ…zujÄ… nastÄ™pujÄ…ce reguÅ‚y    I

-    bity nie mieszczÄ…ce siÄ™ po przesuniÄ™ciu w zapisie argumentu sÄ… tracone,    1

-    po przesuniÄ™ciu argument jest uzupeÅ‚niany bilami o wartoÅ›ci 0,    1

-    przesuniÄ™cie argumentu w lewo o 1 bit jest równoważne dzieleniu przez 2,

-    przesuniÄ™cie argumentu w prawo o 1 bil jest równoważne mnożeniu przez 2,    M

-    nastÄ™pujÄ…ce zapisy sÄ… równoważne: y SHR -x, y SHL x.

= 10101010B = 07FH

= 10101010 SHR 1 = 01010101B +


Przykład

01010101B SHL 2    ?

0FFH SHR 1 10101010B SHL -1


Operator OR

Operator OR pozwala uzyskać sumÄ™ logicznÄ… dwóch argumentów obliczanÄ…, na poszczególnych bitach wedÅ‚ug nastÄ™pujÄ…cych reguÅ‚    1

0 OR 0 = 0    1 OR 0 = 1

0OR 1 = 1    1OR 1 = 1

PrzykÅ‚ad    1

WARTOŚĆ    EQU 00111011B    ;    = 3BH    I

MASKA    EQU 01010101B    ;    = 55H    I

MOV AX,    WARTOŚĆ OR MASKA    ; AX«-0111111 IB    = 7FH    Â«

Operator XOR    j

Operator XOR pozwala uzyskać funkcjÄ™ nierównoważnoÅ›ci (alternatywy wyÅ‚Ä…czajÄ…cej) obliczanÄ… na poszczególnych bilach wedÅ‚ug nastÄ™pujÄ…cych reguÅ‚    I

0 XOR 0 = 0    1 XOR 0 = 1

0 XOR1 = 1    1XOR1 = 0

Przykład

WARTOŚĆ EOU00111011B MASKA    EQU 01010101B

MOV AX,WARTOŚĆ XOR MASKA


= 3BH

= 55H

AX«—01101110B = 6EH    â™¦


Operator AND


Operator AND pozwala uzyskać funkcję iloczynu logicznego obliczaną na poszczególnych bitach według następujących reguł

0 AND 0 = 0    1 AND 0 = 0

0 AND 1=0    1 AND 1 = 1

Przykład

WARTOŚĆ EQU 0011101 IB    ; = 3BH

MASKA EOU 01010101B    ; = 55H

MOVAX, WARTOŚĆ AND MASKA ; AX<-0001000IB = 11H    +

Operator NOT_ ______

Operator NOT pozwala zanegować logicznie argument, tzn. zamienia jedynkę logiczną na zero logiczne i odwrotnie.

Przykład

MASKA EQU01010101B

MOV AX, NOT MASKA    ; AX^11000100B = 0C4H

MOV AX, NOT 00111011B AND MASKA    ; AX<-01000100B = 44H

MOV AX, NOT (00111011B AND MASKA) ; AX<-11101110B = 0EEH +

Operator SHORT    _

Operator SHORT sprowadza wynik wyrażenia do jednego bajtu. Wówczas asembler generuje jedynie jeden bajt kodu wynikowego. Programista musi dbać o to, aby wynik wy rażenia mieÅ›ciÅ‚ siÄ™ w jednym bajcie (w przeciwnym przypadku jest sygnalizowany bÅ‚Ä…d i kod maszynowy nie jest generowany). Jeżeli wyrażenie z operatotem SHORT znajduje siÄ™ wewnÄ…trz innego wyrażenia, to operator ten traci swoje znaczenie.

Przykład

JMP SHORT ETYKIETA ; dystans skoku mieÅ›ci siÄ™ w 1 bajcie    â™¦

Asembler nie zna odległości skoku w ramach segmentu i standardowo (np. dla instrukcji JMP ETYKIETA) dystans jest generowany w dwóch bajtach.

^Pgratory EQ, LT, LE, GT, GE, NE    ___

Operatory umożliwiajÄ…ce porównanie dwóch wyrażeÅ„. Znaczenie Poszczególnych operatorów Q (ang. eÄ…iial) - równość,

E (ang. not eąual) - nierówność,

* (ang. lowerthen) - mniejszy niż,


Wyszukiwarka

Podobne podstrony:
assembler?86? 7 54 4. Język asemblerowy mikroprocesorów 8086/8088 kowych informacji czy skoki do (
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? 8 56 4. Język asemblerowy mikroprocesorów 8086/8088 433. Połączenia międzymodułowe O
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? 8 76    4. JÄ™zyk asemblerowy mikroprocesorów 8086/8088 LE (ang. lower
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? 7 134 5. Rozkazy mikroprocesorów 8086/8088 Przykłady MOVCL, 11 ROR ZMIENNA[BP], CL
assembler?86? 3 26 2. Mikroprocesory 8086/8088 Przykład (rys. 2.12) ZMIENNA2 ZMIENNA 1 ADD AX, ZMI

więcej podobnych podstron