EMU8086 GENERATED LISTING. MACHINE CODE <- SOURCE. bubble_proc.exe -- emu8086 assembler version: 4.07 [ 14/03/2013 -- 19.43.56 ] =================================================================================================== [LINE] LOC: MACHINE CODE SOURCE =================================================================================================== [ 1] : [ 2] : Stack SEGMENT [ 3] 0000: 00 00 00 00 00 00 00 00 00 00 00 00 DB 20 DUP(?) 00 00 00 00 00 00 00 00 [ 4] : Stack ENDS [ 5] : [ 6] : Dati SEGMENT [ 7] 0020: 03 06 02 05 00 04 01 08 09 07 Vett DB 3,6,2,5,0,4,1,8,9,7 [ 8] 002A: 00 Aus DB ? [ 9] 002B: 00 Scambio DB ? [ 10] : Dati ENDS [ 11] : [ 12] : Codice SEGMENT [ 13] : [ 14] 0030: Inizio: [ 15] 0030: B8 02 00 MOV AX,Dati ; fa' puntare DS al segmento Dati [ 16] 0033: 8E D8 MOV DS,AX [ 17] : [ 18] 0035: BB 00 00 LEA BX,Vett [ 19] 0038: RipetiCiclo: [ 20] 0038: C6 06 0B 00 00 MOV Scambio,0d [ 21] 003D: BE 00 00 MOV SI,0h [ 22] 0040: CicloScan: [ 23] 0040: 8A 00 MOV AL,Byte Ptr[BX + SI] [ 24] 0042: 8A 60 01 MOV AH,Byte Ptr[BX + SI + 1] [ 25] 0045: 3A C4 CMP AL,AH [ 26] 0047: 76 03 JBE NonScambia [ 27] : [ 28] 0049: E8 11 00 CALL Scambia ; chiama la routine per effettuare lo scambio [ 29] : [ 30] 004C: NonScambia: [ 31] 004C: 46 INC SI ; sposta il puntamento sul vettore in aventi di 1 [ 32] 004D: 83 FE 09 CMP SI,9d ; avanza fino all'elemento 8 (nono elemento) [ 33] 0050: 72 EE JB CicloScan ; se SI e' inferiore a 9 continua [ 34] : [ 35] : ; alla fine della scansione controlla se c'e' stato scambio [ 36] 0052: 80 3E 0B 00 01 CMP Scambio,1d [ 37] 0057: 74 DF JE RipetiCiclo ; se si',allora ripete la scansione [ 38] : ; (= vettore non ancora ordinato) [ 39] : [ 40] 0059: B4 4C MOV AH,4Ch ; ritorno al DOS [ 41] 005B: CD 21 INT 21h [ 42] : [ 43] 005D: Scambia PROC NEAR [ 44] : ; in questa parte effettua lo scambio tra due [ 45] : ; locazioni contigue, utilizzando i valori gia' immagazzinati [ 46] : ; nei registri AL e AH [ 47] 005D: 88 20 MOV Byte Ptr[BX + SI],AH [ 48] 005F: 88 40 01 MOV Byte Ptr[BX + SI + 1],AL [ 49] : [ 50] 0062: C6 06 0B 00 01 MOV Scambio,1d ; setta il flag che indica lo scambio effettuato [ 51] : [ 52] 0067: C3 RET [ 53] : Scambia ENDP [ 54] : [ 55] : Codice ENDS [ 56] : [ 57] : END Inizio [ 58] : ===================================================================================================