Për shkak që 8086 është procesor 16-bitësh, përdorimi i vetëm një regjistri për të mbajtur adresa memorike ofron hapësirë të vogël kombinimesh ($2^{16}$).
Për këtë arsye është përdorur adresimi përmes segmentimit.
Adresa ndahet në segment dhe offset.
Adresat i shënojmë në formatin SEG:OFF
, e cila jep adresën ekuivalente 10H * SEG + OFF
Shembull: 5A73:235B
Register mode
Të dy operandët janë regjistra.
MOV AX, BX
XOR AX, DX
ADD AL, BL
Immediate mode
Burimi është vlerë 8-bitëshe ose 16-bitëshe. Destinacioni nuk mund të jetë vlerë imediate.
MOV AX, 2000
MOV CL, 0A
ADD AL, 45
AND AX, 0000
Shënim: Për të vendosur vlera në segment regjistër na duhet që operandi i dytë të jetë regjistër.
MOV AX, 2000
MOV CS, AX
Displacement/direct mode
Në këtë modë merret/vendoset vlera nga një adresë që paraqet zhvendosjen. Zhvendosja është relative ndaj DS
.
MOV AX, [DISP]
MOV AX, [0500]
Register indirect mode
Në këtë modë adresa efektive llogaritet duke marrë adresën nga BX
, BP
, SI
, DI
bashkë me segmentin përkatës.
MOV AX, [DI]
ADD AL, [BX]
MOV AX, [SI]
Based indexed mode
Adresa llogaritet si shuma e një regjistri bazë (BX, BP) dhe një indeks regjistri (SI, DI) bashkë me segmentin përkatës.
MOV AL, [BP+SI]
MOV AX, [BX+DI]
Indexed mode
Adresa merret nga indeks regjistri (SI, DI) duke u mbledhur me një zhvendosje (bashkë me segmentin përkatës).
MOV AX, [SI+2000]
MOV AL, [DI+3000]
Based mode
Adresa merret nga regjistri bazë (BX, BP) duke u mbledhur me një zhvendosje.
MOV AL, [BP+0100]
Based indexed displacement mode
Adresa llogaritet si shuma e një regjistri bazë (BX, BP), një indeks regjistri (SI, DI), si dhe një zhvendosje numerike.
MOV AL, [SI+BP+2000]
Regjistrat që mund t’i përdorim për adresim indirekt:
Adresimet indirekte mund të mbahen në mend me këtë tabelë:
Nga secila kolonë mund të marrim (opsionalisht) nga një element dhe t’i mbledhim së bashku.
Instruksioni MOV
Instruksioni MOV bën lëvizjen e shënimit nga operandi i dytë (burimi) në operandin e parë (destinacioni).
MOV DST, SRC
Karakteristikat e MOV
CS
ose IP
.Në dokumentacion hasim shprehjet REG, SREG, immediate, memory.
REG paraqet një regjistër të përgjithshëm nga lista e mëposhtme:
AX
, BX
, CX
, DX
, AH
, AL
, BL
, BH
, CH
, CL
, DH
, DL
, DI
, SI
, BP
, SP
.
memory paraqet një adresë memorike e cila gjenerohet nga ndonjëra nga kombinimet e diskutuara tek adresimi.
Shembuj: [BX]
, [BX+SI+7]
, var
, etj.
immediate paraqet një vlerë aty-për-aty, dmth një vlerë numerike 8 ose 16 bitëshe.
Shembuj: 5
, -24
, 3Fh
, 10001101b
, etj.
SREG paraqet një segment regjister.
Segment regjistrat: DS
, ES
, SS
, CS
.
MOV i përgjithshëm
MOV në segment regjistra
Zakonisht dokumentacioni na tregon për operandët që pranojnë instruksionet.
Përmbledhje e operandëve valid:
Në emulator një regjion i veçantë i memories është i rezervuar për video.
Hapësira për video memorien fillon nga vlera B8000h
Programi që shfaq shkronjën A
në ekran:
ORG 100h
MOV AX, 0B800h
MOV DI, 0h
MOV DS, AX
MOV CL, 'A'
MOV CH, 01011111b
MOV BX, 0h
MOV [BX+DI], CX
RET
Detyrë: Të shkruhet emri juaj në pamje të emulatorit duke filluar nga një shtyerje të caktuar.
Detyrë: Të llogariten adresat efektive për paraqitjet e mëposhtme:
\[\texttt{D15A:599A} \tag{1}\] \[\texttt{09A7:06CF} \tag{2}\] \[\texttt{ACCF:AB08} \tag{3}\] \[\texttt{4594:63F1} \tag{4}\]Detyrë: Të tregohet se ku do të ruhet shënimi dhe çfarë vlere do ta ketë pas ekzekutimit të kodit:
MOV AX, 10h ; 1
MOV DS, AX ; 2
MOV [02h], 03h ; 3
MOV AX, 03h ; 4
MOV CX, 02h ; 5
MOV BX, AX ; 6
MOV DI, AX ; 7
MOV [BX], CX ; 8
MOV [BX+DI-1], 15h ; 9
MOV [DI+1], BX ; 10
Detyrë: Të tregohet se çfarë operandi janë shprehjet në vijim (REG, SREG, memory, immediate):
AX
SI
[0AB12h]
DS
0A3h
[DI+3]
BX
[BX]
0AF05h
[BX-03h]
DI