Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-10-2005, 20:00   #1
Lupino.86
Senior Member
 
L'Avatar di Lupino.86
 
Iscritto dal: May 2002
Messaggi: 2370
[Assembler] Convertitore Binario-Decimale

Save a tutti,
potete aiutarmi a scrivere un convertitore Binario-Decimale usando il linguaggio Assembler?
Conosco il linguaggio, ma mi pare che sia una bella gatta da pelare.....voi che dite?



Vi ringrazio anticipatamente,
Lupino.86
Lupino.86 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 20:06   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Cioè prendi un input binario da tastiera (solo 0 e 1 da tastiera) ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 20:17   #3
Lupino.86
Senior Member
 
L'Avatar di Lupino.86
 
Iscritto dal: May 2002
Messaggi: 2370
Quote:
Originariamente inviato da cionci
Cioè prendi un input binario da tastiera (solo 0 e 1 da tastiera) ?
No..... devo acquisire da tastiera un numero decimale, convertirlo in binario.

Successivamente devo anche scrivere un programma per moltiplicare due numeri decimali utilizzando però i numeri binari:
1) acquisisto il moltiplicando decimale
2) acquisisto il moltiplicatore decimale
3) converto moltiplicando e moltiplicatore in binario
4) eseguo la moltiplicazione utlizzando le cifre binarie e non decimali
5) il risultato binario lo converto in decimale


Per ora mi basta sapere la sola conversione
Lupino.86 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 21:39   #4
Goldrake_xyz
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 984
beh, acquisire da tastiera con l'assembler mi sembra un proggetto
piuttosto impegnativo, a meno che non hai delle routine già pronte.
se riesci a salvare la cifra decimale in memoria in BCD ad esempio,
poi è facile da convertire in binario puro.
la conversione devi farla in binario complemento 2 ?
una volta convertiti usa la famosa istruzione IMUL xyz
se invece sono numeri reali, con la virgola, la questione si complica
xchè c'è bisogno di convertirli in esponente e mantissa normalizzati
e poi darli in pasto al coprocessore numerico ...

ciao

P.S. x la conversione di numeri interi da dec. a binario usando l'asm
è abbastanza semplice. come anche il vice-versa
Goldrake_xyz è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 21:43   #5
Goldrake_xyz
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 984
Acc dovrei averlo scritto un programmino del genere, (tanti anni fà )
se lo ritrovo, lo allego
Goldrake_xyz è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 00:19   #6
Lupino.86
Senior Member
 
L'Avatar di Lupino.86
 
Iscritto dal: May 2002
Messaggi: 2370
Quote:
Originariamente inviato da Goldrake_xyz
beh, acquisire da tastiera con l'assembler mi sembra un proggetto
piuttosto impegnativo, a meno che non hai delle routine già pronte.
Cosa intendi per routine???


Quote:
se riesci a salvare la cifra decimale in memoria in BCD ad esempio,
poi è facile da convertire in binario puro.
So salvare in memoria la cifra decimale tramite la divisione per 10..... ma nn so convertire da decimale a binario!

Quote:
la conversione devi farla in binario complemento 2 ?
prchè esiste qualche altra conversione binaria?


Quote:
una volta convertiti usa la famosa istruzione IMUL xyz
se invece sono numeri reali, con la virgola, la questione si complica
xchè c'è bisogno di convertirli in esponente e mantissa normalizzati
e poi darli in pasto al coprocessore numerico ...
Nonononono, sono numeri senza virgola.
L'istruzione IMUL mi da sempre errore.... cosa sbaglio?
per esempio: IMUL bl,bx ; moltiplico il registro Bl con il registro BX, il risultavo va a finire in BL.... tutto OK?



Quote:
P.S. x la conversione di numeri interi da dec. a binario usando l'asm
è abbastanza semplice. come anche il vice-versa
Se è semplice MI PUOI DIRE COME SI Fà ???
Lupino.86 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 00:22   #7
Lupino.86
Senior Member
 
L'Avatar di Lupino.86
 
Iscritto dal: May 2002
Messaggi: 2370
Quote:
Originariamente inviato da Goldrake_xyz
Acc dovrei averlo scritto un programmino del genere, (tanti anni fà )
se lo ritrovo, lo allego
Spero con ansia che hai tuttora quel programmino
Lupino.86 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 00:32   #8
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Lupino.86
Cosa intendi per routine???
funzioni, procedure, sottoprogrammi, sub; al limite vanno bene anche le macro
cmq acquisire da tastiera diventa semplicissimo se il file che devi generare è un binario puro (estensione .com): in tal caso basta usare il bios emulato da Windows.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 01:09   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Lupino.86
per esempio: IMUL bl,bx ; moltiplico il registro Bl con il registro BX, il risultavo va a finire in BL.... tutto OK?
Non puoi usare bh e bx come operatori... bl fa parte di bx...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 06:31   #10
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
scrivilo in C poi usa il codice ottimizzato generato dal compilatore
__________________
Code without tests is broken by design.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 11:51   #11
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Non hai specificato il sistema operativo, ne la modalita' del processore; ho scelto io DOS/WIN_VM modalita' reale:

