peperonity.net
Welcome, guest. You are not logged in.
Log in or join for free!
 
Stay logged in
Forgot login details?

Login
Stay logged in

For free!
Get started!

Text page


sypsniux.peperonity.net

Komandu sistema

Intel architektrai bdinga savyb – naudojama vienoda mnemonika visi?kai
skirtingoms komandoms.

?emiau pateikiami sutrumpinim, naudojam komand apra?ymuose, paai?kinimai:
d – krypties (destination) bitas, jis nurodo, ar operacijos kryptis yra i? procesoriaus
atmint, ar i? atminties procesori;
0 – i? procesoriaus registro atmint
d =
1 – i? atminties procesoriaus registr


w - ploio (width) bitas, jis nurodo operacijoje dalyvaujanio lauko ilg;
0 – operandas baitas
w =
1 – operandas ?odis


mod lauko reik?ms:
00 – operandas r/m atmintyje (r/m = m), poslinkio nra;
mod = 01 – operandas r/m atmintyje (r/m = m), vieno baito poslinkis;
10 – operandas r/m atmintyje (r/m = m), dviej bait poslinkis;
11 – operandas r/m registre (r/m = r);
kur laukas r/m nurodo operand atmintyje m – (memory) arba registre r – (register);

bet.op. – betarpi?kas operandas.


j.b v.b



adr.j.b. – adreso jaunesnysis baitas
adr.v.b. – adreso vyresnysis baitas

sreg – segmento registras;
00 – ES;
sreg = 01 – CS;
10 – SS;
11 – DS;

portas – porto numeris diapazone 0 – 255

posl.j.b. – poslinkio jaunesnysis baitas
posl.v.b. – poslinkio vyresnysis baitas

seg.reg.j.b. – segmento registro jaunesnysis baitas
seg.reg.v.b. – segmento registro vyresnysis baitas


64
5.1. Bendrosios mikroprocesoriaus komandos

MOV – MOVe – persiuntimas
1. registras registras / atmintis;
1000 10dw mod reg r/m [poslinkis];

d = 0: reg r / m
d = 1: r / m reg

2. betarpi?kas operandas registras / atmintis;
1100 011w mod 000 r/m [poslinkis] bet.op1 [bet.op.2, jei w = 1]

Krypties bito nra, nes kryptis jau yra apibr?ta.
Laukas reg nereikalingas, jis yra naudojamas kaip operacijos kodo i?pltimas.
Poslinkis suformuojamas priklausomai nuo lauko mod reik?ms.


3. betarpi?kas operandas registras
1011 w reg bet.op.1 [bet.op.2, jei w = 1]

4. atmintis akumuliatorius
1010 000w adr.j.b adr.v.b.

Komandos formatas yra toks, kad registras ir operandas betarpi?kai nenurodyti.
I? operacijos kodo yra ?inoma, kad registras yra akumuliatorius.

5. akumuliatorius atmintis
1010 001w adr.j.b adr.v.b.

Pastaba.
Atvej 4. ir 5. negalima sujungti vien 101000 d w adr.j.b adr.j.b adr.v.b. ,
nes bitas d apib?ia prie?ingos krypties perdavim, negu yra nurodyta 4. ir 5. atvejais.

6. registras / atmintis segmento registras
1000 11d0 mod 0 sreg r/m [poslinkis]

sreg negali bti lygus 01, nes negalima nusisti reik?ms registr CS, nes prie?ingu
atveju priskyrimo veiksmu pakeistume CS registro reik?m, o ji gali bti pakeista tik
valdymo perdavimo komandomis.

Nra w bito, nes operandas visada 2 bait.


PUSH – djimas stek.
Prie? ra?ant stek reikia suma?inti steko rodykl : SP = SP - 2 (steke operuojame
?od?iais).

1. registras / atmintis stekas
1111 1111 mod 110 r/m [poslinkis]

65

Tai yra vieno operando komanda, laukas reg yra naudojamas kaip operacijos kodo
i?pltimas.

2. registras stekas
0101 0reg

Nra varianto, ar registras baitinis ar ?odinis, nes vienarei?mi?kai jis yra ?odinis.


3. segmento registras stekas
000 sreg 110


POP – pamimas i? steko.
Pamus i? steko reikia padidinti steko rodykl : SP = SP + 2 (steke operuojame
?od?iais).

1. stekas registras / atmintis
1000 1111 mod 110 r/m [poslinkis]

2. stekas registras
01011 reg

3. stekas segmento registras
000 sreg 111

sreg negali bti lygu 01, nes tada pakeistume CS registro reik?m, o ji gali bti
pakeista tik valdymo perdavimo komandomis.


XCHG – eXCHanGe – apsikeitimas reik?mmis.
1. registras / atmintis registras
1000 011w mod reg r/m [poslinkis]

2. registras akumuliatorius
10010 reg

