Newsgroup: it.istruzione.scuola.informatica
Titolo: aiuto!programma in assembler

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 
f100.law4.hotmail.com
 [216.33.149.100] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Io prima d'ora non avevo mai provato un programma sul computer
Evviva l'università italiana che consente di fare un esame sui
calcolatori senza usare il calcolatore!!!

 calcolatori senza usare il calcolatore!!!
Dipende dall'università :-)
-- 
dario...@iol.it
 (pgp key on pgp servers)
http://dario.eyep.net
 (dial-up)
ICQ#: 37438061
The only good Windows is an uninstalled Windows, or maybe Windows2K

calcolatori senza usare il calcolatore!!!
Infatti questa cosa mi sembra strana anche a me.
Possibile cara Martina che hai fatto la teoria, ma nessuna esercitazione di
programmazione?
Distinti Saluti
Ing. Simone