Codice:
	ENTER_KEY1		EQU	1C0Dh
	ENTER_KEY2		EQU	0E00Dh
	BACKSPACE_KEY		EQU	0E08h

	data	segment byte 'DATA'

dos_message_1:
	DB	'Moltiplicazioni in ASM',0Dh,0Ah,'$'
dos_message_2:
	DB	0Dh,0Ah,'Inserire 1° operando: $'
dos_message_3:
	DB	0Dh,0Ah,'Inserire 2° operando: $'
dos_message_4:
	DB	0Dh,0Ah,0Dh,0Ah,'Risultato: $'

_1st_val_str:
	DB	0Ah DUP (?)
_2nd_val_str:
	DB	0Ah DUP (?)
_1st_val_bin:
	DD	?
_2nd_val_bin:
	DD	?

	data	ends

	.386P
	.ALPHA

	code	segment para use16 'CODE'
	assume	cs:code

	Init	proc	near

	push	DATA
	pop	ds
	mov	dx,OFFSET dos_message_1
	call	Write_Message
	mov	dx,OFFSET dos_message_2
	call	Write_Message
	mov	si,OFFSET _1st_val_str
	call	Get_Input
	mov	di,OFFSET _1st_val_bin
	call	Str_Dec_To_Bin
	mov	dx,OFFSET dos_message_3
	call	Write_Message
	mov	si,OFFSET _2nd_val_str
	call	Get_Input
	mov	di,OFFSET _2nd_val_bin
	call	Str_Dec_To_Bin
	mov	dx,OFFSET dos_message_4
	call	Write_Message
	mov	eax,ds: dword ptr [_2nd_val_bin]
	mul	ds: dword ptr [_1st_val_bin]
	call	Write_Dec_Num64
	mov	ax,4C00h
	int	21h

	init	endp

;#############################################################################

	Get_Input	proc	near

	pusha
	xor	bx,bx
loop_get_key:
	call	Get_Key
	cmp	bx,9h
	je	test_alt_key
	cmp	ah,2h
	jb	test_num_alt
	cmp	ah,0Bh
	ja	test_num_alt
test_num_low:
	cmp	al,'0'
	jb	test_num_alt
	cmp	al,'9'
	ja	test_num_alt
	call	Write_Char
	mov	ds: byte ptr [bx+si],al
	inc	bx
	jmp	loop_get_key
test_num_alt:
	cmp	ah,47h
	jb	test_alt_key
	cmp	ah,52h
	jbe	test_num_low
test_alt_key:
	cmp	ax,BACKSPACE_KEY
	jne	test_exit
	or	bx,bx
	je	loop_get_key
	call	Get_Cursor_Position
	dec	dl
	call	Set_Cursor_Position
	dec	bx	
	mov	al,' '
	call	Write_Char
	call	Set_Cursor_Position
	jmp	loop_get_key
test_exit:
	cmp	ax,ENTER_KEY1
	je	exit_get_input
	cmp	ax,ENTER_KEY2
	jne	loop_get_key
exit_get_input:
	mov	ds: byte ptr [bx+si],0h
	popa
	ret

	Get_Input	endp

;#############################################################################

	Get_Key	proc	near

	pusha
	mov	ah,10h
	int	16h
	mov	bp,sp
	mov	ss: word ptr [bp+0Eh],ax
	popa
	ret

	Get_Key	endp

;#############################################################################

	Str_Dec_To_Bin	proc	near

	pushad
	mov	ds: dword ptr [di],0h
	call	Str_Len
	or	ax,ax
	je	exit_str_dec_to_bin
	dec	ax
	xchg	ax,bx
	xor	eax,eax
	mov	edx,1h
loop_char_str:
	movzx	ecx,ds: byte ptr [bx+si]
	sub	cl,'0'
	imul	ecx,edx
	add	eax,ecx	
	imul	edx,10d
	sub	bx,1h
	jnc	loop_char_str
	mov	ds: dword ptr [di],eax
exit_str_dec_to_bin:
	popad
	ret

	Str_Dec_To_Bin	endp

