Slide sull'Assembly Intel 8086. La Pdf è una risorsa didattica per l'università, materia informatica, che introduce i concetti fondamentali del linguaggio Assembly Intel 8086, inclusi variabili, costanti e il ciclo macchina, con esempi di codice per l'istruzione di somma.
Mostra di più10 pagine


Visualizza gratis il Pdf completo
Registrati per accedere all’intero documento e trasformarlo con l’AI.
D8086
L3093607
|INTEL@1978
seg000:0000
seg000:0000 loc_0:
; CODE XREF: seg000:00074j
seg000:0000
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
; seg000: loc_104j ...
Assembly Intel 8086
Il codice macchina può essere visto in una forma equivalente attraverso un linguaggio
mnemonico.
L'insieme dei codici mnemonici di tutte le istruzioni prende il nome di linguaggio
assembly.
Il linguaggio assembly prevede l'uso di parole chiave:
Il processo che traduce il codice assembly nel corrispondente codice
macchina eseguibile direttamente dal microprocessore si compone di
due passaggi:
Codice scritto in linguaggio
assembly tramite un editor
(file sorgente)
Codice macchina con
indirizzi simbolici
(file oggetto)
Codice macchina con
indirizzi effettivi
(file eseguibile)
Prova.asm
Prova.obj
Prova.exe
ASSEMBLER
LINKER
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
. model
small
. data
;
DATA SEGMENT
FINE DATA SEGMENT
. code
;
CODE SEGMENT
main proc
MOV AX, @data
MOV DS, AX
main endp
FINE
CODE SEGMENT
I
end
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
end
. model small
. data
DATA SEGMENT
var1 DB 12h
variabile 1
var2 DB ?
variabile 2
C EQU 15h
costante
FINE DATA SEGMENT
. code
CODE SEGMENT
;
main proc
MOV AX, @data
MOV DS, AXI
main endp
--
-
FINE CODE SEGMENT
01
02
03
04
. model small
. data
;---- DATA SEGMENT
var1 DB 12h
variabile 1
var2 DB ?
variabile 2
05
06
C EQU 15h
costante
FINE DATA SEGMENT
07
08
09
10
11
. code
CODE SEGMENT
12
13
14
15
16
17
18
19
main proc
MOV AX, @data
MOV DS, AX
MOV BL, 04h
MOV CL, 05h
ADD BL, CL
20
21
22
23
24
25
26
27
main endp
;
-
FINE CODE SEGMENT
end
01
. model small
02
. data
03
;----
DATA SEGMENT
04
var1 DB 12h
;
variabile 1
05
var2 DB ?
variabile 2
C EQU 15h
costante
06
-
FINE DATA SEGMENT
07
08
09
10
11
. code
CODE SEGMENT
12
main proc
MOV AX, @data
MOV DS, AX
13
14
15
16
17
18
MOV BL, 04h
19
MOV CL, 05h
ADD BL, CL
20
21
22
MOV AX, 0A404h
23
MOV BX, 0A202h
ADD AX, BX
24
25
26
27
28
29
30
main endp
;
FINE CODE SEGMENT
end
Come inizializziamo DS?
Modo sbagliato (a causa dei vincoli nelle modalità di indirizzamento)
Modo corretto