EMU8086 GENERATED LISTING. MACHINE CODE <- SOURCE. somma32.exe -- emu8086 assembler version: 4.07 [ 20/12/2012 -- 21.56.09 ] =================================================================================================== [LINE] LOC: MACHINE CODE SOURCE =================================================================================================== [ 1] : Dati SEGMENT [ 2] : ; N1 e N2 numeri a 32 bit da sommare [ 3] 0000: 05 A0 2F B4 N1 DD B42FA005h [ 4] 0004: 51 84 D0 2D N2 DD 2DD08451h [ 5] 0008: 00 00 00 00 Ris DD ? [ 6] : Dati ENDS [ 7] : [ 8] : Codice SEGMENT [ 9] : [ 10] : ; punto di inizio del programma [ 11] 0010: Inizio: [ 12] : ; inizializzazione segmento dati (DS) [ 13] 0010: B8 00 00 MOV AX,Dati [ 14] 0013: 8E D8 MOV DS,AX [ 15] : [ 16] : ; somma a 32 bit (con riporto intermendio) [ 17] : ; somma dei primi 16 bit (con riporto) [ 18] 0015: A1 00 00 MOV AX,Word Ptr[N1] [ 19] 0018: 8B 1E 04 00 MOV BX,Word Ptr[N2] [ 20] 001C: 03 C3 ADD AX,BX [ 21] : ; memorizzazione risultato (parte bassa) [ 22] 001E: A3 08 00 MOV Word Ptr[Ris],AX [ 23] : [ 24] : ; somma dei secondi 16 bit (parte alta) [ 25] 0021: A1 02 00 MOV AX,Word Ptr[N1 + 2] [ 26] 0024: 8B 1E 06 00 MOV BX,Word Ptr[N2 + 2] [ 27] : ; (somma con carry) [ 28] 0028: 13 C3 ADC AX,BX [ 29] : ; memorizzazione del risultato (parte alta) [ 30] 002A: A3 0A 00 MOV Word Ptr[Ris + 2],AX [ 31] : [ 32] : ; esce al DOS [ 33] 002D: B4 4C MOV AH,4Ch [ 34] 002F: CD 21 INT 21h [ 35] : [ 36] : Codice ENDS [ 37] : [ 38] : END Inizio [ 39] : =================================================================================================== EXE HEADER - bytes from 0000 to 01FF inclusive. 0000: 4D - exe signature (M) 0001: 5A - exe signature (Z) 0002: 31 - bytes on last page (l.byte) 0003: 00 - bytes on last page (h.byte) 0004: 02 - 512 byte pages in file (l.byte) 0005: 00 - 512 byte pages in file (h.byte) 0006: 01 - relocations (l.byte) 0007: 00 - relocations (h.byte) 0008: 20 - paragraphs in header (l.byte) 0009: 00 - paragraphs in header (h.byte) 000A: 00 - minimum memory (l.byte) 000B: 00 - minimum memory (h.byte) 000C: FF - maximum memory (l.byte) 000D: FF - maximum memory (h.byte) 000E: 00 - SS - stack segment (l.byte) 000F: 00 - SS - stack segment (h.byte) 0010: 00 - SP - stack pointer (l.byte) 0011: 00 - SP - stack pointer (h.byte) 0012: 6D - check sum (l.byte) 0013: 75 - check sum (h.byte) 0014: 00 - IP - instruction pointer (l.byte) 0015: 00 - IP - instruction pointer (h.byte) 0016: 01 - CS - code segment (l.byte) 0017: 00 - CS - code segment (h.byte) 0018: 1E - relocation table adress (l.byte) 0019: 00 - relocation table adress (h.byte) 001A: 00 - overlay number (l.byte) 001B: 00 - overlay number (h.byte) 001C: 01 - signature (l.byte) 001D: 00 - signature (h.byte) 001E: 01 - relocation table - offset inside segment (l.byte) 001F: 00 - relocation table - offset inside segment (h.byte) 0020: 01 - relocation table - segment anchor (l.byte) 0021: 00 - relocation table - segment anchor (h.byte) 0022 to 01FF - reserved relocation area (00) ===================================================================================================