Newsgroup: it.comp.programmare
Titolo: <no subject>

Ciao a tutti,
ho un problema urgente: 9 giorni fa ho fatto un esame scritto di calcolatori 
elettronici e il professore mi aveva detto che avevo sbagliato un programma 
in assembler che secondo me potrebbe andare bene. Allora il professore mi ha 
detto di provare il programma sul computer e di riportarglielo se avesse 
girato. Io prima d'ora non avevo mai provato un programma sul computer.Ho 
provato a farlo girare in questa settimana ma non ci sono riuscita. Potreste 
vedere se il programma è completamente sbagliato e o se posso fare qualche 
piccola correzione?
Il testo dell'esercizio è:
3)	Scrivere un sottoprogramma assembler che riceve una sequenza di byte, di 
indirizzo in EAX e lunghezza in BX. La sequenza di byte viene interpretata 
come una sequenza di bit, in cui il primo bit della sequenza è il bit più 
significativo del primo byte, l'ottavo bit della sequenza è il bit meno 
significativo del primo byte, il nono è il più significativo del secondo 
byte e così via. Il sottoprogramma lascia in CX il numero di sottosequenze 
0110 presenti nella sequenza di bit.
Esempio: se la sequenza è composta dai 4 byte 00011000 11001110 01010101 
01011000  allora il numero di sottosequenze è 3 (notare che una 
sottosequenza può coinvolgere due byte diversi). Le sottosequenze possono 
sovrapporsi (ad esempio, 01101100 conterrebbe due sottosequenze).
Suggerimento: è necessario fare scorrere il bit più significativo di un byte 
nella posizione meno significativa del byte che lo precede; può essere utile 
effettuare questa operazione "ogni 4 volte"  invece che "ogni volta"
.GLOBAL start
.DATA
conta: .byte 8
.TEXT
start:
PUSHW %CX
PUSHL %EAX
PUSHW %DX
PUSHW %BX
MOVW $4,%BX
MOVL $0b00011000110011100101010101011000,(%EAX) #metto questi valori tanto 
per provare se viene giusto
MOVW $0,%CX
MOVB (%EAX),%DH
ADDL $1,%EAX
MOVB (%EAX), %DL
ricomincia:
SUBB $1,conta
cmpb $0,conta
JNE next
MOVB $8,conta
ADDL $1,%EAX
MOVB (%EAX),%DL
DECW %BX
JZ fine
next:
ADDB $0,%DH
JNS ricomincia1
SHLW $1,%DX
JMP ricomincia
ricomincia1:
SHLW $1,%DX
SUBB $1, conta
cmpb $0,conta
JNE next2
MOVB $8,conta
DECW %BX
JZ fine
ADDL $1,%EAX
MOVB (%EAX),%DL
next2:
ADDB $0,%DH
JS passo2
SHLW $1,%DX
JMP ricomincia1
passo2:
SHLW $1,%DX
SUBB $1,conta
cmpb $0,conta
JNE next3
MOVB $8,conta
DECW %BX
JZ fine
ADDL $1,%EAX
MOVB (%EAX),%DL
next3:
SHLW $1,%DX
ADDB $0,%DH
JS next4
shlw $1,%dx
JMP   ricomincia1
next4:
SHLW $1,%DX
SUBB $1,conta
MOVB $8,conta
JNE next5
MOVB $8,conta
DECW %BX
JZ fine
ADDL $1,%EAX
MOVB (%EAX),%DL
next5:
SHLW $1,%DX
ADDB $0,%DH
JS ricomincia
ADDW $1,%CX
JMP ricomincia1
fine:
MOVB $2,%AH
MOVB %CL,%DL
INT $21
MOVB %CH,%DL
INT $21
POPW %BX
POPW %DX
POPL %EAX
POPW %CX
RET
Il programma dovrebbe mettere in DH il 1°byte di EAX,in DL il 2° e 
decrementare conta prima di ogni operazione,e confrontarlo con 0(se è 0 
copiare il byte successivo in DL e decrementare BX)  in modo da sapere 
quanti byte considero e fare il test su bx che contiene il numero di byte da 
considerare. Dopo aver fatto il test su conta confronta nel primo passo la 
cifra più significativa con 0,se è uguale va avanti altrimenti torna 
indietro,nel secondo passo confronta la cifra più significativa con 1 
altrimenti torna indietro,nel terzo confronta la cifra più significativa con 
0 altrimenti torna indietro al secondo passo (perchè se ho già uno zero ho 
la prima cifra della prima sottosequenza)
quando lo compilo mi da come errore :undefined reference to 'main'.
Grazie a  tutti quelli che mi risponderanno.
Martina
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at 
http://www.hotmail.com
.
Share information about yourself, create your own public profile at 
http://profiles.msn.com
.
--
Posted from [213.255.24.59] by way of 
f24.law4.hotmail.com
 [216.33.149.24] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

provato a farlo girare in questa settimana ma non ci sono riuscita. 
[MEGA-CUT]
Mi sto per sentire male... sono all'ultimo anno di liceo ma è questa
l'università che mi aspetta un domani? Dove si fa un corso su
programmazione assemby senza MAI fare girare un programma su un
computer????????????????
No comment.

On 28 Sep 2000 13:12:20 +0200, 
sunny...@hotmail.com
 ("Martina
*******") wrote:
Io credo che tu abbia un problema non nel programma in se' ma in come lo
compili e, soprattutto, lo linki. Cosa usi per farlo?
Leonardo
".signature": bad command or file name

 l'universitą che mi aspetta un domani? Dove si fa un corso su


Grazie della risposta ! uso il compilatore GNU che si trova nel sito web:
www.delorie.com/djgpp/
Forse bisogna aggiungere all 'inizio del programma qualche riga di testo
per includere librerie, ma il professore non ce l'ha mai detto. Quindi non
so cosa possa essere e non riesco ad usare neache i breakpoints perchè mi
sa che il programma si pianta subito all'inizio. 
Hai qualche idea di che cosa bisogna aggiungere o cosa bisogna fare per far
funzionare il compilatore?
Grazie per l'aiuto
Martina
--
Posted from 
c000-h010.c000.muc.cp.net
 [209.228.29.34] 