;#############################################################################

	Write_Dec_Num64	proc	near

	pushad
	push	eax
	push	edx
	mov	edi,0Ah
	xor	bh,bh
next_dec_long_left:
	push	eax
	mov	eax,edx
	xor	edx,edx
	div	edi
	mov	ebp,eax
	pop	eax
	div	edi
	mov	edx,ebp
	inc	bh
	or	edx,edx
	jne	next_dec_long_left
	or	eax,eax
	jne	next_dec_long_left
	call	Get_Cursor_Position
	add	dl,bh
	dec	dl
	call	Set_Cursor_Position
	pop	edx
	pop	eax
	mov	ebx,0Ah
next_dec_long:
	push	eax
	mov	eax,edx
	xor	edx,edx
	div	ebx
	mov	ebp,eax
	pop	eax
	div	ebx
	add	dl,'0'
	xchg	ax,dx
	call	Write_Char
	xchg	ax,dx
	call	Get_Cursor_Position
	sub	dl,2h
	call	Set_Cursor_Position
	mov	edx,ebp
	or	edx,edx
	jne	next_dec_long
	or	eax,eax
	jne	next_dec_long
	popad
	ret

	Write_Dec_Num64	endp

;#############################################################################

	Write_Message	proc	near

	pusha
	mov	ah,9h
	int	21h
	popa
	ret

	Write_Message	endp

;#############################################################################

	Write_Char	proc	near

	pusha
	mov	ah,0Eh
	int	10h
	popa
	ret

	Write_Char	endp

;#############################################################################

	Set_Cursor_Position	proc	near

	pusha
	mov	ah,2h
	xor	bh,bh
	int	10h
	popa
	ret

	Set_Cursor_Position	endp

;#############################################################################

	Get_Cursor_Position	proc	near

	pusha
	mov	ah,3h
	xor	bh,bh
	int	10h
	mov	bp,sp
	mov	ss: word ptr [bp+0Ah],dx
	popa
	ret

	Get_Cursor_Position	endp

	Str_Len	proc	near

	push	es
	push	ds
	pop	es
	push	cx
	push	di
	mov	di,si
	mov	cx,0FFFFh
	xor	al,al
	repne	scasb
	not	cx
	dec	cx
	xchg	ax,cx
	pop	di
	pop	cx
	pop	es
	ret

	Str_Len	endp

	code	ends
	end	init
In allegato troverai l'eseguibile. A meno di bug "sembra funzionare" (ho avuto a disposizione poco tempo), non ci sono commente in quanto il sorgente e' autoespicativo, spero ti sia utile a scopo didattico.
Allegati
File Type: zip MUL.ZIP (1.8 KB, 6 visite)
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 16:07   #12
Goldrake_xyz
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 984
I numeri binari possono anche essere in complemento 2,
questa rappresentazione è usata per i numeri interi positivi e negativi.
Ad esempio in binario normale si ha con 8 bit
Min = 00000000 = 0 ; MAX = 11111111 = 255
mentre in complemento 2 si hanno i valori (sempre x 8 bit)
Min = 10000000 = -128 ; MAX = 011111111 = 127

E questo si riflette anche nel linguaggio C, gli unsigned char è un byte
che può essere convertito in un intero da 0 a 255, mentre
i signed char possono essere convertiti in un numero da -128 a 127

IMUL è un' istruzione per la moltiplicazione di interi con segno,
cioè di numeri binari complemento2,

MUL è un' istruzione pre la moltiplicazione di interi senza segno,
cioè di numeri binari positivi

Esempio : voglio moltiplicare n1 x n2 (ovviamente n1 e n2 sono cifre)

MOV AX, n1 ; carico il registro AX
MOV BX, n2 ; carico il registro BX

IMUL BX ; esegue la moltiplicazione

IL risultato viene messo nei registri DX,AX

Ultima modifica di Goldrake_xyz : 21-10-2005 alle 17:05.
Goldrake_xyz è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 16:11   #13
Goldrake_xyz
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 984
Sto cercando di trovare il programma che mi hai chiesto,
frà le migliaia di file dei miei programmi ...

Ah eccone uno (in allegato)
Scritto mooolto tempo fà x MS-DOS e compilato con il TURBO ASSEMBLER 2.0,
a quel tempo non esistevano i caratteri proporzionali, e quindi
il programma può risultare disallineato ...

Ciao
Allegati
File Type: txt BIN.TXT (6.2 KB, 7 visite)

