Logo by Irenicus venerdì 10-feb-12 09:57


RaulKen.It :: Leggi il Topic - MUL a 64 bit
 FAQFAQ   CercaCerca   Gruppi utentiGruppi utenti   ProfiloProfilo   Messaggi PrivatiMessaggi Privati   LoginLogin 

MUL a 64 bit

 
Nuovo Topic   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
alsa81
Nuovo del Forum
Nuovo del Forum


Registrato: Jan 29, 2007
Messaggi: 3

MessaggioInviato: Lun Gen 29, 2007 11:54 am    Oggetto: MUL a 64 bit Rispondi citando

Ciao a tutti. Sono una studentessa alle prime armi con la programmazione in assembler e mi servirebbe una piccola mano.
In un esercizio mi viene richiesto di accettare da tastiera un numero compreso tra 2 e 9 e stamperne tutte le potenze, prima in decimale e poi in binario, fino ad un risultato compreso in 64 bit. Come posso fare?
Ringrazio anticipatamente chi mi risponderà.

d'oh! d'oh! d'oh!
Torna in cima
Profilo Messaggio privato
GREY_FOX
Moderatore di RaulKen.It
Moderatore di RaulKen.It


Registrato: dic 27, 2001
Messaggi: 3945
Località: L'Aquila

MessaggioInviato: Lun Gen 29, 2007 8:15 pm    Oggetto: Rispondi citando

ma te serve tutto il sorgente? ...... Dimmi dove hai problemi.... non è che vuoi l'esercizio bello fatto? Linguaccia
_________________
Raulkeniano numero 1332 Gioia


Il Sapere umano appartiene al mondo.
the developers: il mio blog sull'informatica.
Torna in cima
Profilo Messaggio privato Invia email HomePage MSN Messenger
alsa81
Nuovo del Forum
Nuovo del Forum


Registrato: Jan 29, 2007
Messaggi: 3

MessaggioInviato: Mar Gen 30, 2007 7:50 am    Oggetto: Rispondi citando

No, non ci penserei minimamente. Ho già fatto tutta la parte che riguarda la richiesta di inserimento di un numero, il controllo dell'intervallo richiesto, la trasformazione dei risultati in binario, ma non riesco a saltarci fuori con la potenza del numero. In pratica mi servirebbe sapere come posso fare la sottoprocedura per farmi dare come risultato tutte le potenze del numero inserito fino a che la potenza non entra nei 64 bit.
Torna in cima
Profilo Messaggio privato
alsa81
Nuovo del Forum
Nuovo del Forum


Registrato: Jan 29, 2007
Messaggi: 3

MessaggioInviato: Mar Feb 20, 2007 5:24 pm    Oggetto: Esercizio in assembler Rispondi citando

Ciao ragazzi.
Il mio problema è questo:
Scrivere un programma in Assembly che acquisisca in ingresso un numero compreso tra 2 e 9. Visualizzare sul video in formato decimale e binario tutte le potenze del numero in ingresso fino al valore massimo contenibile in 64 bit.


;definizione costanti
PAGINA EQU 00h
HT EQU 09h
LF EQU 0Ah
CR EQU 0Dh
;
BIOS_VIDEO EQU 10H
SET_VIDEO_MODE EQU 00h ;in AH
MODO_TESTO EQU 03H ;in AL
;
SET_CURSOR EQU 02h ;in AH
W_CHR_TTY EQU 0Eh ;in AH
;
DOS EQU 21H
R_KEY_CHR EQU 01H
PRINT_STRING EQU 09H
R_KEY_CHR_NE EQU 07h


DSEG SEGMENT PARA PUBLIC 'DATA'
TITOLO DB 'CORSO DI CALCOLATORI ELETTRONICI$'
ISTRUZIONI DB CR,HT,HT,HT,HT,HT,CR,'Inserisci una cifra (numero intero) tra 2 e 9: $'
BIN_MESS DB CR,LF,HT,HT,'Rappresentazione Binaria: $'
DEC_MESs DB CR,LF,HT,HT,'Rappresentazione Decimale: $'
TERMINE DB CR,LF,LF,HT,'Un''altra iterazione? [S/N] $'
NUMERO DB ?
POT1 DB 1 DUP (?) ; REUPERO AL
POT2 DB 1 DUP (?) ; RECUPERO AH
POT3 DB 1 DUP (?) ;VARIE
POT4 DB 1 DUP (?) ;VARIE
CON DB 1 DUP (?)
DSEG ENDS


STACKM SEGMENT PARA STACK 'STACK' ;viene allocata una zona di
DB 64 DUP('12345678') ;memoria per lo Stack: in
STACKM ENDS

ASSUME CS:CSEG,DS:DSEG,SS:STACKM
CSEG SEGMENT PARA PUBLIC 'CODE'

;------------------------------------------------------;
; Corpo principale del programma ;
;------------------------------------------------------;

MAIN PROC FAR
PUSH DS ;Istruzioni da lasciare SEMPRE
MOV AX, 00h ;al principio dei programmi!
PUSH AX
CALL INIZIALIZZAZIONE
CICLO_PRINCIPALE: CALL PROMPT
CALL LETTURA_DATI
MOV AX, 00h
MOV AL , NUMERO ;istr agg
MOV DX,0
MOV CON, 00h
MOV POT1,AL
MOV POT2,AH
CALCOLA_POT: MOV AL, POT1
MOV AH, POT2
CALL STAMPA_NUMERO
MOV AL, POT1
MOV AH, POT2
CALL MOLTIPLICAZIONE ; MOLTIPLICAZIONE A 32 BIT
MOV POT1,AL
MOV POT2,AH
INC CON
CMP CON, 5
JNE CALCOLA_POT ;
CALL TEST_FINALE
JNZ CICLO_PRINCIPALE
RET ;ritorno al Sistema Operativo
MAIN ENDP



MOLTIPLICAZIONE PROC NEAR
PUSH AX
MOV AX,DX
MUL NUMERO
XCHG DX,CX
XCHG BX,AX
POP AX
MUL NUMERO
ADD BX,DX
RET
MOLTIPLICAZIONE ENDP

Non so cosa sbaglio per avere il risultato richiesto dal problema.

Tutte le chiamate che vengono fatte all'interno del programma dovrebbero essere funzionanti. Il mio problema è che non riesco a trasformare il risultato da esadecimale a decimale. Come posso fare?
Come posso arrivare a utilizzare 64 bit?
Torna in cima
Profilo Messaggio privato
Mostra prima i messaggi di:   
Nuovo Topic   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi Topic in questo forum
Non puoi rispondere ai Topic in questo forum
Non puoi modificare i tuoi messaggi in questo forum
Non puoi cancellare i tuoi messaggi in questo forum
Non puoi votare nei sondaggi in questo forum

Powered by phpBB © 2001, 2005 phpBB Group


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Generazione pagina: 0.55 Secondi