EMU8086 GENERATED LISTING. MACHINE CODE <- SOURCE. bubble.exe -- emu8086 assembler version: 4.07 [ 14/03/2013 -- 19.11.03 ] =================================================================================================== [LINE] LOC: MACHINE CODE SOURCE =================================================================================================== [ 1] : [ 2] : Dati SEGMENT [ 3] 0000: 03 06 02 05 00 04 01 08 09 07 Vett DB 3,6,2,5,0,4,1,8,9,7 [ 4] 000A: 00 Aus DB ? [ 5] 000B: 00 Scambio DB ? [ 6] : Dati ENDS [ 7] : [ 8] : Codice SEGMENT [ 9] : [ 10] 0010: Inizio: [ 11] 0010: B8 00 00 MOV AX,Dati ; fa' puntare DS al segmento Dati [ 12] 0013: 8E D8 MOV DS,AX [ 13] : [ 14] 0015: BB 00 00 LEA BX,Vett [ 15] 0018: RipetiCiclo: [ 16] 0018: C6 06 0B 00 00 MOV Scambio,0d [ 17] 001D: BE 00 00 MOV SI,0h [ 18] 0020: CicloScan: [ 19] 0020: 8A 00 MOV AL,Byte Ptr[BX + SI] [ 20] 0022: 8A 60 01 MOV AH,Byte Ptr[BX + SI + 1] [ 21] 0025: 3A C4 CMP AL,AH [ 22] 0027: 76 0A JBE NonScambia [ 23] : ; in questa parte effettua lo scambio tra due [ 24] : ; locazioni contigue, utilizzando i valori gia' immagazzinati [ 25] : ; nei registri AL e AH [ 26] 0029: 88 20 MOV Byte Ptr[BX + SI],AH [ 27] 002B: 88 40 01 MOV Byte Ptr[BX + SI + 1],AL [ 28] : [ 29] 002E: C6 06 0B 00 01 MOV Scambio,1d ; setta il flag che indica lo scambio effettuato [ 30] 0033: NonScambia: [ 31] 0033: 46 INC SI ; sposta il puntamento sul vettore in aventi di 1 [ 32] 0034: 83 FE 09 CMP SI,9d ; avanza fino all'elemento 8 (nono elemento) [ 33] 0037: 72 E7 JB CicloScan ; se SI e' inferiore a 9 continua [ 34] : [ 35] : ; alla fine della scansione controlla se c'e' stato scambio [ 36] 0039: 80 3E 0B 00 01 CMP Scambio,1d [ 37] 003E: 74 D8 JE RipetiCiclo ; se si',allora ripete la scansione [ 38] : ; (= vettore non ancora ordinato) [ 39] : [ 40] 0040: B4 4C MOV AH,4Ch ; ritorno al DOS [ 41] 0042: CD 21 INT 21h [ 42] : Codice ENDS [ 43] : [ 44] : END Inizio [ 45] : ===================================================================================================