Ultima modifica di Goldrake_xyz : 20-10-2005 alle 16:25.
Goldrake_xyz è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 16:38   #14
Goldrake_xyz
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 984
Ooops, nel programma allegato si può anche vedere l'uso delle istruzioni
MUL e DIV con registri a 32 Bit (del 386 : EAX, EBX, ecc. ecc.)
Cmq. per fare la conversione si possono usare anche altri metodi,
che sono forse anche migliori ...
Su google si trova tutto !

Ciao
Goldrake_xyz è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 23:36   #15
Lupino.86
Senior Member
 
L'Avatar di Lupino.86
 
Iscritto dal: May 2002
Messaggi: 2370
Quote:
Originariamente inviato da cionci
Non puoi usare bh e bx come operatori... bl fa parte di bx...
Era un esempio stupido....... più scemo che stupido
Lupino.86 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 23:38   #16
Lupino.86
Senior Member
 
L'Avatar di Lupino.86
 
Iscritto dal: May 2002
Messaggi: 2370
Quote:
Originariamente inviato da cj++
scrivilo in C poi usa il codice ottimizzato generato dal compilatore
Come come come?
Lupino.86 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 23:50   #17
Lupino.86
Senior Member
 
L'Avatar di Lupino.86
 
Iscritto dal: May 2002
Messaggi: 2370
Quote:
Originariamente inviato da repne scasb
Non hai specificato il sistema operativo, ne la modalita' del processore; ho scelto io DOS/WIN_VM modalita' reale:


In allegato troverai l'eseguibile. A meno di bug "sembra funzionare" (ho avuto a disposizione poco tempo), non ci sono commente in quanto il sorgente e' autoespicativo, spero ti sia utile a scopo didattico.
Inanzitutto ti ringrazio per il codice sorgente e l'eseguibile.

Scusa la totale ignoranza in materia, ma credo di nn sbagliare se ti dico che lavoriamo con DOS (al massimo scriviamo con il NotePad e salviamo in .ASM) e usiamo la programmazione Intel 80x86


Cmq ti giuro che nn ho MAi visto certe istruzioni....... potreti spiegarmele oppure devo trovarmi una guida?
Questo programma converte solo da decimale a binario oppure fa anche la moltiplicazione binaria e stampa il risultato convertito in decimale?
Lupino.86 è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2005, 00:02   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Lupino.86
fa anche la moltiplicazione binaria
Rifletti su quanto hai detto...non esiste una moltiplicazione binaria, intera o esadeciamale... Una moltiplicazione è una moltiplicazione e basta... La base in cui esprimi operatori e risultato non contano...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2005, 00:13   #19
Lupino.86
Senior Member
 
L'Avatar di Lupino.86
 
Iscritto dal: May 2002
Messaggi: 2370
Quote:
Originariamente inviato da Goldrake_xyz
IMUL è un' istruzione per la moltiplicazione di interi con segno,
cioè di numeri binari complemento2,

MUL è un' istruzione pre la moltiplicazione di interi senza segno,
cioè di numeri binari positivi

io devo usare l'istruzione MUL perchè nn mi importa del segno..... però moltiplicare i numeri negativi sarebbe una finezza da pochi!


Posso dire che nn ho capito bene come si comporta la funzione MUL?
Lupino.86 è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2005, 00:21   #20
Lupino.86
Senior Member
 
L'Avatar di Lupino.86
 
Iscritto dal: May 2002
Messaggi: 2370
Quote:
Originariamente inviato da cionci
Rifletti su quanto hai detto...non esiste una moltiplicazione binaria, intera o esadeciamale... Una moltiplicazione è una moltiplicazione e basta... La base in cui esprimi operatori e risultato non contano...
Sono d'accordo..... nn mi sono spiegato bene: la moltiplicazione deve essere eseguita a livello binario cioè con numeri binari

00000101 = 5
00000010 = 2
00000110= ----> stampo 10

cioè il programma deve convertire in binario, moltiplicare con i numeri binari e stampare a video il numero decimale
Lupino.86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
'L'UE dovrebbe essere abolita': la spara...
Non solo smartphone: Samsung sta lavoran...
Nessuno vuole comprare iPhone Air: il va...
Porsche Taycan 2027 elettrica con cambio...
Roscosmos: stazione spaziale russa ROS a...
Auto 2035, sei governi UE (c'è l'...
Chernobyl: la cupola di contenimento non...
SSD come CPU: queste memorie sono in gra...
La previsione di CATL: barche elettriche...
Stangata in arrivo: PC e notebook coster...
Lian Li si è inventata il primo a...
Amazon in raptus sconti: ogni 24 ore nov...
44 idee regalo sotto i 50€: con le offer...
Super Sconti Amazon Haul: ribassi fino a...
Cloudflare ha bloccato 416 miliardi di r...
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: 20:23.


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