Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Lenovo Idea Tab Plus prova a portare un display da 12,1 pollici 2.5K, quattro speaker Dolby Atmos e una batteria da 10.200 mAh sotto la soglia psicologica dei 300 euro, penna inclusa. Lo abbiamo usato per oltre una settimana per capire dove l'azienda ha tagliato e dove invece ha tenuto il punto
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
L'euro digitale è una valuta fiat che entrerà in vigore nei prossimi anni. L'obiettivo principale è quello di ridurre la dipendenza dalle piattaforme di pagamento digitali statunitensi e offrire ai cittadini un modo semplice per trasferire denaro. Anche offline, anche in maniera (pseudo)anonima
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-12-2007, 14:27   #1
xblitz
Senior Member
 
L'Avatar di xblitz
 
Iscritto dal: Mar 2007
Messaggi: 384
[Assembler] controindicazioni istruzione DIV su 16 bit?

Salve a tutti
stò creando un programma assembler che dato in input un numero n stampi a video l'ennesimo numero della sequenza di Fibonacci, il mio problema è nella stampa a video del numero:

in pratica per far stampare la cifra opero una divisone per 10000, poi 1000, 100 e 10, infine stampo le unità... il mio problema arriva nella stampa delle migliaria: quando vado a fare la seconda divisione (quella delle migliaia) ottengo dei valori "corrotti".

Mi sono fatto un'idea: mi sono accorte che un flag (per esattezza il flag P) passa da 0 a 1, potrebbe essere lui il responsabile?

uso il turbo debugger assembler 8086

posto il pezzo di codice incriminato:

Codice:
scambia macro
	mov BX,DX
	mov DX,AX
	mov AX,BX
endm

stampa proc
	;salvo i registri che verranno modificati
        push AX
	push BX
	push CX
	push DX		
				
	mov AX,BX   ;sposto il dividento (che è SEMPRE AX)
				
	;decine di migliaia				
	mov BX,10000d	;sposto il divisore in BX
	div BX		;così sono sicuro di avere una divisione su          
                            registri a 16bit quoziente in AX resto in  
                            DX 
	scambia		;la cifra da stampare è in AX, quindi la 
                             metto in DX
	add DL,48d	;recupero lo sfalsamento cifra carattere
	push AX		;AX viene modificato -> devo salvarlo
	mov AH,2       ;carico il servizio di input				
        int 21h		 ;il contenuto che legge va in AL
	pop AX		;ripristino AX
				
	;migliaia				
	mov BX,1000d	;sposto il divisore in BX
	div BX		;così sono sicuro di avere una divisione su 
                            registri a 16bit quoziente in AX resto in 
                            DX 
	scambia		;la cifra da stampare è in AX, quindi la 
                            metto in DX
	add DL,48d	;recupero lo sfalsamento cifra carattere		
        push AX		;AX viene modificato -> devo salvarlo
	mov ah,2	;carico il servizio di input
	int 21h		;il contenuto che legge va in AL
	pop AX		;ripristino AX

        .....
Grazie in anticipo....
Ciao!

Ultima modifica di xblitz : 24-12-2007 alle 14:31.
xblitz è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2007, 15:41   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xblitz Guarda i messaggi
quando vado a fare la seconda divisione (quella delle migliaia) ottengo dei valori "corrotti".
Occhio che quando fai DIV BX stai facendo una divisione 32 bit diviso 16 bit cioè:

DX:AX diviso BX

e in AX ottieni il quoziente e in DX ottieni il resto.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2007, 15:44   #3
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
Giusto, quindi devi azzerare DX prima di fare la divisione
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2007, 19:33   #4
xblitz
Senior Member
 
L'Avatar di xblitz
 
Iscritto dal: Mar 2007
Messaggi: 384

GRAZIE a tutti e 2... (se solo avessi letto gli appunti del prof con più attenzione ) ma scusate quei ":" in pratica vogliono dire "concatenazione"giusto? così mi pare di aver capito dagli appunti
xblitz è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2007, 22:56   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xblitz Guarda i messaggi
(se solo avessi letto gli appunti del prof con più attenzione )
Basta leggere la documentazione ufficiale Intel, che è sicuramente più completa e valida degli appunti del tuo prof.

Quote:
Originariamente inviato da xblitz Guarda i messaggi
ma scusate quei ":" in pratica vogliono dire "concatenazione"giusto? così mi pare di aver capito dagli appunti
Sì, esatto. Vale anche nel caso di segmento/offset, es. DS:98AFH o CS:EIP.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Addio a settimane di test in laboratorio...
NVIDIA Jetson, i nuovi prezzi sono assur...
Windows 11 26H1: tutte le novità in arri...
Apple Upgrade, in arrivo un programma di...
Firefox 153 rilasciato con modifica PDF ...
L'Italia è fra i mercati pi&ugrav...
L'AI risolve un celebre problema matemat...
Anthropic, approvato in via definitiva i...
Cornici ancora più ridotte su iPh...
Samsung lancia la Galaxy Card con cashba...
Dal 2 agosto entrano in vigore nell'UE l...
Vicino a Parma il parcheggio dimenticato...
Sony Music fa la guerra a Udio: contesta...
Telegram integrerà un portafoglio...
Il debito nascosto dei giganti tech dell...
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: 12:37.


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