Assembly Intel 8086: variabili e Data Segment in informatica

Slide da Intel su Assembly Intel 8086. Il Pdf, pensato per studenti universitari di Informatica, illustra i concetti di variabili e Data Segment, mostrando esempi di codice Assembly e la loro rappresentazione in memoria.

Mostra di più

13 pagine

Assembly Intel 8086
Variabili, Data Segment
Le variabili
I due tipi fondamentali di variabili sono:
DB (define Byte) = 1 byte (1 cella di memoria)
DW (define Word)= 2 byte (2 celle di memoria)

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

Variabili e Data Segment

Le variabili I due tipi fondamentali di variabili sono:

  • DB (define Byte) = 1 byte (1 cella di memoria)
  • DW (define Word)= 2 byte (2 celle di memoria)Le variabili

01 02 03 04 . model small . data I INIZIO DATA SEGMENT ar 1 DB 00h 05 ar2 DB ? 06 ar3 DB 7Eh 7 r4 DW 0000h 08 5 DW ? 09 V -6| DW 5AB3h FINE DATA SEGMENT . code INIZIO CODE SEGMENT main proc MOV AX, @data MOV DS, AX 10 11 12 13 14 15 16 17 18 19 20 main endp ; - - FINE CODE SEGMENT I 21 endLe variabili - var1 DB 00h 0710:0000 0710:0000 07100: 00 000 NI- 07101: 00 000 N 07102: 7E 126 07103: 00 000 N 07104: 00 000 NI N 02 03 ; -- INIZIO 04 05 var1 DB 00h var2 DB V ar3 DB 7Eh var4 DW 0000 V r5 DW ? var6 DW 5AB3 0710B: 00 000 FINE DA 0710C: 00 000 NI NI 11 . code 0710D: 00 000 N! 12 INIZIO 0710E: 00 000 NI main proc 0710F: 00 000 NI 13 14 !H original source code 01 . model small . data 07105: 00 000 00 000 NI 07106: 07107: B3 179 07108: 5A 090 NI T Z NI NI 07109: 00 000 0710A: 00 000 06 07 08 09 10 MOV AX, @datLe variabili - var2 DB ? 5710:0001 0710:0001 0/100: 00 000 NI- 07101: 00 000 NI 07102: 7E 126 07103: 00 000 NI 07104: 00 000 NI 03 04 var 1 DB 00h 07106: 00 000 NI 07107: B3 5A 090 1 Z NI 07 08 var5 DW ? 0710A: 00 000 NI var6 DW 5AB3h 0710B: 00 00 000 NI . code ; INIZIO C 0710E: 00 000 NI main proc 0710F: 00 000 NI. 13 14 original source code 01 . model small 02 . data ; INIZIO DI 05 06 var2 DB ? var3 DB 7Eh 07108: var4 DW 0000h 07109: 00 000 000 NI 09 10 11 FINE DAT 0710C: 0710D: 00 000 NI 12 MOV AX, @data 07105: 00 000 NI 179Le variabili - var3 DB 7Eh 0710:0002 0710:0002 0/100: 00 000 NI- 07101: 000 NI 07102: 7E 126 ~ 01 . model small 02 03 04 . data INIZIO D var1 DB 00h 05 var2 DB ? 07107: B3 179 06 var3 DB 7Eh 07108: 5A 090 07 var4 DW 0000h var5 DW ? 07109: 00 000 08 0710A: 00 000 var6 DW 5AB3h FINE DAT 0710C: 00 000 0710D: 00 000 NI 0710E: 00 000 NI 0710F: 00 000 NI 13 14 original source code 07103: 00 000 NI 07104: 00 000 NI 07105: 00 000 NI 07106: 00 000 NI I Z N! NI 0710B: 00 000 NI NI 09 10 11 . code 12 INIZIO C main proc MOV AX, @dataLe variabili - var1 DW 0000h 0710:0003 0710:0003 0/100: 00 000 NI- 07101: 00 000 NI 07102: 7E 126 01 . mode 1 small . data INIZIO DA 07105: 00 000 NI 07106: 00 000 N! 05 07107: B3 179 06 var3 DB 7Eh 07108: 5A 090 1 Ż NI NI 07 08 09 10 11 var5 DW ? var6 DW 5AB3h FINE DATA 0710C: 00 000 NI NI NI 0710D: 00 000 0710E: 00 000 NI 0710F: 00 000 NI 13 14 original source code 07103: 00 000 NI 07104: 00 000 NI 02 03 04 var1 DB 00h var2 DB ? var4 DW 0000h 07109: 00 000 0710A: 00 000 0710B: 00 000 . code 12 INIZIO CO main proc MOV AX, @dataLe variabili - var1 DW ? 0710:0005 0710:0005 0/100: 00 000 NI- 07101: 00 000 NI 07102: 7E 126 07103: 00 000 NI 07104: 00 000 N! 07105: 00 000 NI 07106: 00 000 N! 05 V ar2 DB ? var3 DB 7Eh 07108: 5A 090 Z var4 DW 0000h 07109: 00 000 NI var5 DW ? 0710A: 00 000 NI var6 DW 5AB3h 0710B: 00 000 NI 0710C: 00 000 NI . code 0710D: 00 000 NI 0710E: 00 000 NI main proc 0710F: 00 000 NI 13 14 CH original source code 01 . model small 02 . data 03 , INIZIO D 04 V ar1 DB 00h 07107: B3 179 1 WILL 06 07 08 09 10 11 12 FINE DAT - INIZIO C MOV AX, @dataLe variabili - var1 DW 5AB3h 0710:0007 0710:0007 0/100: : 00 000 NI- 07101: 00 000 NI 07102: 7E 126 07103: 00 000 07104: 00 000 NI NI NI 03 04 05 r1 DB 00h 06 r3 DB 7Eh r4 DW 0000h var5 DW ? var6 DW 5AB3h 0710B: 00 000 09 10 11 ; - FINE DATA 0710C: 00 00 NI NI NI . code - INIZIO CO 0710E: 00 000 NI main proc 0710F: 00 000 NI CH original source code 01 . model small 02 . data INIZIO DA 07105: 00 000 07106: 00 000 r2 DB ? 07107: B3 179 07108: 5A 090 07 08 07109: 00 000 0710A: 00 000 NI 1 Z NI NI 12 13 14 0710D: 00 000 E MOV AX, @data

