Ver. 1.0 Beta, Don't have a compiler? Now you can write simple scripts ONLINE! This is a basic version -does not include all the Pascal statements. Only to learn basics

Polecenia Assemblera: mov, cmp, jne, inc, in, out, cld

Pascal

Back to previous articleprevious Obsługa myszy w Turbo Pascalu 7.0
Go to main menuup Zaawansowany kurs pascala
Next articlenext Własne czcionki

Polecenia Assemblera: mov, cmp, jne, inc, in, out, cld
polecenia assemblera
Niektóre polecenia asemblera: (najpierw polecenie, potem przykład użycia, następnie opis)

MOV

Mov Ax, 5
Mov Ax, Bx
Mov Ax, zmienna
Mov Ax, ES:[Di]

Polecenie wpisuje do rejestru podaną wartość, rejestr, zmienną, lub adres pamięci.

SHR

Shr Ax, 3
Shr Ax, Dl

Przesunięcie bitowe rejestru o wskazaną ilość miejsc w prawo, tzn. jeśli mamy w Ax warość 128 –bitowo10000000 to po SHR Ax, 3 będzie 00100000, czyli 32. Często stosowane jako szybkie dzielenie przez potęgę dwójki (w przykładzie przez 2^3 czyli 8) (128:8=32) Można też do Dl wpisać jakąś wartość i wtedy przesuwać o ilość wskazaną w dl

SHL
Shl Ax, 2
Shl Ax, Dl

Użycie podobne do przesunięcia w prawo, ale działanie odwrotne. Można używać jako mnożenia przez potęgę dwójki

ADD
Add Ax, Bx
Add Ax, 3

Dodawanie dwóch rejestrów lub wartości do rejestru. Do Ax zostanie dodana wartość druga

INC
Inc Ax

Inkrementacja –zwiększenie Ax o 1. Dużo szybsze (4x) od ADD Ax, 1

DEC
Dec Ax

Zmniejszenie Ax o 1

SUB

Sub Ax, Bx
Sub Ax, 4

Odejmowanie. Od Ax odejmuje Bx

AND

And Al, 11110000b
And Ax, Bx

Nakładanie maski bitowej, inaczej operacja and, bity ustawione jako 1 zostaną, reszta będzie wyzerowana

NOT

Not Ax

Zmienia bity 1 na 0 a 0 na 1, wartość odwrotna, np. jeśli Al=128, wynikiem Not Al będzie 127, bo
NOT 10000000=01111111, można stosować jako szybkie odejmowanie wartości od np. 255 (255-128=127; 255-1=254)

OR

Or Ax, Bx
Or Bx, 200

Wszystkie bity które były ustawione dla Bx lub Ax będą ustawione, np. 11100000 OR 00000111=11100111. Wynik zwraca w pierwszym wskazanym rejestrze w przykładzie w Ax

STOSSB
STOSSW
STOSSD

Do obszaru pamięci w ES:[Di], wpisuje wartość Ah, Ax lub Eax, zależnie od użytego rodzaju instrukcji i zwiększa rejestr Di odpowiednio 1 (Dla instrukcji z zakończeniem SB), 2 (SW) lub 4 (SD)

REP

Rep StosW

Powtarza instrukcję użytą za Rep, np. StosSW Cx razy

LOOP

Loop @Poczatek

Odejmuje od Cx 1 I przeskakuje do początku programu jeśli Cx>0

CMP

Cmp Ax, Bx
Je @Rowne
Ja @AxMniejsze

Porównuje wskazane wartości, wyniki zapisuje za pomocą flag:

Ja pierwsza wartość Jb pierwsza wartość >druga wartość
Jna pierwsza wartość <=druga wartość
Jnb pierwsza wartość >=druga wartość
Je pierwsza wartość =druga wartość
Jz pierwsza wartość =0

MOVSB
MOVSW
MOVSD

MovSB
MovSW
MovSD

Przenosi dane z adresu DS:[Si] do ES:[Di], oraz do Si i Di dodaje odpowiednio 1, 2 lub 4, dzięki czemu można tą instrukcję wykonywać w połączeniu z REP

IN

In Ah, Dx

Zwraca wartość portu urządzeń nr Dx do Ah

OUT

Out Ah, Dx

Zapisuje wartość Ah do portu urządzeń nr Dx

LES
LDS

Les Di, Dest
Lds Si, Source

Zapisuje do rejestrów danych i zapisu adres pamięci podany przez jakąś zmienną typu pointer

CLD

Ustawia że do rejestrów zapisu i odczytu będzie dodawana wartość Di i Si podczas użycia StosSB lub MovSB itp..
This website uses cookie files in order to provide Google services (advertisements, analitycs) and Facebook. If you want to block using cookies, turn them off in your browser settings. Need a help? Click me