Assembly Intel 8086: Modalità di indirizzamento, Presentazione

Slide da Intel su Assembly Intel 8086. Il Pdf esplora le modalità di indirizzamento dell'Assembly Intel 8086, con esempi di codice per l'indirizzamento immediato, da registro a registro e diretto, utile per lo studio universitario di Informatica.

Mostra di più

19 pagine

Assembly Intel 8086
Modalità di indirizzamento
1. Indirizzamento immediato
MOV AL, 4Dh
L'indirizzamento immediato consiste nel fornire direttamente
al processore il valore che si desidera utilizzare.
Questo valore viene inserito direttamente nell'istruzione ed è
rappresentato in notazione esadecimale o decimale.
Ad esempio, l'istruzione MOV AL, 4Dh utilizza la modalità di
indirizzamento immediato per caricare il valore 4Dh nel
registro AL.

Visualizza gratis il Pdf completo

Registrati per accedere all’intero documento e trasformarlo con l’AI.

Anteprima

Assembly Intel 8086

D8086 L3093607 |INTEL@1978 seg000:0000 seg000:0000 loc_0: ; CODE XREF: seg000:00074j seg000:0000 ; seg000: loc_104j ... seg000:0000 mov ax, 1999h seg000:0003 cmp ds : 4206h, ax seg000:0007 jnz short loc_0 seg000:0009 mov ax, 2121h seg000:000C cmp ds : 4114h, ax seg000:0010 seg000:0010 loc_10: ; DATA XREF: seg000:00304r seg000:0010 ; seg000:00394r seg000:0010 jnz short loc_0 seg000:0012 mov ax, OF66Dh seg000:0015 cmp ds : 1928h, ax seg000:0019 jns short loc_0 seg000:001B mov ax, 1 seg000:001E cmp ds: 334h, ax seg000:0022 js short loc_0 seg000:0024 mov ax, 1 seg000:0027 add ds : 1234h, ax seg000:002B jnb short loc_0 seg000:002D mov ax, 10h seg000:0030 cmp word ptr ds : loc_10+1, ax seg000:0034 jnz short loc_0 seg000:0036 mov ax, 10h seg000:0039 cmp word ptr ds : loc_10+1, ax seg000:003D jnz short loc_0 seg000:003F retn seg000:003F seg000 ends

Modalità di indirizzamento

Indirizzamento immediato

MOV AL, 4Dh · L'indirizzamento immediato consiste nel fornire direttamente al processore il valore che si desidera utilizzare. · Questo valore viene inserito direttamente nell'istruzione ed è rappresentato in notazione esadecimale o decimale. · Ad esempio, l'istruzione MOV AL, 4Dh utilizza la modalità di indirizzamento immediato per caricare il valore 4Dh nel registro AL.

Indirizzamento immediato: Memoria Centrale

MEMORIA CENTRALE codice · macchina della MOV CPU REGISTRO AX .. .. 4 | D . . ... 4 D Data Bus 1 dato contenuto nella MOV valori qualsiasi già precedentemente presenti in AX

Indirizzamento immediato - Esempi

  1. MOV AX, 1234h: questa istruzione carica il valore 1234h nel registro AX.
  2. MOV BX, 2EA3h: questa istruzione carica il valore 2EA3h al contenuto del registro BX.
  3. MOV CL, 07h: questa istruzione carica il valore 07h nel registro CL.
  4. MOV AL, 5Ch: questa istruzione carica il valore 5Ch al contenuto del registro AL.

Indirizzamento immediato: Codice

01 02 03 04 05 06 07 08 09 10 11 12 13 14 . model small . data . code main proc MOV AX, @data MOV DS, AX MOV AL , 4Dh main endp end

Indirizzamento immediato: Registri

registers registers 0710:0005 " original source code AX 97 4D 070FD: 00 000 NI- AX 07 070FD: 00 000 NA 01 . model small BX 515 070FF : 00 000 NI 03 CX 07 07100: B8 184 C 04 . code DX 515 315 DX 07101: 10 016 05 main proc CS 0710 07103: 8E 142 Ä 07 MOV DS, AX IP 0007 SS 0716 07106: 4D 077 M SP 071078 70 11 BF 07109: 90 144 É 07109: 90 144 12 main endp end SI 0710A: 90 144 É 0710A: 90 144 É 13 14 DI 0710B: 90 144 É 15 DS 0710 0710D: 90 144 É 16 ES 0700 0710E: 90 144 É ES 0705 0710E: 90 144 É 0710F: 90 144 É " original source code H L 01 . model small 02 . data CX 07 07100: B8 184 C 04 . code 07102: 07 007 BI CS 0710 07103: 8E 142 Ä IP 0005 07105: BO 176 09 MOV AL, 4Dh SS 0710 0/105: 07106: 4D 177 IM 10 SF 07108: 90 144 E 07108: 90 144 É 12 main endp end SI 0710B: 90 144 É 15 0710C: 90 144 É DS 0710 0710D: 90 144 É 16 · L'istruzione MOV AL,4Dh si trova in memoria nelle due celle con indirizzo fisico 07105h e 07106h. · Il valore che il processore deve utilizzare, ovvero 4Dh, si trova già dentro l'istruzione. · In particolare il valore 4Dh si trova nella cella con indirizzo fisico 07106h. BX 070FE: 00 000 NI 02 . data 070FF: 00 000 NI 03 07101: 10 016 05 main proc 07102: 07 007 B Ï 08 08 176 09 MOV AL , 4Dh Dopo l'execute 07107: 90 144 É 11 BF 07104: D8 216 Ï 06 MOV AX, @data 07104: D8 216 06 MOV AX, @data 07 MOV DS, AX 10 144 E 13 14 DI 0710C: 90 144 É H L

