Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-07-2004, 09:12   #1
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
[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, <[email protected]>        ¦
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?
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
ESA: rilevati 40 mila asteroidi vicino a...
La batteria salva fabbriche di EQORE ott...
SpaceX Starship: iniziati i test della t...
Datacenter IA nello spazio entro 5 anni,...
Telescopio spaziale James Webb: rilevato...
Ericsson Mobility Report: nel 2025 il 5G...
PLAI DEMO DAY: si chiude il secondo cicl...
Google rilascia Nano Banana Pro: il nuov...
ChatGPT si rinnova ancora: disponibile l...
Ring lancia super sconti di Black Friday...
Black Friday 2025: 450 euro di sconto su...
Tutte le offerte Blink in un unico posto...
OpenAI e Foxconn uniscono le forze per r...
Ricarica delle auto elettriche in 3 minu...
Lucid presenta Gravity Touring, il SUV e...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:35.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v