Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [Asm]Disassemblare

  1. #1

    [Asm]Disassemblare

    Perche un .exe in asm con questo sorgente:
    codice:
    ;Beep.asm - by b0nu$, 1997
    
    .286c
    .MODEL  SMALL
    
    INTERRUPT_NUM   EQU             9	;Interrupt da intercettare
    
                    .CODE
                    ORG             100H
    FIRST:          JMP             LOAD_PROG	;Carico in memoria il prg.
                    OLD_KEYBOARD_INT DD     ?	;Memorizza l'indirizzo al 
                     				;vecchio vettore di int.
                    
    PROG            PROC
                    pusha		;salvo i registri
    
                    pushf
                    call OLD_KEYBOARD_INT	;chiamo la vecchia routine di int.
    
    ;QUI CI VA IL PROGRAMMA: In questo esempio ho deciso di emettere un BEEP ma
    ;si puņ fare qualunque cosa. Tranne che chiamare un interrupt del DOS!!
    ;--------------------------------------------------------------------------
    	in	al,61h	;Per il BEEP programmo il Timer
    	test	al,3
    	jne 	skippa		
    	or	al,3
    	out	61h,al
    	mov	al,0B6h
    	out	43h,al
    	
    skippa:	mov	al,06h	;frequenza LSB
    	out	42h,al
    	mov	al,01h	;frequenza MSB
    	out	42h,al
    	
    	mov	cx,0FFFFh
    wait_loop:
    	loop	wait_loop	;ciclo di attesa
    	
    	in	al,61h	;silenzio
    	and 	al,0FCh
    	out	061h,al
    ;--------------------------------------------------------------------------
    		
    EXIT:          
                    popa                
                    iret
    PROG            ENDP
    
    LOAD_PROG       PROC		;Procedura che carica in memoria il prg.
                    mov     ah,35h                
                    mov     al,INTERRUPT_NUM
                    int     21h		;Prelevo il vecchio vettore 
                    mov     WORD PTR OLD_KEYBOARD_INT,bx
                    mov     WORD PTR OLD_KEYBOARD_INT[2],es
    		
                    mov	al,INTERRUPT_NUM
                    mov     ah,25h
                    lea     dx,PROG
                    int     21h		;Imposto quello nuovo
    		
                    mov     dx,OFFSET LOAD_PROG   ;in DX ci va l'ultimo byte del
    					      ;prg. + 1
                    int     27h		;Termina ma rimani in memoria
    LOAD_PROG       ENDP
                    END     FIRST
    viene disassemblato cosi:
    codice:
     
    seg000:0100 ;
    seg000:0100 ; +-------------------------------------------------------------------------+
    seg000:0100 ; ¦     This file is generated by The Interactive Disassembler (IDA)        ¦
    seg000:0100 ; ¦     Copyright (c) 2001 by DataRescue sa/nv, <ida@datarescue.com>        ¦
    seg000:0100 ; ¦              Licensed to: Roger Cross, 1 user, std, 7/2000              ¦
    seg000:0100 ; +-------------------------------------------------------------------------+
    seg000:0100 ;
    seg000:0100 ; File Name   : C:\Documents and Settings\Luca\Desktop\Nuova cartella\BEEP.COM
    seg000:0100 ; Format      : MS-DOS COM-file
    seg000:0100 ; Base Address: 1000h Range: 10100h-1014Fh Loaded length: 4Fh
    seg000:0100 
    seg000:0100 
    seg000:0100 ; ---------------------------------------------------------------------------
    seg000:0100 
    seg000:0100 seg000          segment byte public 'CODE'
    seg000:0100                 assume cs:seg000
    seg000:0100                 org 100h
    seg000:0100                 assume es:nothing, ss:nothing, ds:seg000
    seg000:0100 
    seg000:0100 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
    seg000:0100 
    seg000:0100 
    seg000:0100                 public start
    seg000:0100 start           proc near
    seg000:0100                 jmp     short loc_0_131
    seg000:0100 ; ---------------------------------------------------------------------------
    seg000:0102                 db  90h ; É
    seg000:0103 word_0_103      dw 0                    ; DATA XREF: start+37.w
    seg000:0105 word_0_105      dw 0                    ; DATA XREF: start+3C.w
    seg000:0107                 db  60h ; `
    seg000:0108                 db  9Ch ; £
    seg000:0109                 db  2Eh ; .
    seg000:010A                 db 0FFh ;  
    seg000:010B                 db  1Eh ;  
    seg000:010C                 db    3 ;  
    seg000:010D                 db    1 ;  
    seg000:010E                 db 0E4h ; õ
    seg000:010F                 db  61h ; a
    seg000:0110                 db 0A8h ; æ
    seg000:0111                 db    3 ;  
    seg000:0112                 db  75h ; u
    seg000:0113                 db    8 ;  
    seg000:0114                 db  0Ch ;  
    seg000:0115                 db    3 ;  
    seg000:0116                 db 0E6h ; µ
    seg000:0117                 db  61h ; a
    seg000:0118                 db 0B0h ; ¦
    seg000:0119                 db 0B6h ; Ā
    seg000:011A                 db 0E6h ; µ
    seg000:011B                 db  43h ; C
    seg000:011C                 db 0B0h ; ¦
    seg000:011D                 db    6 ;  
    seg000:011E                 db 0E6h ; µ
    seg000:011F                 db  42h ; B
    seg000:0120                 db 0B0h ; ¦
    seg000:0121                 db    1 ;  
    seg000:0122                 db 0E6h ; µ
    seg000:0123                 db  42h ; B
    seg000:0124                 db 0B9h ; ¦
    seg000:0125                 db 0FFh ;  
    seg000:0126                 db 0FFh ;  
    seg000:0127                 db 0E2h ; Ō
    seg000:0128                 db 0FEh ; ¦
    seg000:0129                 db 0E4h ; õ
    seg000:012A                 db  61h ; a
    seg000:012B                 db  24h ; $
    seg000:012C                 db 0FCh ; ³
    seg000:012D                 db 0E6h ; µ
    seg000:012E                 db  61h ; a
    seg000:012F                 db  61h ; a
    seg000:0130                 db 0CFh ; ¤
    seg000:0131 ; ---------------------------------------------------------------------------
    seg000:0131 
    seg000:0131 loc_0_131:                              ; CODE XREF: start.j
    seg000:0131                 mov     ah, 35h
    seg000:0133                 mov     al, 9
    seg000:0135                 int     21h             ; DOS - 2+ - GET INTERRUPT VECTOR
    seg000:0135                                         ; AL = interrupt number
    seg000:0135                                         ; Return: ES:BX = value of interrupt vector
    seg000:0137                 mov     cs:word_0_103, bx
    seg000:013C                 mov     cs:word_0_105, es
    seg000:0141                 mov     al, 9
    seg000:0143                 mov     ah, 25h
    seg000:0145                 mov     dx, 107h
    seg000:0148                 int     21h             ; DOS - SET INTERRUPT VECTOR
    seg000:0148                                         ; AL = interrupt number
    seg000:0148                                         ; DS:DX = new vector to be used for specified interrupt
    seg000:014A                 mov     dx, 131h
    seg000:014D                 int     27h             ; DOS - TERMINATE BUT STAY RESIDENT
    seg000:014D start           endp                    ; CS = current program segment
    seg000:014D                                         ; DX = last program byte + 1
    seg000:014D seg000          ends
    seg000:014D 
    seg000:014D 
    seg000:014D                 end start
    Non vedo alcune parti del cod ...


    P.S: ma Ida aggiunge i commenti da solo?
    La stupiditą umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  2. #2
    Quello non e' tutto il codice, e' il programma che l'ha personalizzato facendoti vedere le parti piu' importanti penso..... si i commenti sono del programma, il compilatore non si mette mica a fare commenti in binario

  3. #3
    perche ida nn mi ha messo tutto???
    La stupiditą umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.