Indirizzamento da registro a registro

MOV AX, BX · Entrambi gli operandi sono registri · Questo metodo di indirizzamento non coinvolge la memoria centrale e i bus esterni · L'esecuzione avviene tutta nella cpu dove si trovano i registri

Indirizzamento da registro a registro: CPU

CPU AX 2 D E 1 1 Bus interno BX 2 D E 1

Indirizzamento da registro a registro - Esempi

  1. MOV AX, CX: questa istruzione copia il contenuto del registro CX nel registro AX.
  2. MOV BX, CX: questa istruzione copia il contenuto del registro CX nel registro BX.
  3. MOV CL, AL: questa istruzione copia il contenuto del registro AL nel registro CL.
  4. MOV DH, BL: questa istruzione copia il contenuto del registro BL nel registro DH.

Indirizzamento da registro a registro: Codice

01 . model small 02 03 04 . data . code 05 06 main proc MOV AX, @data MOV DS, AX 07 08 09 MOV AX, 0000h 10 MOV BX, 8A5Eh 11 MOV AX, BX 12 13 14 15 16 main endp end

Indirizzamento da registro a registro: Registri

registers 0710:0008 H L AX 0/100: B8 184 @ 01 . model small AX 8A 5E 0/100: B8 184 @ 4 01 . model small 02 . data BX 8A 5E 07102: 07 007 BI 04 . code CX 515 OD 07103: 8E 142 Ä 04 . code 05 06 main proc MOV AX, @data DX 07105: B8 184 G CS 0710 07106: 00 000 NI 07 MOV DS, AX CS 0716 07106: 00 000 N IP 0008 07107: 00 000 NI Dopo l'execute IP 000D 07107: 00 000 NI MOV AX, 0000h SS 0716 07109: 5E 094 1 SP 0710A: 8A 138 è 12 BP 0710B: 8B 139 1 13 SI 0710D: 90 144 É 15 14 main endp end DI 0710E: 90 144 É DI 0710F: 90 144 É DS 0716 07110: 90 144 E 18 ES 0705 07111: 90 144 É 07119. 90 144 6 07110. on 14/ 2 " original source code registers 0710:000B @ original source code 02 BX 8A 5E 07102: 07 007 BI 03 03 CX GD DX 07103: 8E 142 D8 216 07104: 07104: D8 216 07105: B8 184 06 MOV AX, @data 07 MOV DS, AX 08 SS 5710 07109: 5E 094 MOV BX, 8A5Eh SP 0710A: 8A 138 è 12 BP 0/10B: 8B 139 0710C: 13 SI 0710D: C3 195 - 90 144 É 14 main endp 0710E : 90 144 É 0710F: 90 144 É DS 0716 07110: 90 144 É 18 ES 07111: 90 144 É 15 end 16 17 ● In memoria c'è solo il codice operativo dell'istruzione AX,BX ovvero 8BC3h (in binario:10001011 11000011). · Il valore 8A5Eh invece sta già dentro la CPU nel registro BX. · Quindi non dobbiamo coinvolgere la memoria per prendere il valore 8A5Eh. . data 07101: 10 016 07101: 10 016 1 Ä 05 main proc Ï C 08 09 10 11 MOV AX, BX 07108: BB 187 1 07108: BB 187 09 MOV AX, 0000h 10 MOV BX, 8A5Eh 11 MOV AX, BX ï C3 195 0710C: 16 17 H L

Indirizzamento diretto