Allocazione del Data Segment tramite dichiarazione di variabili

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 .model small . data INIZIO DATA SEGMENT var1 DB ? . code INIZIO CODE SEGMENT I main proc. MOV AX, @data MOV DS, AX main endp FINE CODE SEGMENT end In tutti e due i casi l'8086 alloca 16 byte per il Data Segment 01 . model small 02 03 . data DATA SEGMENT 04 05 06 07 08 ILLLLLLLLLLL 112345678911 db db db qP db 12 13 db var 10 db var 11 db var 12 db V 13 db db V 14 var 15 db FINE DATA SEGMENT . code CODE SEGMENT main proc MOV AX, @data MOV DS, AX main endp FINE CODE SEGMENT end = 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 db db db FINE DATA SEGMENT 09 10 11Allocazione del Data Segment tramite dichiarazione di variabili 5710:0055 07100: 00 000 07101: 00 000 07102: 00 000 07103: 00 000 07104: 00 000 07105: 00 000 07106: 00 07107: 00 000 07108: 00 07109: 00 000 0710A: 00 000 0710B: 00 000 0710C: 00 000 0710D: 00 000 0710E: 00 000 0710F: 00 000 In tutti e due i casi l'8086 alloca 16 byte per il Data Segment

Allocazione del Data Segment tramite dup()

01 02 03 04 05 06 . model small . data empty DATA SEGMENT db 10h dup (00h ) FINE DATA SEGMENT . code ; CODE SEGMENT main proc MOV AX, @data MOV DS, AX I main endp FINE CODE SEGMENT end 07 08 09 10 11 12 13 14 15 16 17Allocazione del Data Segment tramite dup() 0710:0005 07100: 00 000 07101: 00 000 07102: 00 000 07103: 00 000 07104: 00 000 03 DATA SEGMENT 07105: 00 000 04 empty db 10h dup (00h ) 07106: 00 000 05 07107: 00 000 06 FINE DATA SEGMEI 07108: 00 000 07 . code 07109: 00 000 08 09 0710A: 00 000 0710B: 00 000 10 0710C: 00 000 11 0710D: 00 000 12 0710E: 00 000 13 0710F: 00 000 14 CH original source code 01 . model small 02 . data CODE SEGMENT main proc main endp

Non hai trovato quello che cercavi?

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