|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2000
Messaggi: 329
|
Assembly <- DLX
Ciao
![]() Sto studiando l'assembly con windlx ![]() ![]() ;*********** WINDLX Ex.1: Read a positive integer number ************* ;*********** (c) 1991 Günther Raidl ************* ;*********** Modified 1992 Maziar Khosravipour ************* ;----------------------------------------------------------------------------- ;Subprogram call by symbol "InputUnsigned" ;expect the address of a zero-terminated prompt string in R1 ;returns the read value in R1 ;changes the contents of registers R1,R13,R14 ;----------------------------------------------------------------------------- .data ;*** Data for Read-Trap ReadBuffer: .space 80 ReadPar: .word 0,ReadBuffer,80 ;*** Data for Printf-Trap PrintfPar: .space 4 SaveR2: .space 4 SaveR3: .space 4 SaveR4: .space 4 SaveR5: .space 4 .text .global InputUnsigned InputUnsigned: ;*** save register contents sw SaveR2,r2 sw SaveR3,r3 sw SaveR4,r4 sw SaveR5,r5 ;*** Prompt sw PrintfPar,r1 addi r14,r0,PrintfPar trap 5 ;*** call Trap-3 to read line addi r14,r0,ReadPar trap 3 ;*** determine value addi r2,r0,ReadBuffer addi r1,r0,0 addi r4,r0,10 ;Decimal system Loop: ;*** reads digits to end of line lbu r3,0(r2) seqi r5,r3,10 ;LF -> Exit bnez r5,Finish subi r3,r3,48 ;´0´ multu r1,r1,r4 ;Shift decimal add r1,r1,r3 addi r2,r2,1 ;increment pointer j Loop Finish: ;*** restore old register contents lw r2,SaveR2 lw r3,SaveR3 lw r4,SaveR4 lw r5,SaveR5 jr r31 ; Return le tre righe sono quelle in rosso. Il programma deve acquisire da tastiera e cercare il carattere ascii 10 (NL line feed, new line). |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Sintassi: ADD dest,src
ADD dest,imm Flags modificati: CF, OF, PF, SF, ZF, AF esegue la somma tra due operandi, salvando il risultato in un 'dest'. Sintassi: SUB dest,src SUB dest,imm Flags modificati: CF, OF, PF, SF, ZF, AF esegue la differenza tra due operandi, salvando il risultato in un 'dest'. Sintassi: MUL src Flags modificati: CF, OF (PF, SF, ZF, AF non definiti) L'istruzione MUL esegue la moltiplicazione senza segno tra il registro accumulatore (AL a 8 bit, AX a 16 bit, EAX a 32 bit) e il registro src. Se src è un registro a 16 bit il risultato viene salvato in DX:AX; se src è a 32 bit il risultato va in EDX:EAX.
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 2000
Messaggi: 329
|
Problemino
Grazie per la risposta,
![]() però c'è un problemino ![]() ![]() ![]() ![]() Cmq le operazioni svolte ho capito che sono una sottrazione immediata, una moltiplicazione senza segno e un addizione, il mio problema è: perchè bisogna farli??? ![]() ![]() o meglio a che cosa servono ai fini del programma? ![]() ![]() |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Re: Assembly <- DLX
Quote:
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Dec 2000
Messaggi: 329
|
Ti ringrazio maxithron
![]() ![]() |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Quote:
![]() ![]()
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
ma che fine hai fatto poi?
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Dec 2000
Messaggi: 329
|
Quote:
Io sono sempre qui ![]() Comunque alla fine l'ho imparato (anche se per fare un programmino che con il C forse avrei usato due o tre righe di comando ci sono stato 4 giorni ![]() comunque grazie per l'aiuto che mi avevi dato!!! |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
E di che?
Stavo scavando un pò tra i vecchi post quando ho ritrovato appunto questo 3D!! A presto ![]()
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
![]() |
![]() |
![]() |
#10 |
Junior Member
Iscritto dal: Jun 2006
Messaggi: 10
|
Avevo postato una domanda alla quale ho trovato risposta.Grazie lo stesso
Ultima modifica di exetera : 29-06-2006 alle 12:39. Motivo: RISOLTO! |
![]() |
![]() |
![]() |
#11 |
Messaggi: n/a
|
Salve ragazzi, finalmente ho trovato qualcuno che usa il DLX.
Non capisco come far funzionare questo simulatore. Il codice per esempio che ha scritto Bubble, lo capisco, ma come si manda in esecuzione in WinDLX? Cioè ho mandato in esecuzione questo programma e mi appare la schermata di input, con sfondo bianco, che dovrei scrivere li dentro per esempio? Riferendomi a questo programma di Bubble. Vi ringrazio in anticipo per la risposta! |
![]() |
![]() |
#12 |
Junior Member
Iscritto dal: Jan 2013
Messaggi: 1
|
Pure io, finalmente, ho trovato qualcuno che usa il DLX !!!
Potreste aiutarmi a capire qual'è l'operazione svolta da questa sequenza ? ![]() ADDI R1, R0, 800H LOOP: SUBI R1, R1, 2 LHU R2, A(R1) LHU R3, B(R2) LHU R2, C(R3) SH A(R1), R2 BNEZ R1, LOOP |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:14.