MOV AX, [006Ah] · Un operando è un registro, mentre l'altro è una locazione di memoria centrale specificata direttamente dall'istruzione mediante l'offset (tra parentesi quadre) · L'esecuzione di questa istruzione determina prima il calcolo dell'indirizzo in cui si trova il dato realmente, mediante l'operazione: ○ base address + offset = effective address · Il secondo passo è la copiatura del valore che si trova in memoria (all'offset "006A") nel registro AX · Nota: 006Ah=106d (ovvero la 106-esima cella nel segmento)

Indirizzamento diretto - Esempi

  1. MOV AX, [6Ah]: questa istruzione carica il valore della cella con offset 006Ah nel registro AX.
  2. MOV BX, [0001h]: questa istruzione carica il valore della cella con offset 0001h nel registro BX.
  3. MOV CL, [00B7h]: questa istruzione carica il valore della cella con offset 00B7h nel registro CL
  4. MOV AL, [5C3Dh]: questa istruzione carica il valore della cella con offset 5C3Dh nel registro AL

Indirizzamento diretto: Codice

01 02 03 . model small . data 04 05 . code 06 main proc MOV AX, @data MOV DS, AX 07 08 09 10 11 12 MOV BX, 3BBDh MOV [6Ah], BX 13 14 15 16 MOV AX, [6Ah] main endp end

Indirizzamento diretto: Memoria Centrale

base address CPU MEMORIA CENTRALE 6A (dimensione offset) REGISTRO AX 3 B B D 3 B B D Data Bus 1 2 ... ... 6 A codice macchina della MOV offset contenuto nella MOV

Indirizzamento diretto: Registri

- registers 0710:0000 " original source code 01 . model small 02 . data 3 registers H 0710:000C 01 AX 3B BD 0/100: B8 184 C . data 03 BX 3B BD 07102: 07 007 BEEF 04 . code CX 519 07103: 8E 142 Ä SP 0710A: 6A 106 j Dopo l'execute CS 5716 07106: BD 189 ¢ 08 IP 000F 07108: 89 137 ë 10 SS 0716 07109: 1E 030 11 SF 0710A: 6A 106 j 12 BF 0710B: 00 000 NULL 13 14 SI 0710D: 6A 106 j 15 main endp 16 end - registers H L AX 07 10 0716A :I BD 189 ¢ 0716B : 3B 059 : BX 3B BD 07160: 00 000 NULL CX OF 0716D: 00 000 NULL 0716E: 00 000 NULL DX 0716F: 00 000 NULL CS 0710 0710:006A ES 0700 07111: 90 144 É 2 . model small 02 07 MOV DS, AX 08 09 MOV BX, 3BBDh MOV [6Ah ], BX 07104: D8 216 Ï DX 07105: BB 187 1 BP 0710C: 11 161 1 07107: 3B 059 ; SI 0710D 6A 106 j DI 0710E 00 000 NULL 15 DS 0716 07110: 90 144 É 17 ES 07111: 67440. 90 144 É 18 DI 0710E : 00 000 NULL 0710F: 90 144 É 17 DS 0710 07110: 90 144 E 18 H L 07 16 0/100: B8 184 @ 07101: 10 016 1 BX 3B BD 07102: 07 007 BEEF CX OF 07103: 8E 142 Ä 04 . code 07104: D8 216 Ï 05 main proc 07105: BB 187 7 06 MOV AX, @data CS 0710 07106: BD 189 ¢ IP 000C 07108: 89 137 SS 0710 07109: 1E 030 A 10 11 05 main proc 06 MOV AX, @data 07 MOV DS, AX 0710B: 00 000 NULL 12 MOV AX, [6Ah] 13 09 MOV BX, 3BBDh MOV [6Ah ], BX MOV AX, [6Ah ] 0710F: 70 144 E 16 main endp end 19 2 07170: 00 000 NULL 07101: 10 016 07107: 3B 059 ; ë 03 DX 1 14 0710C: A1 161 í

Indirizzamento indiretto

MOV AX, [SI] · Un operando è un registro, mentre l'altro è una locazione di memoria centrale specificata indirettamente da un registro tra i registri SI,DI,BX (tra parentesi quadre) · L'esecuzione di questa istruzione determina prima il calcolo dell'indirizzo in cui si trova il dato realmente, mediante l'operazione: ○ base address + source index = effective address · Il secondo passo è la copiatura del valore che si trova in memoria (all'offset contenuto in SI) nel registro AX

Indirizzamento indiretto: Memoria Centrale

base address CPU MEMORIA CENTRALE SI 0 5 D |F 1 05DF (dimensione offset) C 1 1 7 2 AX C 1 1 7 Data Bus

Modalità di indirizzamento: Esempi

  1. MOV [0010h], AX
  2. MOV AX, BX
  3. ADD AL, BL
  4. MOV CL, 0Ah
  5. XOR AX, DX
  6. AND AX, 0000h
  7. MOV [DI], AX
  8. ADD AL, [BX]
  9. MOV AX, 2000h
  10. ADD AL, 45h
  11. MOV AX, [SI]

Non hai trovato quello che cercavi?

Esplora altri argomenti nella Algor library o crea direttamente i tuoi materiali con l’AI.