Nra w bito, nes ?ia komanda vykdomas apsikeitimas tarp akumuliatoriaus AX ir
dviej bait registro, reg = { AX, CX, DX, BX, SP, BP, SI, DI }

Komanda XCHG AX, AX yra ekvivalenti NOP, t.y., operacijos kodas yra 1001 0000,
t.y., 90h.


OUT – i?vedimas port.
1. Fiksuotas portas.
1110 011w portas;


66

Registre AL (jei w = 0) arba registre AX (jei w = 1) esanti reik?m nusiuniama
port, nurodyt komandoje porto numeriu.

2. Kintamas portas.
1110 111w

Porto numeris yra imamas i? registro DX, todl galima nurodyti 65 536 skirtingus
portus. Vykdant komand, reik?m i? AL (jei w = 0) arba i? AX (jei w = 1) yra
siuniama port.


IN – nuskaitymas i? porto.
1. Fiksuotas portas.
1110 010w portas

Vykdant komand, i? porto su nurodytu numeriu padedama reik?m registr AL (jei
w = 0) arba registr AX (jei w = 1).

2. Kintamas portas.
1110 110w

Porto numeris yra imamas i? registro DX, todl galima nurodyti 65 536 skirtingus
portus. Vykdant komand, reik?m i? porto u?ra?oma registr AL (jei w = 0) arba
AX (jei w = 1). Kai atliekamas veiksmas yra ?odinis, tai tie 2 baitai yra imami ne i?
dviej gretim port, bet abu i? to paio porto, skaitant i? jo per du taktus.


XLAT – transLATe – kodo pamimas pagal poslink.
1101 0111

Komanda naudojama duomen perkodavimui. Registre BX esantis adresas rodo
perkodavimo lentel. Imamas registre AL esantis baitas ir jis traktuojamas kaip
poslinkis nuo perkodavimo lentels prad?ios. Vykdant komand, reik?m, esanti
perkodavimo lentelje su poslinkiu, nusiuniama registr
AL.


AL


Perkodavim lentel
BX















...




67


KOMPIUTERI ARCHITEKTRA





LEA – Load Effective Address – pakrauti (patalpinti) vykdomj adres.
1000 1101 mod reg r/m [poslinkis]

Komanda atlieka vykdomojo (efektyvaus) adreso nusiuntim registr.

reg yra bet kuris 16 bit registras, i?skyrus segmento registrus.

Kadangi antras operandas btinai yra atmintis, mod negali bti lygus 11.


LDS – Load ponter using DS – bendro registro ir DS u?pildymas.
1100 0101 mod reg r/m [poslinkis]

Komanda atlieka atminties dvigubo ?od?io jaunesnij adresu dviej bait nusiuntim registr, nurodyt lauke reg, ir vyresni adres dviej bait nusiuntim registr DS.

jaunesnysis ?odis registras, nurodytas lauke reg
vyresnysis ?odis registras DS

Kadangi antras operandas btinai yra atmintis, mod negali bti lygus 11.

Komandos lauku r/m [poslinkis] nurodomas dvigubo ?od?io lauk atmintyje;
operando adresas suformuojamas panaudojant registr DS : DS + efektyvus adresas .


LES – Load pointer using ES – bendro registro ir ES u?pildymas.
1100 0100 mod reg r/m [poslinkis]

Komanda LES yra pana?i komand LDS: atlieka atminties dvigubo ?od?io
jaunesnij adresu dviej bait nusiuntim registr, nurodyt lauke reg, ir vyresni
adres dviej bait nusiuntim registr ES.

jaunesnysis ?odis registras, nurodytas lauke reg
vyresnysis ?odis registras ES

Kadangi antras operandas btinai yra atmintis, mod negali bti lygus 11.

Komandos lauku r/m [poslinkis] nurodomas dvigubo ?od?io lauk atmintyje;
operando adresas suformuojamas panaudojant registr DS (ne registr ES !) :
DS + efektyvus adresas.


LAHF – Load AH status Flag – registro AH u?pildymas registro SF jaunesniuoju
baitu.
1001 1111


68


SAHF – Save AH status Flag – registro AH nusiuntimas registro SF jaunesnj
bait.
1001 1110

Pastaba:
Intel 8080 procesoriuje buvo komandos LAHF ir SAHF. Intel 8088
komand sistem jos trauktos tam, kad veikt programos, kurios buvo ra?ytos
senesniam, Intel 8080, procesoriui.

PUSHF – PUSH status Flag – registro SF nusiuntimas stek.
1001 1100


POPF – POP status Flag – registro SF u?pildymas i? steko vir?ns.
1001 1101

Tai yra vienintel komanda, kuri pakeiia vis registre SF esani reik?m i? karto.
Kitomis komandomis galima keisti atskirus bitukus.



This page:




Help/FAQ | Terms | Imprint
Home People Pictures Videos Sites Blogs Chat
Top
.