to sto si ti naveo je 3-bajtni format... Sad cu ti opisati svih 5 formata instrukcija:
1-bajtni format: (opcode) [registar]
Kod ovog formata znaci ide samo opcode kada se mesto operanda podrazumeva, ili se dodaje naziv nekog registra u nastavku ako je on operand
2-bajtni format: (opcode) (mod reg r/m)
Ovde sam ti razdvojio po bajtovima, znaci opcode zauzima jedan bajt, mod 2 bita, reg 3 bita i r/m 3 bita. Ove instrukcije su tipa registar/memorija u registar bez pomeraja, ili registar/memorija iz registra bez pomeraja... Deo reg predstavlja adresu registra procesora u kojem se nalazi odredisni operand, npr. ax je 000, di je 111, a za ostale se ne secam ;) a mogu ti ih naci, ako ces da ucis i to... Poljima mod i r/m odredjujes koji ce se registri koristiti za adresiranje.
3-bajtni format: (opcode) ((neposredni operand))
Ovaj format se za instrukcije tipa neposredni operand u registar. Neposredni operand zauzima dva bajta, kao sto se vidi prema mojim zagradama.
4-bajtni format: (opcode) (mod reg r/m) ((memorijska lokacija ili registar))
Ovaj format instrukcije je slican 2-bajtnom, samo sto se ovde moze koristiti i pomeraj. Znaci ovaj format se koristi za instrukcije tipa registar/memorija u registar sa pomerajem ili registar/memorija iz registra sa pomerajem
6-bajtni format: (opcode) (mod reg r/m) ((memorijska lokacija)) ((neposredni operand))
Koristi se za instrukcije tipa neposredni operand u memoriju. Kao sto vidis, slican je 3-bajtnom, samo sto se kod trobajtnog ide u registar, a ovde u memoriju.