Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Manuale Assembler
Manuale Assembler
Architettura
e Programmazione Assembly
Alberto BROGGI
Dipartimento di Ingegneria dellInformazione
Universit di Parma
Alberto BROGGI
Dipartimento di Ingegneria dellInformazione
Universit di Parma
Seconda edizione
Per eventuali aggiunte e/o correzioni:
"!#!#!$
%&%'("%)&*"
oppure
Sommario
I LINGUAGGI ASSEMBLY
Caratteristiche dei Linguaggi Assembly
Statements
Istruzioni
Pseudo-Istruzioni
Macro
Commenti
Vantaggi dei Programmi Assembly
2
3
4
5
9
10
11
12
16
17
18
20
27
29
30
35
70
87
89
LE FUNZIONI MS-DOS
Accesso alle Funzioni DOS e BIOS
Accesso diretto alla memoria video
90
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
APPENDICI
A: Programma di Esempio
B: Esempio di Documentazione dellIstruzione AND
C: Instruction Set della CPU 8086
114
114
120
121
124
127
128
132
I Linguaggi Assembly
+
Le funzioni MS-DOS
+
A.Broggi
I LINGUAGGI ASSEMBLY
Statements
+
Istruzioni
+
Pseudo-Istruzioni
+
Macro
+
Commenti
Vantaggi dei Programmi Assembly
dispositivi di I/O
+
A.Broggi
Statements
Un programma Assembly composto di Statements. Ogni statement comprende una direttiva per lAssemblatore e corrisponde ad
una riga del programma.
Se la direttiva corrisponde ad una istruzione macchina eseguibile dalla CPU, essa detta Istruzione, altrimenti una PseudoIstruzione.
Operandi
+
Pseudo-Istruzioni
+
Macro
Commenti
Istruzioni
Vengono tradotte dallAssemblatore in istruzioni macchina. Ogni
istruzione composta in generale da:
+
+
Esempio:
,- .)
/02134
/5 - 6487:9;
<>=#?A@B=
C /FE
D
1MCON
T*U
Y[Z =
@ V =
? GJILKMG
H
?HGJIQPSR
VMWAX ? ,
R"P
V\WFX ? ,
A.Broggi
Etichette
Sono identificatori associati ad una istruzione; lassemblatore le
sostituisce con lindirizzo dellistruzione che rappresentano.
Offrono i seguenti vantaggi:
+
+
Esempio:
7] PP>P ;
`3YaY =FP
] P ^
] 1
P] ] V
] PPP
] PPfe
T.,_V
< X K
CD/cE
<>g ,
`3YbaFY =P
`5,
1 , IdR
`h, IQP
Codici Operativi
lo mnemonico di unistruzione assembly: in altri termini specifica loperazione che deve essere eseguita dalla CPU
lunico campo che non pu mai mancare in unistruzione
Esempio:
<>=#?A@B=
V\WFX ? ,
C /FE
D
1MCON
T*U
Y[Z =
@ V =
? GJILKMG
H
?HGJIQPSR
VMWAX ? ,
R"P
A.Broggi
Operandi
Contiene lindicazione necessaria a reperire gli operandi (uno o
pi, a seconda dei casi) richiesti dallistruzione.
Sulla base di quanto indicato in questo campo, la CPU provveder,
durante lesecuzione del programma, a reperire gli operandi:
+
+
nellistruzione stessa
+
in un registro
+
in memoria
su una porta di I/O
Esempio:
CD/cE
CD/cE
CD/cE
Y[Z
?0GJIdR
?0GJILK\G
?0GJI E ? , / @ V
?iGJI ` G
Pseudo-Istruzioni
Sono comandi utilizzati durante il processo di assemblaggio (dallAssemblatore o Assembler), che non vengono tradotti in istruzioni
macchina eseguibili dalla CPU.
Esempio:
= Y = ,\V
` < V3a
N @ /1
4>mNn N X K ,oY 1
p ` ?B=q? p
t Y u%&v
%.4w -v,V =q= X @c?$r < Z
VZA` N
t x '6ybz
%.4w -v,V =q= X @c?$r < Z
VZA`
A.Broggi
10
Macro
Sono comandi utilizzati per semplificare la stesura di un programma complesso in cui c la necessit di ripetere pi volte determinati
segmenti di codice.
Vengono tradotti in sequenze di istruzioni macchina eseguibili
dalla CPU.
Esempio:
<"g Y x|=Ar ,\V x|=Fr}?cGsr}~
<>g
>< g
>< g
>< g
C ? 1
,
,
,
,
VZA`
@ /
?0GIQP
?0GIQP
?0GIQP
?0GIQP
C
C ? 1 @ /
E ? ,_XAV
?0GJI E ? ,_XAV
CD/FE
<>g Y x|=Ar ,_V x|=Ar ?BGr~
, / ? ` r ?cGsr}? c
Z ` rC A
X , rPf
VoZc` C
?0GJIm C V C
CD/FE
<>g Y x|=Ar ,_V x|=Ar ?BGr~
KMGIL?0G
CD/FE
, / ? ` r?cGr}? ZA` r C XA, r Pf
KMGIL?0G
CD/FE
R ]
11
Commenti
Sono parole o frasi inserite dal programmatore per rendere il programma pi comprensibile; servono al programmatore stesso e a chi
analizzer in futuro il codice.
Vengono ignorati dallassemblatore, che si limita a visualizzarli
quando si richiede il listato del programma.
Tutti i caratteri compresi tra un ; e un CR , vengono considerati commenti.
-jkjl-j$- )m
jkj % -
<>=#?A@B=
V\WFX ? ,
-jkjl<>=#?A@B=
V\WFX ? ,
C /AE
1MCON
T*U
Y[Z =
@ V =
? GILKMG
0
t 1 - &
% ?HG
b)l
w%wv4> KMG
?0GIdR(~
t 1iww ?0G
)ln - )b R(~ 4.
"
t < ?HG$$R"~ - )&) - 9 - ) --V\WX ? ,
VMWAX ? ,
R"P
t 1 ->jl- )p YZ = V @c@ X N = j . R"P
2
t @ ' -- )') - z
%.4w -
-jl- w
.
b jj .w - b
C /AE
1MCON
T*U
Y[Z =
@ V =
? GILKMG
0
t 1 - &
%v ?iG )k j 4)) - ?0GIdR(~
t < 9 - )k. j '4".)&)&9
% j
?
t - )&) - 9
%'n)') VMWAX
,
R"P
t <
&nl) - b99b jk- & - 4%)l.9
t @ ' -
A.Broggi
12
pi veloci,
+
pi corti,
ma pi complessi
]
@ YZ = Y
Y R
x Y P ]] a / = /
P%P ]
13
Y
, ]] P ]]w
, ]] PP ]w
, ]] P*R ]w
, ]] Pfe ]w
`3
C/AE
C/AE
1 ? ,o,
C/AE
? `F`
CD/FE
C/AE
1MCON
T K
YI ]
?0GJI Y
<=q? CN ?
?0GJI Y
?iGJIdR
Y IL?0G
?0GJI Y
?0GJIQP ]]
, ]] PP ]
A.Broggi
14
?0GJI ]
CD/FE
<>=#? CON ?
1 ? ,o,
? G
0
Y[Z 1
? G
0
Y[Z 1
? GIQP ]]
0
1MCON
1 Y1 , /
T K
Per programmi pi articolati risulta pi evidente la maggiore complessit di sintesi direttamente in Assembly.
15
t">>
t
t
N
%.4w - 4> - bf9 - 4>Q9b9b - 7 < Z ;4 - )&)p.wyn* - - 9% t
t">>
= = X @c?sr}< Z
,V #
/ E ?sr ,oV =q= X @c?
Z X F
i
`
`
`
`
`
`
`
`
? ]]
? ]]
? ]]
? ]]
? ]]
? ]]
? ]]
? ]]
?AR
?B~
?c
?c
?c?
? 1
? V
K ]
K\~ ]^
1 ` RP
]%1 R ]
e 1 V
~ ] ~
e 1h e
xR
1 e
t Y uz
.4 -,V =#= X @q?sr< Z
N @ $
/ 1
Z3V ?A@
?0gI ]z
t < %nu%& ` / < p @ - 45% - 4
C/cE
R*P
t ' w V
p
Y[Z =
? , I}R ]
t 13n%by j &9
%>)
/ @
? , I p8p
t < ) - 9 j wv
pQp Z p
1MCN
x YZAV r ,_V =#= X @c?
t 9
{4 - )&) -
%%4w6 T"U
? , I p}9
p
t < pQp < p I
1MCN
t y)
- )'
TfZFU
Z3X /FE ?r ,_V =#= X @q?
@ V =
t @ - )&) - z
>L
-jl- w
t x &{4>)) - z
.4 V_ZA` N
C/cE
Y[Z =
/ @
1|CON
T"U
1MCN
T.ZU
@ V =
?0gI ]^
R"P
? , I}R ]
? , I V
]
] K ]
? , I e
]%] ?FR
A.Broggi
16
ARCHITETTURA LOGICA
DELLA CPU INTEL 8086
Registri e Flags
Composizione manuale di istruzioni macchina
7 modi di indirizzamento
+
Alimentazione a 5 volt
+
48 pin di interconnessione
Set di istruzioni esteso (CISC)
17
A.Broggi
18
Paragrafi
Segmenti
...
Memoria
0
Paragrafi
16
0
32
1
0
Segmenti
48
1
2
64
3
80
4
96
5
1M-32
64k-2
1M-16 1M
64k-1
19
il Segment Address:
lindirizzo di testa del segmento e viene ottenuto moltiplicando
per 16 il numero del segmento.
lEffective Address (EA):
lindirizzo effettivo allinterno del segmento, calcolato come
offset (spostamento) rispetto allinizio del segmento stesso.
NB: la moltiplicazione per 16 pu essere notevolmente velocizzata da un semplice shift a sinistra di 4 posizioni della rappresentazione
binaria del numero.
Effective Address
16 bit
Segment Address
16 bit
Physical Address
20 bit
A.Broggi
20
Registri e Flags
La CPU INTEL 8086 possiede i seguenti 14 registri:
+
+
+
+
21
A.Broggi
22
Pointer Registers
I registri Pointer (o Index o Offset) sono generalmente utilizzati
come puntatori a dati in memoria. Si possono dividere in:
+
Base Pointer
BX: Data Segment Base Pointer ( il BX precedente!)
+
23
Segment Registers
Sono 4 registri destinati a contenere lindirizzo di testa dei segmenti usati dal programma.
+
A.Broggi
24
Flag Register
L8086 dispone di 9 bit detti flag, organizzati allinterno di un
registro a 16 bit (Flag Register).
I bit non usati sono fissi al valore 0.
15 14 13 12 11 10 9
OF DF IF TF SF ZF
4
AF
PF
0
CF
Carry Flag
Parity Flag
Auxiliary Flag
Zero Flag
Sign Flag
Trap Flag
Interrupt Flag
Direction Flag
Overflow Flag
di stato
di controllo
25
Flag di Stato
Forniscono indicazioni relative al risultato dellultima istruzione eseguita. Vengono automaticamente aggiornati dal processore
ed il loro valore pu essere testato dallutente tramite opportune
istruzioni. Sono:
+
A.Broggi
26
Flag di Controllo
Il loro valore pu essere forzato dallutente attraverso apposite
istruzioni.
In determinate situazioni sono testati dal processore che, a seconda del loro valore, si comporta in modi diversi.
+
27
Composizione Manuale
di Istruzioni Macchina
Basandosi sulle tabelle fornite dal costruttore, si emuli il comportamento dellAssemblatore, costruendo manualmente unistruzione
macchina: ad esempio
MOV AH,11
Si esamina la tabella relativa allistruzione MOV, unitamente alla
speigazione dei simboli in essa contenuti.
A.Broggi
28
OpCode W Reg
Dato
29
+
+
Istruzioni
+
Modi di Indirizzamento
+
A.Broggi
30
Un programma scritto in Assembly 8086 composto di Statements; normalmente ognuno di essi occupa una riga fino ad un
LF o una coppia CR LF .
caratteri speciali (
M'
CR ,
;.",_:?@$&)
LF
),
31
Identificatori
Sono usati come nomi assegnati ad entit definite dal programmatore (segmenti, variabili, label, etc.)
A.Broggi
32
Costanti
binarie: 001101B
+
ASCII: S, Salve
reali in base 10: 2.345678, 112E-3
Espressioni
artimetici
A^
(
MOD, SHL, SHR)
logici
(AND, OR, XOR, NOT)
relazionali
(EQ, NE, LT, GT, LE, GE)
33
A.Broggi
34
, ' ,
HIGH, LOW
(unario),
+
+
(unario)
NOT
+
AND
+
OR, XOR
SHORT
35
Istruzioni
LAssembly 8086 rende disponibili 92 tipi di istruzioni, raggruppabili nelle seguenti classi:
+
+
Trasferimento Dati
+
Aritmetiche
+
Manipolazione di Bit
+
Trasferimento di Controllo
+
Manipolazione di Stringhe
+
Manipolazione di Interruzioni
Controllo del Processore
A.Broggi
36
OpCode
Descrizione
General Purpose
MOV
Move (Byte or Word)
POP Pop a Word from the Stack
PUSH
Push Word onto Stack
XCHG
Exchange Registers
XLAT
Translate
Input/Output
IN
OUT
LDS
LEA
LES
LAHF
SAHF
POPF
PUSHF
Trasf. di indirizzi
37
memoria memoria
Si deve passare attraverso un registro general-purpose: esempio:
CD/AE
CD/AE
?0GJId<>@ 1
`5V <=AIL?0G
CD/AE
CD/AE
?0GJI V <
` <2IL?iG
N X <g
N /FN
\
V <
` <
A.Broggi
38
?0G
V <
` Y
3
< Y
< Y
`3Y
V <
?0G
39
A.Broggi
40
Istruzioni Artimetiche
OpCode
Descrizione
AAA
ADC
ADD
DAA
INC
AAS
SUB
SBB
DAS
DEC
CMP
NEG
AAM
IMUL
MUL
AAD
DIV
IDIV
CBW
CWD
Addizione
Sottrazione
Moltiplicazione
Divisione
Conversione
41
A.Broggi
42
Operazioni su 32 bit
Le operazioni di somma e sottrazione possono essere facilmente
eseguite anche su operandi di dimensioni superiori a 16 bit, usando
le istruzioni
+
+
destination
destination
destination
destination
source
source
Carry
Carry
Esempio 1:
Per sommare i 32 bit memorizzati in BX:AX con DX:CX, lasciando
il risultato in BX:AX,
? `F`
? ` 1
? GJI 1 G
i
KMGJI ` G
t < jkjkt< k
j jl-
P
P
j .v9&&[
- &n
'8L9''&
- n
Esempio 2:
Per sottrarre i 32 bit memorizzati in BX:AX a DX:CX, lasciando il
risultato in BX:AX,
< X K
< K 1
?iGJI 1 G
KMGJI ` G
43
Moltiplicazione e Divisione
Il processore 8086, a differenza di molti processori ad 8 bit, dispone delle istruzioni di moltiplicazione e divisione.
Per entrambe le operazioni esistono forme distinte a seconda che
gli operandi siano interi senza segno (MUL o DIV) o interi con segno
(IMUL e IDIV).
Le due operazioni hanno un solo operando, che deve essere un
registro generale o una variabile (cio il contenuto di una locazione
di memoria).
A seconda delle dimensioni di tale operando (byte o word), si
hanno operazioni di tipo byte oppure word.
A.Broggi
44
Moltiplicazione
Divisione
45
A.Broggi
46
AAA:
converte il risultato di unaddizione in decimale unpacked
AAS:
converte il risultato di una sottrazione in decimale unpacked
AAM:
converte il risultato di una moltiplicazione in decimale unpacked
AAD:
converte il dividendo di una divisione da decimale unpacked a
binario
DAA:
converte il risultato di unaddizione in decimale packed
DAS:
converte il risultato di una sottrazione in decimale packed
Istruzioni
per la Manipolazione dei Bit
OpCode
Descrizione
AND
OR
XOR
NOT
TEST
Logical AND
Logical OR
Exclusive OR
Logical NOT
Test
SAL
SAR
SHL
SHR
ROL
ROR
RCL
RCR
Rotate Left
Rotate Right
Rotate through Carry Left
Rotate through Carry Right
Logiche
Di Traslazione
Di Rotazione
47
A.Broggi
48
49
Descrizione
CALL
RET
JMP
Call Procedure
Return from Procedure
Jump Unconditionally
JA, JNBE
JAE, JNB
JB, JNAE, JC
JBE, JNA
JCXZ
JE, JZ
JG, JNLE
JGE, JNL
JL, JNGE
JLE, JNG
JNC
JNE, JNZ
JNO
JNP, JPO
JNS
JO
JP, JPE
JS
Jump If Above
Jump If Above or Equal
Jump If Below
Jump If Below or Equal
Jump if CX Register Zero
Jump If Equal
Jump If Greater
Jump If Greater or Equal
Jump If Less
Jump If Less or Equal
Jump If No Carry
Jump If Not Equal
Jump If No Overflow
Jump If No Parity
Jump If No Sign
Jump If Overflow
Jump If Parity
Jump If Sign
LOOP
LOOPE, LOOPZ
LOOPNE, LOOPNZ
Loop on Count
Loop While Equal
Loop While Not Equal
Salti incondizionati
Salti condizionati
Istruzioni iterative
A.Broggi
50
Istruzioni di Salto
Permettono di effettuare:
Salti Condizionati:
il salto viene eseguito o meno a seconda del valore corrente
di uno o pi flag; questi sono solitamente modificati da una
precedente istruzione CMP, SUB, etc.;
la distanza relativa dellistruzione cui saltare deve essere com
51
Nota:
Alcune delle istruzioni di salto condizionato elencate sono ridondanti: ad esempio la JA (Jump if Above) equivalente alla JNBE
(Jump if Not Below or Equal).
La seguente tabella riporta linsieme minimo di istruzioni di salto
condizionato da usare dopo unistruzione
CMP NUM1, NUM2
dove NUM1 e NUM2 possono essere due numeri con o senza segno.
NUM1
NUM1
NUM1
NUM1
NUM1
NUM1
NUM2
NUM2
NUM2
NUM2
NUM2
NUM2
A.Broggi
52
53
NEAR:
pu essere chiamata solo dallinterno dello stesso segmento di
codice cui appartiene;
FAR:
pu essere chiamata dallinterno di un segmento di codice qualsiasi.
La CALL provvede a:
La RET provvede a:
ripristinare tramite unistruzione POP il valore di IP (e di CS nel
caso di procedura FAR) salvato nello stack, riprendendo quindi
lesecuzione del programma a partire dellistruzione successiva
allultima CALL.
A.Broggi
54
Istruzioni
per il Controllo delle Iterazioni
Il processore 8086 prevede anche alcune istruzioni per la gestione
dei loop. Il loro formato :
OpCode Label
dove OpCode pu essere:
+
LOOP:
decrementa il registro CX e salta a Label se questo diverso da
zero;
LOOPE / LOOPZ:
decrementa il registro CX e salta a Label se:
CX diverso da zero e
+
55
Istruzioni
per la Manipolazione delle Stringhe
OpCode
Descrizione
MOVS
MOVSB
MOVSW
Istruzioni di Spostamento
Istruzioni di Confronto
CMPS Compare String (Byte or Word)
CMPSB
Compare String Byte
CMPSW
Compare String Word
Istruzioni di Ricerca
SCAS
SCASB
SCASW
LODS
LODSB
LODSW
STOS
STOSB
STOSW
Istruzioni di Caricamento
Istruzioni di Scrittura
A.Broggi
56
Le istruzioni per la manipolazione delle stringhe operano su blocchi di dati consecutivi in memoria, denominati stringhe e costituiti
da byte o word.
Move:
sopstamento di un dato da una posizione di memoria ad unaltra
Compare:
confronto di due dati in memoria
Scan:
ricerca di un dato in memoria
Load:
caricamento di un dato dalla memoria in un registro accumulatore
Store:
scrittura in memoria di un dato presente in un registro accumulatore
57
A.Broggi
58
` K
` K
CD/cE <
P ]]
P ]]
N 7 ;
`5X q
N 7 ;
` X q
5
<>=q@PId<>=#@AR
59
Prefissi di Ripetizione
OpCode
Descrizione
Prefissi di Ripetizione
REP
Repeat
REPE
Repeat While Equal
REPNE Repeat While Not Equal
REPNZ Repeat While Not Zero
REPZ
Repeat While Zero
A.Broggi
60
CMPS e SCAS, il comportamento uguale al caso precedente, con lunica differenza che il ciclo viene abbandonato
anche se lo Zero Flag (ZF) assume valore 0;
REPNE o REPNZ:
Se usate in combinazione con
MOVS, LODS e STOS, causano la ripetizione dellistruzione seguente per un numero di volte pari al contenuto iniziale di CX; ad ogni iterazione CX viene decrementato e listruzione viene ripetuta fin tanto che CX diverso da 0; al
termine CX vale 0;
CMPS e SCAS, il comportamento uguale al caso precedente, con lunica differenza che il ciclo viene abbandonato
anche se lo Zero Flag (ZF) assume valore 1;
61
Descrizione
INT
INTO
IRET
Interrupt
Interrupt on Overflow
Interrupt Return
Manipolazione di Interruzioni
A.Broggi
62
63
Istruzione INT
Causa lattivazione della routine di servizio relativa ad un certo
Interrupt. Ha il seguente formato:
INT interrupt-number
dove interrupt-number identifica lInterrupt, cio il numero dordine
dellInterrupt Vector che si desidera attivare, allinterno della tabella
che contiene i 256 Interrupt Vector ammessi dal sistema.
Lindirizzo fisico dellInterrupt viene ottenuto semplicemente moltiplicando per 4 il parametro interrupt-number.
A.Broggi
64
65
Istruzione IRET
listruzione conclusiva di una ISR; causa il ritorno del sistema
nello stato precedente allultima INT e lesecuzione delle istruzioni ad essa successive nel programma interrotto. Non ha operandi e
provoca le seguenti operazioni:
+
+
A.Broggi
66
Istruzioni
per il Controllo del Processore
OpCode
Descrizione
CLC
CLD
CLI
CMC
STC
STD
STI
ESC
HLT
LOCK
WAIT
Escape
Halt
Lock the Bus
Wait
NOP
No Operation
Sincronizzazione
Istruzione nulla
67
STD e CLD:
rispettivamente servono per forzare ad 1 o a 0 il Direction Flag;
STI e CLI:
rispettivamente servono per forzare ad 1 o a 0 lInterrupt Flag;
A.Broggi
68
Istruzioni di Sincronizzazione
Permettono al processore 8086 di sincronizzarsi con dispositivi
esterni; sono:
+
HLT:
forza il processore nello stato idle, cio il processore non esegue
nessuna istruzione fino a che non:
riceve un Interrupt esterno;
+
WAIT:
forza il processore nello stato idle; ogni 5 colpi di clock viene
controllata la linea TEST: quando questa viene attivata, il processore procede con lesecuzione dellistruzione successiva alla
WAIT;
ESC:
usata per inviare istruzioni al coprocessore matematico 8087;
LOCK:
un prefisso che pu precedere qualunque istruzione; si usa
quando si vuole che nessun altro dispositivo utilizzi il bus durante lesecuzione dellistruzione prefissata. Viene utilizzata in
sistemi multiprocessore per istruzioni che facciano uso di risorse
critiche (memoria condivisa).
69
A.Broggi
70
Modi di Indirizzamento
Il Modo di Indirizzamento di unistruzione definisce il metodo da
utilizzare per determinare dove memorizzato un particolare dato
(operando).
Gli operandi possono essere contenuti:
+
+
in registri;
+
nellistruzione stessa;
+
in memoria;
su una porta di I/O.
Register;
+
Immediate;
+
Direct;
+
Register Indirect;
+
Base Relative;
+
Direct Indexed;
Base Indexed.
71
Register Addressing
Nellistruzione specificato il registro da utilizzare come operando.
Formato Assembly:
registro
Esempio:
CD/cE
?0GJILK\G
A.Broggi
72
Immediate Addressing
Nellistruzione stessa indicato il dato da utilizzare come operando.
Formato Assembly:
espressione
Esempi:
CD/AE
CD/AE
?HGJIQP ]
K , I 7 ~P
;b P ]
73
Note:
+
V WFX
M
'
C/AE
PSRe~
1 GI
Il dato indicato nellistruzione viene trasformato dallassemblatore in formato binario su 8 o 16 bit, e scritto nel campo opportuno dellistruzione macchina.
Si noti, come regola generale, che, se il dato su 16 bit, gli 8
bit pi significativi sono scritti nel secondo byte, mentre quelli
meno significativi nel primo.
A.Broggi
74
Direct Addressing
Nellistruzione specificato il nome di una variabile, corrispondente allEffective Address della parola di memoria da utilizzare come operando. Alla variabile pu essere sommata o sottratta unespressione.
Lindirizzo fisico ottenuto sommando lEA con il contenuto del
Data Segment DS moltiplicato per 16.
Formato Assembly:
variabile
espressione
Esempio:
CD/FE
CD/FE
?0GIL=?AK _
, V
?0GIL=?AK _
, V
P
75
A.Broggi
76
Base;
+
Formato Assembly:
registro
Esempio:
CD/cE
CD/cE
?0GJIm K0G
?0GJIm < Y
Esempio di
Register Indirect Addressing
77
A.Broggi
78
Esempio
Codice per il trasferimento di un vettore in un altro usando il
Register Indirect Addressing.
W5XBY
CD/AE
CD/AE
CD/AE
CD/FE
CD/AE
? `F`
? `F`
, /s/AN
< Y I
/ x|x< V = < / X @ 1 V r E V 1 =
= rE V 1 =
/ x|x< V = `5V <wA
`3Y I
1 GJI
E V 1 =Ar ,_V0ZAa =qg
?iGJI
< Y
`cY IL?HG
< Y I
R
R
`3Y I
W3XcY
79
Formato Assembly:
registro
displacement
Esempio:
CD/AE
?HGJIm K0G
CD/AE
CD/AE
CD/AE
?HGJIm K0G ~
?HGJIJ~v K0G
?HGJIm K0G ~
Nota:
le 3 forme
80
A.Broggi
81
Formato Assembly:
variabile
variabile
SI
DI
Esempio:
C/AE
A.Broggi
82
Esempio di
Direct Indexed Addressing
83
Esempio
Codice per il trasferimento di un vettore in un altro usando il
Direct Indexed Addressing.
W5XBY
CD/AE
CD/AE
CD/FE
CD/AE
? `F`
, /s/AN
< Y I
]
1 GJI
E V 1 =Ar ,_V0ZAa =qg
?iGJI
< / X @ 1 V rE V 1 =
`5V <=Fr E V 1 = < Y IL?iG
< Y I
R
W3XcY
< Y
A.Broggi
84
Formato Assembly:
variabile
variabile
variabile
variabile
BX
BX
BP
BP
SI
DI
SI
DI
Esempio:
C/AE
?0GJIL?0@B@B?BLKhG `AY
85
A.Broggi
86
Base Relative
Direct Indexed
Base Indexed
Formato
SegReg
registro
nessuno
dato
nessuno
variabile
DS
[BX]
DS
[BP]
SS
[DI]
DS
[SI]
DS
label [BX]
DS
label [BP]
SS
label [DI]
DS
label [SI]
DS
label [BX] [SI]
DS
label [BX] [DI]
DS
label [BP] [SI]
SS
label [BP] [DI]
SS
87
A.Broggi
88
Clocks
Bytes
Esempio
byte(word)
reg, reg
2
2
MOV BX,CX
mem, acc
10 (14)
3
MOV MEM_DEST,AL
acc, mem
10 (14)
3
MOV AX,MEM_SOURCE
mem, reg
9 (13) + EA 2-4
MOV MEM_DEST,BX
reg, mem
8 (12) + EA 2-4 MOV BX,MEM_SOURCE
reg, imm
4
2-3
MOV BX,0F6CDh
mem, imm
10 (14) + EA 3-6
MOV MASK,0F6CDh
seg-reg, reg16
2
2
MOV DS,BX
seg-reg, mem16 8 (12) + EA 2-4 MOV DS,SEGMENT_VAL
reg16, seg-reg
2
2
MOV BP,SS
mem, seg-reg 9 (13) + EA 2-4
MOV CODE_VAR,CS
89
Pseudo-Istruzioni
Le Pseudo-Istruzioni sono comandi per lassemblatore. Non vengono tradotte in istruzioni macchina, ma sono interpretate come operazioni che lassemblatore deve compiere al momento dellassemblaggio.
Vi sono circa 60 Pseudo-Istruzioni, ma verranno sommariamente
analizzate solo quelle di uso comune, utilizzando come riferimento
un programma dimostrativo.
A.Broggi
90
LE FUNZIONI MS-DOS
Il Sistema Operativo MS-DOS offre al programmatore assembly
un insieme di funzioni che permettono di eseguire le pi comuni operazioni di gestione del sistema, permettendo al programmatore di
trascurare i dettagli relativi allimplementazione a basso livello delle
operazioni richieste. Ad esempio:
+
+
Inoltre, per garantire la portabilit dei programmi su tutte le macchine dotate di MS-DOS prescindendo dallhardware usato, ogni costruttore di hardware fornisce uno strato di software di interfaccia
hw-sw. Questo detto BIOS (Basic Input Output System) e permette
la gestione a basso livello di:
Livelli superiori
Applicazioni Assembly
DOS
BIOS
Hardware
91
A.Broggi
92
R"P
P ]
?3gI ]f
?3gI ] ?
t x u.'
t ' w V
t< %bn'u.& K
t - 1\69b%p
` / <
p
Y/ <
p @ - 45. - 4
p
&1
-
93
A.Broggi
94
Il processore 8008
+
Il processore 8080
+
Il processore 8085
+
Il processore 8086
+
Il processore 8088
+
Il processore 80286
+
Il processore 80386
+
Il processore 80486
+
Il processore Pentium
La tecnologia MMX
95
Il processore 8008
+
A.Broggi
96
Il processore 8080
+
97
Il processore 8085
+
A.Broggi
98
Il processore 8086
+
processore a 16 bit;
+
99
Il processore 8088
+
l8088 stato affiancato all8086 perch rende possibile limpiego di periferici ad 8 bit.
nel 1981 IBM include l8088 nel proprio personal computer.
A.Broggi
100
Il processore 80286
+
linstruction set praticamente identico a quello dell8086 a meno di poche istruzioni per lutilizzo dei rimanenti 15 M byte di
memoria;
+
101
Il processore 80386
+
un processore a 32 bit (sia per il bus dei dati sia per laccesso
alla memoria);
+
A.Broggi
102
Il processore 80486
+
103
Il processore Pentium
+
A.Broggi
104
La tecnologia MMX
+
con un piccolo aumento dellarea del processore, vengono implementate numerose nuove funzioni (aritmetica a saturazione);
+
105
106
A.Broggi
CREAZIONE DI UN PROGRAMMA
ASSEMBLY
Il processo di creazione di un programma Assembly passa attraverso le seguenti fasi:
+
scrittura, tramite un normale EDITOR, di uno o pi file di caratteri ASCII con estensione .ASM contenenti il programma
sorgente.
assemblaggio, tramite un ASSEMBLATORE, dei singoli file sorgente, e generazione di altrettanti file oggetto, con estensione
.OBJ.
107
?3@B@B?q
N X K ,_Y 1
` K
?0@B@B?B
P ]>]
?0@B@B?B
?3@B@q?B K0= V
ah, / Kh? ,
K
P
]]
`
Esempio: file 2
G = V @ Z
?0@c@q?B K3F= V
V A
?q@c@B?B IL?0G
CD/AE
K ? ,
?0@B@B?B K5A= V
a#, / h
?c@B@q?B IL?0G
C/cE
A.Broggi
108
LAssemblatore
LAssemblatore trasforma i file di caratteri contenenti il programma sorgente (.ASM) in altrettanti file oggetto (.OBJ) contenenti il
codice in linguaggio macchina.
Il processo di assemblaggio viene compiuto in due passi:
109
Il Linker
Il Linker combina i moduli oggetto e produce un unico file eseguibile (.EXE); in particolare:
+
+
Nota: il passo di Linking deve essere effettuato anche se il programma composto da un solo modulo oggetto.
A.Broggi
110
Il Debugger
Il Debugger un ambiente di verifica e messa a punto dei programmi Assembly. Esso permette di:
+
111
Struttura e Documentazione
di un Programma Assembly
Tipicamente un programma Assembly formato da:
+
Al fine della documentazione delle procedure, esse sono suddivisibili nelle seguenti classi:
+
+
A.Broggi
112
t :::::::::::
t N
%%4w6 - )&p&n'99 -j - 4>Q j %b
b j .9b: -
]%
t N c
? @c? C V =#@ Y J)k j %%p j j 'u.u - ? ,
t E c
? @ Y ?cK Y,_Y J)k j .nf%9 -j - 4.
jl- )'{9>%)) - )
- u.'
t
?3gP L9 -j - wy)'
t
?3gFR L
- - . j & -
t :::::::::::
113
A.Broggi
114
APPENDICE A:
Programma di Esempio
= Y = ,_V
V 9b.
& - u4>1 - )
%) - V )
` < V3a
N ? aYZ ?
, x
1 @
g3=
= Y= / , /
Y <w=#@ XFUY / ZBY
1/ `FY 1 V r =#?F<w= /
K YZ r C V <<
`5V 1 r C V <<
= V @ C YZAV
` < V3a
< 0
V a C i
V Z = N ?A@B? N X K ,oY 1 p ` ?B=q? p
]%]
VMWAX
] ?
VMWFX
] `
V\WX
]%
VMWAX
p15/ @c< / 41 ? , 1q/ , ?A= / @ YV_,_V =#=q@ / ZBY 1 Y p
` K
1 @}I gA=FIgA=FI}gc=FI}gA=FIgA=I 1 @I pNi j %y - 9 p
` K
` K
<>=#? 1hC
<>=#? 1hC
1 < V3a
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
x2?A@
N @ $
/ 1
N X <wg
` <
? GI ]]
0
CD/cE
?HG
N X <wg
t Y b9 bu%m4 - ) - 9
- b < V CN @ V
t - )Q&6
'v4>%Q> -k
j j
t
ub -
4
115
/3% - &n
t :::::::::::t
t
N_bz
f4w - 4Qw'u. - )&u%u - u%
t
N @ /s1
Z3V ?A@
? GI ` < V3a
0
CD/cE
CD/cE
` <I}?cG
CD/cE
CD/cE
Y[Z =
?3gsI ]]
? , I] e
P ]
CD/cE
1 ? ,o,
G I ] ewP
t Yj
z9 - - 7 ` g ;
)'6 - 7 `F, ;
` J
< N3/ <w=q?sr 1 X @A< / @ V
t Cny)l
9by%)&) - 99
%%)' -
CD/cE
1 ? ,o,
7` < ` G ;
t Yj z9 - - 7 ` g ;
)'6 - 7 `F, ;
CD/cE
` GJI ]]
< 3
t Cny)l
9by%)&) - 99
%%)' 1 ? ,o,
N / <w=q?sr 1 X @A< / @ V
@ V =
t @ ' - )) - bz
.4w -
-jk- w
Y[ZcYbUY ? ,oYUU ? 2
U Y / ZAV
VoZA` N
t :::::::::::t
t
Nz
.4 - %9 -j - ) j f99 - 'w&u% - )&
t
N @ /1
Z0V ?A@
t
t
A.Broggi
116
N @ /CON =
CD/cE
` GJI / x|x< V = Y <=#@
X UY / ZcY t <
%)&y) - 9 b - 7 ` < ` G ;
< =q? CN ?sr<w=#@ Y ZFa ?
t ) - 9 -j -
1 ? ,o,
@ V =
t @ ' - )) -
bz
.4w -
-jk- w
V_Zc` N
t :::::::::::t
t
N_bz
f4w - %9 -j - > j v jQ- v& -
t
t
t
N @ /1
Z0V ?A@
CD/cE
` GJI / x|x< V = K YZ r C V <<t<
%%)') - 9& - 7 ` < ` G ;
<=q? CN ?sr<w=#@ YZFa ?
t ) - 9 -j -
1 ? ,o,
CD/cE
`5, I 1#/ `FY 1 V r}=#?F<= /A t 1 -
- )Q
z4w
{4".)k - 9
t 1i - 4%Q&9
CD/cE
` gI ]
G / @
? , I? ,
t ? u%u. - )k.9bb ? ,
<"g ,
t< , &
% - < & 9 `5, I ] P
? ` 1
? , I}? ,
t Y ? , 9Qy)D1 ?A@B@h
<=q? CN ?sr ZAX C V @ /
t < -j - ) -
&[ - ' - 1 ? ,o,
t ` f
j - )l
b - 4%)m
)
`5V 1
` g
t< %pL]% - 8p - ) - n")' 1 Y 1 , / r}K YZ ?c@ Y /
T.ZAU
@ V =
t @ ' - )) - bz
.4w -
-jk- w
V_Zc` N
t :::::::::::t
t
N_bz
f4w - %9 -j - > j v jQ- 4>f
jl- )'
t
N @ /1
CD/cE
1 ? ,o,
CD/cE
G / @
CD/cE
Y[`AY E
CD/cE
1MCON
t
t
ZiV ?A@
` GJI / x|x< V = `5V 1 r C V <<t<
)y) - 9[& - 7 ` < ` G ;
<=q? CN ?sr<w=#@ YZFa ?
t ) - 9 -j -
? , I 1q/ `AY 1 V r =#?F<w= /c t 1 -
- )Q
z4w
4>%)l - 9
?3gsI}?Ag
t ? u%u% - )k% 9 ?0g
K , I] ?
t < - )l4'n 4w47 P ] ` .
jl- )'*;
K ,
t ` n^ 9b& - %
t< - )&n - &9)& - Q ` G %4
` GJI?cG
? , I] ?
t 13m9 -
)y
.w' - -z
`5XAV r 1 Y x|@ V
117
t < y
m9 I 9 - )' -- n - w
T K
`5XAV r 1 Y x|@ V
G / @
?3gsI}?Ag
t ? u%u% - )k% 9 ?0g
K ,
t ` n^ 9b& - %
Y[`AY E
t < - )n - )l9b)& - `5,
CD/cE
%4>
`5, I}?Ag
<=q? CN ?sr ZAX C V @ /
t < -j - )y
.w& - - 9y
1 ? ,o,
.
.99 -
? , I `F,
t ` f
&
CD/cE
<>=q? CON ?sr ZAX C V @ /
t < -j - )y4".
%&
1 ? ,_,
? , I` g
t X & - p
CD/cE
<=q? CN ?sr ZAX C V @ /
t < -j - )& - p
1 ? ,o,
@ V =
t @ ' - )) - bz
.4w -
-jk- w
V_ZA` N
t :::::::::::t
t
N_bz
f4w - %4% j - 9y.
%p - )' t
% - u%&
tA@ 3
< =#@ YX = Y ,YbU_U ?c= Y ?0GJI ` G
V aFY
t 1/ `FY 1 Y`3Y @ Y = / @ Z /
t
[ 8p - )& - b. - u%&
U .) - ]
t
U .) - P [ 9
m4 - )Q> -jkjkt :::::::::::t
= V <w=Ar x YZ ? ,_V
= V <w=Ar x YZ ? ,_V
N @ /$1
CD/cE
1 ? ,o,
1 ? ,o,
1MCON
@ V =
V_ZA` N
t
t
t
Z V ?c@
3
` GJI / x|x< V = = V @ C YZcV t<
%)&&) - 9' - 7 ` < ` G ;
<=q? CN ?sr<w=#@ YZFa ?
t ) - 9 -j -
t , .{4 - - 9'. - 9%u -
,V =#= X @q?sr< Z
? , I p8p
t Cz4w'
- ) x , ? a p U p
t @ ' - )) - bz
.4w -
-jk- w
t">>t
t
*t
Nz
.44Q - 99)n%)&)&4k. -
%
t">>t
t :::::::::::t
t
Nz
.4w - .9 -j - y j %v4 - ]
-
t
t
t
t
A.Broggi
118
<>=#? CON ?sr ZBX C V @ /
? F
` `
CD/cE
CD/cE
CD/cE
Y[Z =
@ V =
N @ $
/ 1
Z3V ?A@
? , I p}]p
?3gsI ] ?
KMgI N ? a$YZ ?
1 GJI ]]] P
P ]
V_ZA` N
t ,-
- 9b4 -
Q - b'pQp ]^p
t < .n^u%& K Y / < p 1 - %p
t N - & -- b&n t < ->j - 9)v
- - b%b
t @ '
- )) -
bz
.4w -
t :::::::::::t
t
Nz
.4w - .)
.4 - - 9% - v4>.l - 9p < pJp Z p
t
&b - 9)'v4 - n^.)( - ) j %v>4%m4"6 - 9
-jk- w
t
t
tA@ 3
V aFY <=#@ YX = Y,YbU_U ?c= Y ?0G
t 1/ `FY 1 Y`3Y @ Y = / @ Z /J ? , )l
b4&
% ?5< 1 YY )
b
t :::::::::::t
= = X @q?sr < Z
,V #
/ E ?$r ,_V =#= X @B?
Z X A
3
N @
/ 1
ZiV ?A@
?0gI ]^
t< .n&u% ` / < p @ - 4h.^ - 41 -
C/cE
R"P
t ' w V
p
Y[Z =
? , I}R ]
t 1in%b j &9
%)'
/ @
? , I p8p
t< ) - 9v> j wpQp Z p9b
1MCON
x YZcV r ,_V =#= X @q?
t 4 - )&) - >
%.4w T*U
? , I p}9p
t < >pQp < p I )
1MCON
t - )&
T.ZAU
Z0X /AE ?$r ,oV =q= X @B?
@ V =
t @ - )) - >z
.4 -
-"jl-
VZA` N
t :::::::::::t
t
N_bz
f4w - %9z9 - y)Q
9b
t
CD/cE
CD/cE
Y[Z =
@ V =
? @
N @ /$1
Z V A
3
KMgI N ? a$Y Z ?
?3gsI ] R
P ]
t
t
t
t
t
119
V_ZA` N
t :::::::::::t
t
N_bz
f4w - %)> - 9b j j u%u - )1/ `AY 1 V r =#?F<w= /
t
N @ /$1
? @
Z3V A
?3gsI ] P
t < %n^u%& ` / < p @ - 45. - 41 - %p
CD/cE
R"P
t C j &u%u - )l
- - %b - )) - )>
-
Y[Z =
15/ `AY 1 V r=#?F<w= /c I? ,
t u'1/ `FY 1 V r}=q?F<w= /L
CD/cE
@ V =
t @ ' - )) - bz
.4w -
-jk- w
VZA` N
t :::::::::::t
t
Nz
.4 - %9 -j - - 9'6 t
C /cE
D
Y[Z =
@ V =
N @ /1
Z3V ?A@
?3gsI ]
R"P
V_Zc` N
V ZB` <
o
C ? YZ
VZA`
t
` < ` G
t < %n^u%& ` / < p NH' < &p t ) t 9[ - pJw - - 4 -v` < ` G
t @ ' - )) - bz
.4w -
-jk- w
A.Broggi
120
APPENDICE B:
Esempio di Documentazione
dellIstruzione AND
? Zc`
? Zc`
,
- ) ? ZA`
x ) - z9/
]
`
Y =< U ? N1
y ]
? ZA`
9
? c
Z ` %b j 9 - &)>&
- ) ? ZA` . - &%b9% - 49 - 4
9.9 yf9b)'4.9& - &8 = y%. - 49 $
j - y!H49%^.9
? ZA` Y 9b6
'
<
` f9' -
]
]
P
]
P
]
P
P
? Zc` 9S9 -
'( .9b)'
y
%. - 649 - P
/0% - 49
% 9% I
% 9% I
-
j ) % 9% I
j j b I
j j b I
1 )&z
w9
M
^7!h46;
, &
@ .9)&
]
]
]
P
P
bbf9b64w&S9
= - 69[.9
9
~
jdj %4w -
~
K f9
V -j )&
? A
Z ` ? , I `,
e
~
? ZA` 1 GJI ] x|x
RSe
? ZA` ?0GJI ] P ]]]] P ]
R(:~
? ZA` 1 GJI C ?F<
R(~
? ZA` E ? ,_XAV I}K ,
e
:
? ZA` <>=#?A= X <8I ] P
APPENDICE C:
Instruction Set della CPU INTEL 8086
?3?c?
?3? `
?3? C
?3?A<
? ` 1
? `F`
? Zc`
1 ? ,o,
1 K
1 , 1
1 ,o`
1 ,_Y
1MC1
1MCON
1MCON <
1MCON <wK
1MCON <
1 {`
` ?A?
` ?F<
`5V 1
`3Y E
V < 1
g , =
Y[`AY E
Y C XA,
Y[Z
Y[Z 1
Y[Z =
Y[Z = /
Y@ V =
T ?
T ? V
121
A.Broggi
122
T K
T K V
T 1
T 1 G U
T.V
Tfa
Tfa$V
T.,
T.,\V
T CN
T.Z ?
T.Z ? V
T.Z K
T.Z K V
T.Z 1
T.ZAV
T.ZFa
T.ZFa$V
T.ZA,
T.ZA,_V
T.Z /
T.Z N
T.Z <
T.ZU
T /
T N
T N V
T N5/
T <
T*U
, ?AgAx
,` <
,V ?
,V <
, /s15
, / ` <
, / ` <wK
, / ` <
, /s/AN
, /s/AN V
, /s/AN ZAV
, /s/AN ZU
, /s/AN U
CD/FE
T j Y K )!
T j Y K .)'! % V_ - )
T j Y 1 -
T j 1 G @ %&9b. U %
T j Y V_ - )
T j Y a b - %
T j Y a - b.% Vo - )
T j Y , .99
T j Y , %99 V_ - )
T j X
4'& - )&)&
T j Y Z > ? n
T j Y Z ? n% V_ - )
T j Y Z K %)!
T j Y Z K .)&! V_ - )
T j Y Z 1 -
T j Y Z " V_ - )
T j Y Z a -
T j Y Z > a b - .% V_ - )
T j Y Z , .99
T j Y Z /B , f9b9
V - )
T j Y Z /3n.[)!
T j Y Z vN - &
T j Y Z < &
T j Y Z U .
T j Y /3n%[)&!
T j Y N - &
T j Y N - V n.
T j Y N - b&/344
T j Y <
T j Y U .b
, - 4 @ 9bb. ?0g j
, - 4N8w% X 9& ` <
, - 4 V [[f
'n ? 44.99
, - 4Nw% X 9 V <
,
% K 9
, - 4 < b7 K S4;
, - 4 < K ^
, - 4 < & 4
,
1\
)' V_ - )
,
)& Z Vo - )
,
&) Z U %
,
)' U %
,
Cln7 K y% 4;
123
A.Broggi
124
APPENDICE D:
Funzioni DOS (INT 21h)
]%]
] P
] R
] e
] ~
]
]
]f
]
]%
] ?
] K
]f1
] `
] V
] x
P ]
P%P
PSR
Pe
P~
P
P
P
P
P
P?
PK
P 1
P `
P V
Px
R ]
R"P
7]z;
7P ;
7R ;
7e ;
7~ ;
7 ;
7 ;
7;
7 ;
7z;
7 P ]z;
7 PP ;
7 P*R ;
7 Pfe ;
7 P.~ ;
7P ;
7 Pf ;
7 P ;
7 Pf ;
7 P z;
7 R ]z;
7 RP ;
7 RR ;
7 Re ;
7 R>~ ;
7R ;
7 R ;
7 R >;
7 R ;
7 R z;
7 e ]z;
7 ewP ;
7 ezR ;
7 ee ;
x 1 K 9
> x 9C - S
& x )' I !|&
< -
x 1 K 9
> Z C - S
& x ') I !H'
` %)'% x &)& I X 9& x 1 K 9
< % - ) @ - 4 I X 9& x 1 K 9
< % - ) & I X 9b x 1 K 9
1\ - b x &)& I z9b x 1 K 9
@ % -j x ') I z9 x 1 K 9
@ .9b.n^f4
a 1\.w ` 9b
<
` 9b = - 9% ? 44.9b97 ` =#? ;
a % x2?c= Y w[ jk- &1\6b%w ` n
a
x?A= Y w jl- < f
&[&.4 ` &n
@ .9%n.4
@ .9.nf4
@ .9%n^f4
@ .9b.n^f4
@ - 4w j @ - 4 I X 9b x 1 K 9
7 e~ ;
7e ;
7 e ;
7 e ;
7 e ;
7 e z;
7 ~ ]z;
7 ~P ;
7 ~^R ;
7 ~ze ;
7 ~~ ;
7~ ;
7 ~z ;
7 ~ ;
7 ~z ;
7 ~ z;
7 ]z;
7 P ;
7 R ;
7 e ;
7 ~ ;
7 ;
7 ;
7 ;
7 ;
7 ;
7 ]z;
7 wP ;
7 zR ;
7 e ;
7 ~ ;
7 ;
7 ;
7 ;
7 > ]z;
7 >bP ;
7 >R ;
7 >:e ;
7 >~ ;
7 > ;
7 >: ;
7 > ;
7 >: ;
7 > z;
a ` 9b = - 9 ? 464wb.997 ` =q? ;
a ` / < E3%9 Z j %
= . j & - b - 4 < - @ .9b4w.w
@ .9b.n^f4
a % < %1o) K - < - 69
@ .9b.n^f4
a Y w%b6wE3%
a ` 9b x % < -
@ .9b.n^f4
a % < %1\w ` %.4w.w Y w jl- &
1\ - b ` &.
7&C `FY @ ;
@ j n^ ` .
(7 @ C `FY @ ;
1 - ` .
(71 g `AY @ ;
1\ - - x )'v71 @ V ?B= ;
/0% - x ')
1\)z9b - x &)& g - 64w)
@ - 4 j x )&y% ` .n
I X 9b& - g - 4)'
'y: x &)&
` n&
% I X 9' - g - 64w)&
` %)'% x &)&v7 XcZA,YZ ;
CQn^ x &)&{N8w%{7 , < ViV $;
a % < % x ') ? b&w.971 g C/ ` ;
Y /s1 = , a ` %n
Y w[ jl- '
Y /s1 = , < ` .n^
Y w[ jk-
Y /s1 = , @ - 4 j 1 - -
% ` %n&
%
Y /s1 = , &b1 - -
(% ` .n
Y /s1 = , @ - 4 j K )&z
% ` .n^
Y /s1 = , &b K )z
` %n
Y /s1 = , a Y 6w < - 9
Y /s1 = , a /5ww < - 9
Y /s1 = , Y 9 ` .n
@ j n - )'
Y /s1 = , Y 9 ,
- ) ` %n
% @ j b
125
A.Broggi
126
~%~
%~ ~
%~ ~
%~ ~
%~ ~
] ?
] K
] `
] V
] x
~
~.
~
~.
~
~.?
~.K
~ 1
~ `
~ V
~.x
]
P
R
e
~
%
?
K
1
`
V ]]
V ] R
V ] e
x ] R
x ] e
x ] ~
]
>P
.R
7 >bP ]z;
7 >bPP ;
7 >Pfe ;
7 >P.~ ;
7 "P ;
7 z;
7>]z;
7 P ;
7 R ;
7 e ;
7 ~ ;
7 ;
7 ;
7;
7 ;
7>z;
7 ]z;
7 wP ;
7 zR ;
7 e ;
7 ~ ;
7 ;
7 ;
7 ;
7 z;
7]z;
7 P ;
7& R ;
7' e ;
7& ~ ]z;
7& ~R ;
7& ~e ;
7 R ;
7 e ;
7 :~ ;
7 ;
7^;
7 ;
Y /1 = , Y 9 g - 64w)& @ j b
/ 1 = , 1 - < - @
1\w
Ys
Y /$1 = , a %.&
Y /1 = , @ f9
Y /1 = , a % , &
- ) ` n
Y /1 = , <
,
- ) ` 'n
` )&
- b - x &)& g - 64w)7 `X N0;
x
% g - 4w) ` )
- '7 x / @ 1 `FX N3;
a 1\.w ` %
? ))
- Cl j
x . ? ))'z
- .4Cl j b
CQ4'[Cl j ? )&)&z
- '7 < V =qK , /$15$;
, - 4 V .
%w - N_ -j 7 V G V 1h;
= % j & - - N_z
.99y7 V G Y = ;
a @ b1oz4y - < z
f9b97 ? Y = ;
x 4 x 9C - S
& x ')v7 x YZA` x Y @c<w= ;
x '64 Z C - S
& x ')7 x YZA` Z3V Gc= ;
@ .9b.n^f4
@ .9b.n^f4
@ .9b.n^f4
@ .9b.n^f4
a E V @ Y x\ <
@ .9b.n^f4
@ % -j - x )'
a % < % - x &)&p}9 `5- - 4 = j
a V ^%64w.4 V b Y w> jl- &
1\ - X x &)&
1\ - Z .! x ')
, z
X )&z
x &)& ?
%
%99
@ .9%n.4
a %C -
Z3->j
< %N8'b. <
a %Nbw% <
a % @ .4&bf
' , 9 V w
@ .4w&.
` %n^
1 -
%%) @ f4w&.
@ .9b.n^f4
@ .9b.n^f4
a N < N ? 44b.99
127
APPENDICE E:
Funzioni BIOS
Y[Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
[Y Z
]%]
] P
] R
] e
] ~
]
]
]%
P ]
P%P
PSR
Pe
P~
P
P
P
P
P
P?
PK
P 1
~.?
]
7]z;
7P ;
7R ;
7e ;
7~ ;
7 ;
7 ;
7z;
7 Pf ;
7 P ;
7 Pf ;
7 P z;
7 R ]z;
7 RP ;
7 RR ;
7 Re ;
7 R>~ ;
7R ;
7 R ;
7 R ;
7 R ;
7 ~ ;
7 PP*R ;
` & n4w]
< &) < .
Z C - 9b - )& Y b.w7 Z C Y ;
K b - &w
/0nb)&!
N' <
.%
< 9 j = j %
5.^ - 4
E3 4w% - 64 <
%% < .n^
%9
@ - 4 Vo j % , 9
@ %bCl j < 'u.
` 9b Y / < n
.9 IJx )& - 64 g - 4
< % - ) Y / < .n^
.9713 jj LNbS9;
1 - 9b9 - 4 V ^%64w.4 < %n
.9
#% - 4 Y / < %n
.9
N_&w% Y / < .n^
.9
K|?F< Y 1 , - 4w. < .bn
K 9b - , - 4w% < %n
%
< 9 j = j . - 41\)&z
< n&
f9
h%^ - 4 K b -
X 9. = j % =
X 9b. ? ) - j
@ - ) = j {1M)&z
` &9bw9
A.Broggi
128
APPENDICE F:
Pseudo-Istruzioni
del MACRO ASSEMBLER
tt
P%
R"
R"
R"
]
]
? Zc`
?5<< X C V
?3=
K\F= V
K\F= V
1/FCC V0Z =
1/FCC/ Z
1 @ V x
` K
`5`
`#W
, ' . - ) 1 - -
./0% - >
, z
- &1\w%/0% - 4
V wb.99'/0% -
< 9'w/0% - b
Cl)')&
- &
? 44w&&
X - N_)&9
< w -
&% X - bCl69
<
x &%) 4 ZA-j {/3. -
` n^ 9
< % j .w /An%4w/0% - b
C -
%1\ jkj %w
, &b. - ) = /3% -
Y 64w/0% - >
1\ - ? 9b)w < j )
V - )& ] P. Y 69
(9
V - )' @ - )mCQ4 ] R Y 9
b9
V - )Nf
(.4Clz4w ] R Y 9bb
(&69
V - )& ] R> Y 69
(9
V - )& ] Y 9bb6
'9
V - )& ] Y 9bb6
'9
K !# 9b ,
- ) ? ZA`
? 99bz
% - < % j %w!&
< % j %w @ %9%
` [ ? 9b)&w < % j w
? )' < % j .w% ? K z ? 44w.99
`5- - = > P ^
V w%Cl)& , {1\ jkj %
` %[&/0n%) - 6& < . j %wS9
V - )&{1Mbz99 @ %[%.
, 9'z9
` [ K ^
` ` )%!#4
`
[ W - 4!#4
N - -j %
? 99 j )/0
% V_-
1 - -
%
129
A.Broggi
130
? K Vi,
, A
, ? ,_,
,V
,V0ZFa =qg
, x 1#/ ZA`
,8Y <w=
, /s1 ? ,
, /
, =
C ? 1 @ /
C ?F<
C V C/ @#
CD/ `
Z ? C V
Z3V
Z3V ?c@
Z / =
/ x|x< V =
/ @
/ @ a
/ X =
N ? a$V
N ? a$V
N ?A@B?
N @ /s1
N =q@
N X K ,_Y 1
N X K ,_Y 1
N X @ a$V
W3 / @ `
@#? `AY G
@ V 1#/ @ `
@ V N =
<? ,o,
< V0a
< V0a C ViZ =
<x 1q/ Zc`
<>g ,
<>g / @B=
<>gA@
< YbU2V
<>=#? 1h
<>=#@ X 1
< X Kh=#= ,
131
A.Broggi
132
APPENDICE G:
Tracce per la Risoluzione
di Alcune Prove Scritte
In questa Appendice sono riportati alcuni segmenti di codice relativi a problemi assegnati come prove scritte per lesame di Calcolatori Elettronici.
Tali risoluzioni sono da considerare solo a titolo di esempio, in
quanto nella maggioranza dei casi lenfasi stata posta sulla modularit e quindi chiarezza del codice, piuttosto che sullottimizzazione
degli algoritmi utilizzati.
133
CALCOLATORI ELETTRONICI
Prova scritta
6 novembre 1989
<>=#? 1hC
N_bn -
N ?A@B?
<
% -
4>.)
N X K ,oY 1
n^ j
p ` ?B=q? p
<>=#? 1hC
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
1 < V3a
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
t
ub -
4
A.Broggi
134
C ? YZ
N @ $
/ 1
N X <wg
CD/cE
N X <wg
1 ? ,o,
1 ? ,o,
CD/cE
CD/cE
1 ? ,o,
CD/cE
1 ? ,o,
CD/cE
CD/cE
1 ? ,o,
1 ? ,o,
C ? YZ
1 ? , 1#/ , ?$r}K Y =
1 Y 1 , /L
1 ? , 1#/ , ?$r}K Y =
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
CD/cE
1 ? ,o,
@ V =
V_ZA` N
t Y 9bbu%m4 - ) - 9
- b < V CN @ V
` <
?0GI ]]
t - )Q&6
'v4>%Q> -jkj
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q?
U Y/ A
Z V
` gI
`5, I '
< N3/ <w=q?sr 1 X A
@ < / @ V
t NH9&u.')Q
99.
%4w
t n - )&Q.9wQ ` g `5,
?0GI , /$1 ? UY / ZAV
t 1 - &
- )kn - )'{4 - 9 -j -
<=q? CN ?sr g V G
t< -j - ?iG jk- 9 - 4wf
>
` gI
`5, I '
< N3/ <w=q?sr 1 X @A< / @ V
t @ & - 9
.
.99'n t NHy)k j %v4>Q.9b%
1 ? , 1#/ , ?sr}K Y =
t ?iG .)Q%&9b K\G
?0GILKMG
t 1 - &
- )kn - )&b{4 - 9 -j -
<=q? CN ?sr `FV 1
t < -j - ?0G jl- v4>f
jl- )'
t @ ' - ) < 9 jl- /3% - &n
N @ /s1
Z0V ?A@
CD/cE
1 GJIlP
G / @
K\GJILKMG
<? ,
? , IQP
@ 1 ,
?3g$IQP
? ` 1
KMGI ]
1 Y1 , /
, //N
@ V =
V_ZA` N
N @ /s1
@ V =
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
VoZA` N
N @ V < ViZ =q? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
x2?A@
@ V =
N @ /$1
V_ZA` N
Z3V ?A@
Z0V ?A@
t 1iw -
t ? u.u%% - )Q
w - 4>Q'
t @ -v- b - n%9b)D1 - b
t P '4" ?0G
t< y)m1 - bp P%I
j .w -
K\G
1 < V3a
@ V =
@ V =
@ V =
N @ /$1
Z3V ?A@
V_ZA` N
N @ /$1
Z3V ?A@
VoZB` N
N @ /1
V_ZA` N
VoZB` <
C ? YZ
VZA`
ZiV ?A@
135
A.Broggi
136
CALCOLATORI ELETTRONICI
Prova scritta
24 settembre 1990
Scrivere un programma assembler che accetti da tastiera un carattere e visualizzi sullo schermo:
il carattere se stampabile,
il codice ASCII corrispondente.
= Y = ,\V
` < 3
V a
` < V3a
<>=#? 1hC
N_bn N ?A@B?
<
% -
4>.) R ~
N X K ,oY 1
9b j b
P ]
p ` ?B=q? p
<>=#? 1hC
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
1 < V3a
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
t
ub -
4
C ? YZ
C ? YZ
<>=#? CON ?sr `FV 1
`5XAV r 1 Y x|@ V
N @ $
/ 1
N X <wg
CD/cE
N X <wg
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? ,o,
@ V =
V_ZA` N
x2?A@
tY
` <
?0GI ]]
t
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q? UY / ZAV
,ViaaFY r 1 gA?A@
<=q? CN ?sr 1 gc?A@
<=q? CN ?sr< N ? U2Y /
<=q? CN ?sr `FV 1
t@
N @ /1
ZiV ?A@
G / @
?3gsI}?Ag
K , I] ?
CD/cE
K ,
Y[`AY E
CD/cE
` GJI?cG
? , I] ?
1MCON
T K
`5XAV r 1 Y x|@ V
G / @
?3gsI}?Ag
K ,
Y[`AY E
CD/cE
`5, I}?Ag
? `F`
? , I p ]p
<=q? CN ?sr 1 c
g ?A@
1 ? ,o,
? , I `F,
CD/cE
? ``
? , I p ]^p
?
<
q
=
? CN ?sr 1 c
g ?A@
1 ,o,
? , I` g
CD/cE
? `F`
? , I p ]p
<=q? CN ?sr 1 c
g ?A@
1 ? ,o,
@ V =
V_ZA` N
N @ /s1
Z3V ?c@
?HG
N X <wg
?3gsI ] V
CD/cE
K , I]
CD/cE
P ]
Y[Z =
?0G
No/FN
@ V =
t`
t`
t?
t?
t@
137
9bbu%m4 - ) - 9
- b < V CN @ V
- )Q&6
'v4>%Q> -k
j j
t , >
- - .y)y
t< ->j - )l
w%v4 ? ,
t< ->j - 9 - u%
t < -j - ? , 4>.
% jl- )
' - ) < 9 jl- /3% - &n
? ,
'1
t @ 9& - 0
? G
t @ ' - )) -
bz
.4w -
- %p
-jk- w
A.Broggi
138
<>=#? CON ?sr 1 gA?A@
,V3a$aY r 1 gA?c@
,V3a$aY r 1 gA?c@
<>=#? CON ?sr< N ? UY /
1 < V3a
VoZA` N
? @
N @ /1
Z0V A
?3gsI ]^
C /cE
D
R"P
Y[Z =
@ V =
V_Zc` N
N @ /s1
Z V ?c@
3
<
w
g
H
?
G
N X
? , I
CD/cE
p p
<=q? CN ?sr 1 gc?A@
1 ? ,o,
?0G
No/FN
@ V =
VoZA` N
N @ /s1
Z3V ?A@
@ V =
VoZA` N
@ V =
N @ /$1
V_ZA` N
V ZB` <
o
C ? YZ
VZA`
Z0V ?A@
139
CALCOLATORI ELETTRONICI
Prova scritta
22 ottobre 1990
= Y = ,\V
` < 3
V a
` < V3a
<>=#? 1hC
N_bn N ?A@B?
<
% -
4>.) R%R
N X K ,oY 1
P ]
p ` ?B=q? p
<>=#? 1hC
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
1 < V3a
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
t
ub -
4
A.Broggi
140
C ? YZ
C ? YZ
<>=#? CON ?sr K YZ
1 Y 1 , / rK YZ ?B@ Y /J
N @ $
/ 1
N X <wg
CD/cE
N X <wg
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? ,o,
C XA,
1 ? ,o,
@ V =
V_ZA` N
x2?A@
` <
?0GI ]]
?HG
Y[ZcYbU2Y ? ,YbU_U
N @ V < VHZ =q?
,ViaaFY r ZAX C
<=q? CN ?sr K
? ,
<=q? CN ?sr K
t Y b9 bu%m4 - ) - 9
- b < V CN @ V
t - )Q&6
'v4>%Q> -jkj
t
?
U Y / ZBV
U Y / ZAV
N @ /1
Z0V ?A@
t 1i - b4Q&9
CD/cE
1 GJI ]
G / @
?3gI?Ag
t ? u%u. - )k. 9 ?0g
<"g ,
? , I] P
t < ' ,
- < '9bb
? ` 1
?3gI?Ag
t Y ?0g 9Q)Q1 ?A@B@q
<=q? CN ?sr 1 Y x|@B?
t < ->j - ) -
'[ - > - - 0
? g
1 ? ,o,
? @ Y/
t Y . - & -
{1 G$ ]
1 Y 1 , / rK YZ B
, //N
@ V =
t @ ' - )) - bz
.4w -
-jk- w
V_Zc` N
N @ /s1
Z3V ?A@
@ V =
VoZA` N
@ V =
@ V =
N @ /$1
Z0V ?A@
V_ZA` N
N @ /s1
VoZA` N
Z3V ?c@
@ V =
N @ /s1
VoZA` N
V ZB` <
o
C ? YZ
VZA`
Z3V ?c@
141
A.Broggi
142
CALCOLATORI ELETTRONICI
Prova scritta
3 giugno 1991
<>=#? 1hC
<>=#? 1hC
1 < V3a
N_bn -
<
% -
4>.) e
&6
P P
< 0
? =q? p
V a C ViZ = N ?A@B? N X K o
, Y 1 p` B
P e
VMWAX
]
V\WX
? Gr ,_XAZAa g h
t < %u - 4"mC c
? Gr ,_XAZAa g
C B
` K
` X Nq7 ;
e
t < % u - 4> e j % b
` K
` X NB7 ;
5
t , %u.u - b jl- 9b `3
V_ZA` <
` K
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
ub -
j %b
4
C ? YZ
,V =#= X @q?srP
1 Y 1 , /L
N @ $
/ 1
N X <wg
CD/cE
N X <wg
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? o
, ,
@ V =
V_ZA` N
143
x2?A@
t Y 9bbu%m4 - ) - 9
- b < V CN @ V
` <
?0GI ]]
t - )Q&6
'v4>%Q> -jkj
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q? UY / ZAV
t , .>) - jk- 9['6 ,V =#= X @q?sr P
#
=
=
q
@
s
?
r
R
t , .>) - 9.
4 - 9& ,V
X
t 13w[b - )4>{9[&
1/ Z x|@ / Z = /
t )l&9)& - v ?0G
<=q? CN ?sr ZAX C V @ /
t < -j - )Q
wb4> ?iG
t @ ' - ) < 9 jl- /3% - &n
N @ /$1
ZiV ?A@
K GJI ]
\
CD/cE
1 ? ,_,
, V3asaV r 1 gA?c@
ZiV ?A@
,ViaaV r 1 gA?A@
< V5WAXAV0ZFU ?srR >] L
I ?
,ViaaV r 1 gA?A@
< V5WAXAV0ZFU ?srR P L
I ?
,ViaaV r 1 gA?A@
< V5WAXAV0ZFU ?srR R L
I ?
t , .
, t C j 'u.u
t , .
, t C j 'u.u
t , .
, t C j 'u.u
? ,
? ,
? ,
A.Broggi
144
1/ Z x|@ / Z = /
N @ /$1
ZiV ?A@
?0GI ]
CD/cE
CD/cE
1 GJI ,6XcZFa gsr N @
< X K
1 GJIdR
K\GJI / x|x< V = <
CD/cE
1 Y 1 , / r 1q/ Z x@ / Z = / CD/AE
` GJI / @ `
1MCON
` GsIm K0G
T.ZAU
Z / Z r XAasX ? ,Y
CD/cE
` gIm < V3WFXAViZU
1MCON
` g$Im K0G R
T.ZAU
Z / Z r XAasX ? ,Y
?0G
Y[Z 1
KMG
Z / Z rA
X a$X ? ,_Y
Y[Z 1
1 Y 1 , / r 1q/ Z x|@ /
, //N
@ V =
x @ / Z = /
1/ Z |
V_ZA` N
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
<>=#? CON ?sr ZBX C V @ /
<>=#? CON ?sr ZBX C V @ /
,V3a$a$V r 1 gA?B@
,V3a$a$V r 1 gA?B@
1 < V3a
N @ /s1
Z3V ?A@
@ V =
VoZA` N
@ V =
@ V =
@ V =
N @ /$1
Z0V ?A@
V_ZA` N
N @ /$1
Z3V ?A@
V_ZA` N
N @ /$1
V_ZA` N
V ZB` <
o
C ? YZ
VZA`
Z0V ?A@
t Z j %v4>Q
%u%
Y C ?sr<w=#@ t Z j .v4>m
- - .m4 -
w
t Z j %v4m
w[bm4 - b9b.&b
V5WXBV0ZU ?$r P
N =q@ < V3WFXAViZU ?sr}R
t 1i[w - j R .9
t< - ) - 99v> - )'
?sr}R R
t 1iww - )%u.b
t< - ) - 99v> - )'
t Y
b j %w - )k j .v4>Q
b%u.
t ? n - u - ) - 9
- 94> < V5WAXAV0ZU ?$rP
Z = / t 1i - & -
1 GF ]
145
CALCOLATORI ELETTRONICI
Prova scritta
17 luglio 1991
= Y = ,\V
` < 3
V a
` < V3a
<>=#? 1hC
<>=#? 1hC
1 < V3a
` K
N_bn N ?A@B?
<
% -
4>.) P ))
N X K ,oY 1
P P
p ` ?B=q? p
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
ub -
4
A.Broggi
146
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
x2?A@
N @ /$1
N X <wg
` <
?0GI ]]
C /cE
D
?HG
N X <wg
1 ? ,o,
Y[ZcYbU2Y ? ,YbU_U
1 ? ,o,
N @ V < VHZ =q?
?
1 ,o,
,ViaaFY r N ?A@
CD/cE
1 GJIlP
1 Y 1 , / r N @ Y Z 1 Y N ? ,_V LN X <wg
1 G
<=q? CN ?sr g
1 ? ,o,
<"? ,
? , I'P
@ 1 ,
?3g$IP
C ? YZ
,V3a$aY r N ?A@ / , ?
? ` 1
No/FN
, //N
@ V =
V_ZA` N
t Y b9 bu%m4 - ) - 9
- b < V CN @ V
t - )Q&6
'v4>%Q> -jkj
t
? UY / ZBV
UY / ZAV
t , %y) - - ) - ) -
/ , ?
t 1iw -
t < - )'n - 1 G
t< -j - )k
.wv4 ?0G
V G
t < '[ - 94> ? ,
t @ - - 94> ?0g 7)1 -
t %w - %)Q>& j 9''
? , I ]
t Y )1 - 4> ?3g &%w - ? ,
t @ '9bb - 1 G
1 G
1 Y 1 , / r N @ YZ 1 Y N ? ,_V
t @ ' - ) < 9 jl- /3% - &n
? @
N @ $
/ 1
Z3V B
= ?F<w= /
1 ? ,o,
, ViaaFY r#
? G
H
N X <wg
= ?F<w= /
1 ? ,o,
,i
V aaFY r#
KMG
No/FN
CD/cE
1 , IJ~
<"g ,
K , I 1 ,
/ @
N X <wg
1 ? ,o,
N X <wg
1 ? ,o,
No/FN
CD/cE
<"g ,
K , IL? ,
KoG
,ViaaFY r =#?F<w= /
?HG
,ViaaFY r =#?F<w= /
KMG
1 , IJ~
K , I 1 ,
/ @
No/FN
CD/cE
? , ILK ,
KMG
?3gsILK ,
?0G
,V3a$aY r N ?A@ / , ?
<>=#? CON ?sr g V G
@ V =
147
V_Zc` N
N @ /$1
< g
?HG
N X w
? ,
CD/cE
<=q?
1 ? ,o,
?0G
No/FN
?HG
N X <wg
<=q?
1 ? ,o,
?
<=q?
1 ,o,
?0G
No/FN
@ V =
VoZB` N
Z3V ?A@
V Z V
i
t @ 9& - ?0G
IL?0g
CN ?sr g V Gr ? ,
N @ /$1
Z3V ?A@
< g
?HG
t< - )n - ?0G
N X w
t N|b - ' ~ 4 ? , e.RP ]
CD/cE
1 , I~
<"gA@
? , I1 ,
t %4].k& ~
<=q? CN ?sr ZAX C V @ /
t < -j - )l j .bv ? ,
1 ? ,o,
?0G
t @ 9& - ?0G
No/FN
? ZA`
? , I ]]]] PPPP
t C - b%9)&v>& e.RP ]4 ? ,
<=q? CN ?sr ZAX C V @ /
t < -j - )l j .bv ? ,
1 ? ,o,
@ V =
t @ ' - )) - bz
.4w -
-jk- w
VoZc` N
N @ $
/ 1
Z3V ?A@
?HG
N X <wg
? `F`
? , I p ]p
? , I p p P
1MCON
1 Y x|@q?sr `V 1
T 1
? `F`
? , I p ? p p}wp P
?0gI ] V
1 Y x|@B?sr `FV 1A
C/cE
K , I]
CD/cE
P ]
Y[Z =
?0G
No/FN
@ V =
<>=#? CON ?sr ZBX C V @ /
V_ZA` N
-jk- w
A.Broggi
148
,V3a$aY r =#?F<w= /
@ ?
1 Y 1 , / r\
, V =q= X B
N @ /s1
Z0V ?A@
?3g$I ]^
t < %n&u.' ` / < p @ - 4h% - 41 -
CD/FE
R"P
t ' w V
p
Y[Z =
? , I p}]wp
t< p j '4>p ]p
1MCON
t - ))& - &)&%y)Q
- - b.
1 Y 1 , / r ,oV =q= X @B?
T 1
? , I p}wp P
t<
pL
b j 6b.9b: - p ]pJp p
1MCON
x YZcV r ,oV =q= X @B?
t - ))& - . j & - ) - )(b T 1
? , Ip? p
t< p p}wpJ p ? p
1MCON
t - ))& - &)&%y)Q
- - b.
1 Y 1 , / r ,oV =q= X @B?
T 1
? , Ipx p P
t< p js- &4>p x p
1MCON
t - )') - &)&.)k
- - b%
1 Y 1 , / r ,oV =q= X @c?
T.Z 1
x YZAV r ,_V =#= X @q?
< X K
? , I p ]p
t = )'vp ]p
? , IQP ]
t< y
p j &y - )& -
1MCON
t % j & - ) - )
1 Y x|@q?sr `V 1 Y C ? ,\V
T 1
< X K
? , I p ? p p}wp P
t ? )' j %wQ)>b - %)Q -
@ V =
1 Y x|@B?sr `FV 1 Y C ? ,oV
,V3a$aY r =#?F<w= /
V_ZA` N
<>=#? CON ?sr VHZ = V @
<>=#? CON ?sr VHZ = V @
N @ /$1
@ V =
V_ZA` N
N @ /s1
@ V =
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
VoZA` N
N @ V < ViZ =q? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
1 < V3a
@ V =
Z0V ?A@
Z3V ?A@
N @ /$1
V_ZA` N
V ZB` <
o
C ? YZ
VZA`
Z0V ?A@
149
CALCOLATORI ELETTRONICI
Prova scritta
29 luglio 1991
= Y = ,\V
N_bn -
<
% -
4>.) R ))
P P
,XAZFa gsr E ? , / @ V
V\WFX
P e
V_Z = V @
V WAX
M
P ]
,YZAV x V0VH`
V WFX
\
C V <<r YZ < V @ Y C V0Z = /
9b%by)k j % p
` K
V Z = V @$I ,Y ZAV x V0i
V ` I pY 6
A.Broggi
150
Y <w=#@ XFUY / ZBY
` K
` K
` K
` K
` K
,YZAV ?$r E X / =#?
E ? , / @ Y
Z3X C r E ? , / @ Y
` < V3a
<>=#? 1hC
<>=#? 1hC
1 < V3a
` K
` K
` K
` K
` K
V_ZA` <
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
N @ /$1
N X <wg
C /cE
D
N X <wg
1 ? ,o,
1 ? ,o,
CD/cE
1 ? ,o,
1 Y 1 , / r N @ Y Z 1 Y N ? ,_V 1 ? ,o,
x2?A@
t Y 9bbu%m4 - ) - 9
- b < V CN @ V
` <
?0GI ]]
t - )Q&6
'v4>%Q> -jkj
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q? UY / ZAV
` GJI / x|x< V = Y <w=#@ XUY / ZcY t< -j - )}9u.'
<=q? CN ?sr<w=#@ YZFa ?
t , .) - 9
%)& - 4 - - 9% ,ViaaY r}< 1 VH, =#?
t ) 96) - ? ,
? , I pP p
t< )k - 9bv>%pQp P p I
1MCON
t - )') - 9 - )' T.ZAU
Z / r YZ < V @ Y C V0Z = /
t Nbz
%.4w - 4"Q9b.b j .w
1 ? ,o,
Y[Z < V @ Y C V0Z = /
t NHb
%.4w - 4>Q%4w& -j %
1 ? ,o,
/ @ `AYZ ? C ViZ = /
CD/cE
` GJI / x|x< V = Y <w=#@ XUY / ZcY t< -j - )}9u.'
<=q? CN ?sr<w=#@ YZFa ?
1 ? ,o,
1 Y 1 , / r N @ YZ 1 Y N ? ,\V
T CON
? , I pR p
t< ) - 9v>pQp R p I
1MCON
Z / r YZ < V @ Y C i
V Z = /
ub -
4
X < 1 Y =q?
C ? YZ
,V3a$aY r< 1 V0, =q?
Z3X /AE ?$r ,_V =#= X @B?
T.ZAU
1 ? ,o,
CD/cE
1 ? ,o,
T CON
@ V =
V_ZA` N
151
t - )&)& - 9b
X < 1 Y =#?
<=q? CN ?sr ,Y <w=q?
` GJI / x|x< V = Y <w=#@ X
U Y / ZcY t< -j - )}9u.'
<=q? CN ?sr<w=#@ YZFa ?
1 Y 1 , / r N @ YZ 1 Y N ? ,\V t @ - )m
)&vb
%' - )
t @ '
- ) < & 9b jk- /0% - 'n
N @ $
/ 1
Z0V ?A@
?0gI ]
t< .n&u% ` / < p @ - 4h.^ - 41 -
C/cE
=
"
R
P
t
Y[Z
' w V
p
? , IpP p
t 1ib)) - )k - >L9yp
1MCON
@ ?
t
j .9b: - p P pJp e p I - )&)& T 1
Z0X /AE ?sr ,_V =#= X c
? , Ipe p P
t 9
I - )' j .wQ' 1MCON
@ ?
t -yZiX /FE ?sr ,oV =q= X @c?
T.Z 1
Z3X /cE ?sr ,\V =q= X B
@ V =
V_ZA` N
N @ /s1
Z V ?A@
0
K , Im ZBX C r E ? , / @ Y
K , I C ?cGr ZcX C r E ? , / @ Y t< y)l j %b4>Qn - )'Qp
x YZcV r YZ < V @ Y C ViZ = / t :b)n - I b9
9&
` GJI / x|x< V = C V <<r YZ < V @ Y C ViZ = /
<=q? CN ?sr<w=#@ YZFa ?
? , I ,XAZAa g$r E ? , / @ V
K ,
?iGJI / x|x< V = E ? , / @ Y
K\GJIL?0G
t Nw -- )Q j n - )&yn"
t , %)k9.)y ? ,
,ViaaFY r}< V3aZ /
KiG IL? ,
t , j j &u.u t Z j %b4Q
'
1 GJI~
K\G
t ? ' - )kw - >
t , > -
'[ - j %
,ViaaFY r 1 Y x|@B?
KiG IL? ,
t C j &u.u - ) -
&[ t 1iw& - ' -
{1 G$ ]
1 Y 1 , / r YZ < V @ Y C
K\F= V N =q@ ZqX C r E ? , / @ Y t ? & - )l j .4"Qn - )&
,V3a$aY r< 0
V a$Z /
Z3X /AE$/ r < V3aZ /J
N @ /1
CD/AE
CD/cE
1MCON
T*U
CD/cE
1 ? ,o,
CD/cE
C XA,
? `F`
CD/cE
1 ? ,o,
CD/cE
CD/cE
1 Y 1 , / r YZ < V @ Y C
Y[Z 1
1 ? ,o,
CD/cE
, //N
Y[Z 1
x YZAV r YZ < V @ Y C VHZ = /J @ V =
[Y Z < V @ Y C ViZ = /
V_ZA` N
Z3V ?A@
?0gsI ]
t< .n^u
` / <
p @ - 45.^6 - 41
-
A.Broggi
152
,V3a$aY r < 0
V a$Z /
x @B?
,V3a$aY r 1 Y |
Z3X /AE ?$r 1 Y x|@B?
,V3a$aY r 1 Y x|@B?
/ @ `AYZ ? C VHZ = /
/ @ `AYZ ? C VHZ = /
<>=#? CON ?sr ,Y <w=q?
Y[Z =
1MCON
T*U
1MCON
T.ZAU
N X <wg
CD/cE
CD/cE
Y[Z =
No/FN
@ V =
VoZA`
R"P
? , Ip p
x YZcV r< V3aZ /
? , Ip p
Z0X /AE$/ r< V0a$Z /
?0G
?3gsI ] R
`5, IL? ,
R"P
?0G
@ V =
t @ 9& -
)Q
w6w4> ?iG
N @ /1
C/AE
Y[Z =
1MCON
T 1
1MCON
T.Z 1
N X <wg
CD/cE
CD/cE
Y[Z =
No/FN
@ V =
V_Zc`
t ' w V
p
t 10w)') - 9y)Q
- - b%pQp p
t 9)%p. j & -
t 10w)') - 9)l
- -
pQp p
t 9)
p I &
t < - )n - )l% 9 ?iG
t < %n^u%& ` / < p1 - -
%/3w%p
t 1 - - b.4 - 9[ -j - b
Z0V ?A@
?igI ]
R"P
? , I p}]wp
Z X /AE ?sr 1 Y x|@B?
0
? , I p}wp P
Z3X /cE ?sr 1 Y x|@c?
?HG
?3gsI ] R
`5, IL? ,
R"P
?0G
)Q
w6w4> ?iG
N @ /1
Z3V ?A@
V_ZA` N
N @ s
/ 1
Z3V ?A@
CD/cE
` GJI / x|x< V =
< =q? CN ?sr<w=#@
1 ? ,o,
CD/cE
` GJI / x|x< V =
? , Im ZqX C r E ?
CD/cE
K , I ,6XAZca g$r E
CD/cE
K ,
C XA,
K\J
G I ` G
CD/cE
= ?
, YZcV ?sr E X / #
t< - j - > YZFa ?
E ? , / @ Y
, / @ Y
? , / @ V
)& -
-
-
? F
K GJI?0G
M
` `
CD/cE
1 , Im K0G
Ko
= V N =#@ K3G
CD/cE
<=q? CN ?sr<w=#@ Y ZFa
1 ? ,o,
KiG I 1 ,
CD/cE
@ V =
VoZA` N
153
? @
N @ /1
Z3V A
?3gsI ]
CD/cE
=
"
R
P
[Y Z
@ V =
<>=#? O
C N ?sr<w=#@ YZFa ?
V_Zc` N
N @ /s1
Z3V ?A@
? GId< Via ` < V3a
0
CD/cE
CD/cE
` <IL?0G
ZqX C r E ? , / @ Y I ]
CD/cE
@ V =
Y[ZcYbUY ? ,oYUU ? 2
U Y / ZAV
VoZA` N
t < %n^u%&
` / <
p NH'
< &p
1 < V3a
@ V =
N @ /$1
V_ZA` N
VoZB` <
C ? YZ
VZA`
Z0V ?A@
A.Broggi
154
CALCOLATORI ELETTRONICI
Prova scritta
16 settembre 1991
= Y = ,\V
N_bn -
<
% -
4>.) P
N X K ,oY 1
9b j b
? =q? p
p` B
t ` n99b
P P
j '6b4" R
<>=#? 1hC
<>=#? 1hC
1 < V3a
` K
` K
V_ZA` <
` K
155
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
N @ $
/ 1
N X <wg
CD/cE
N X <wg
1 ? ,o,
1 ? ,o,
1 Y 1 , / r N @ Y Z 1 Y N ? ,_V 1 ? ,o,
1 CON
M
T.ZAU
1 ? ,o,
1 ? ,o,
CD/cE
1 ? ,o,
T CON
x2?A@
`5X Nq7bpQp ; I
t Y 9bbu%m4 - ) - 9
- b < V CN @ V
` <
?0GI ]]
t - )Q&6
'v4>%Q> -jkj
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q?
U Y/ A
Z V
= ?
t , .) - 9
%)& - 4 - - 9% ,ViaaY r}< 1 H
V , #
t ) 96) - ? ,
? , I pP p
t< )k - 9bv>%pQp P p I
t - )') - 9 - )' Z / r YZ < V @ Y C V0Z = /
t Nbz
%.4w - 4"Q9b.b j .w
Y[Z < V @ Y C V0Z = /
t NHb
%.4w - 4>Q%4w& -j %
/ @ `AYZ ? C ViZ = /
` GJI / x|x< V = Y <w=#@ XUY / ZcY t< -j - )}9u.'
<=q? CN ?sr<w=#@ YZFa ?
1 Y 1 , / r N @ YZ 1 Y N ? ,\V
ub -
4
A.Broggi
156
Z / r YZ < V @ Y C ViZ = /
X < 1 Y =q?
C ? YZ
,V3a$aY r< 1 V0, =q?
Z3X /AE ?$r ,_V =#= X @B?
? , I pR p
1MCON
t
T.ZAU
X < 1 Y =#?
<=q? CN ?sr ,Y <w=q?
1 ? ,o,
CD/cE
` GJI / x|x< V = Y <w=#@
<=q? CN ?sr<w=#@ YZFa ?
1 ? ,o,
1 Y 1 , / r N @ YZ 1 Y N ? ,\V
T CON
@ V =
t@
V_ZA` N
)}9u.'
t @ - )m
)&vb
%' - )
' - ) < &9b jk- /0% - 'n
N @ $
/ 1
Z0V ?A@
?0gI ]
t< .n&u% ` / < p @ - 4h.^ - 41 -
C/cE
R"P
t ' w V
p
Y[Z =
? , IpP p
t 1ib)) - )k - >L9yp
1MCON
@ ?
t
j .9b: - p P pJp e p I - )&)& T 1
Z0X /AE ?sr ,_V =#= X c
? , Ipe p P
t 9
I - )' j .wQ' 1MCON
@ ?
t -yZiX /FE ?sr ,oV =q= X @c?
T.Z 1
Z3X /cE ?sr ,\V =q= X B
@ V =
V_ZA` N
N @ /s1
Z0V ?A@
K , Im ZBX C r N ?c@ / ,_V
CD/cE
K , I C ?cGr ZcX C r N ?A@ / ,oV t< y)l j %b4>Q - )y%p
1MCON
x YZcV r YZ < V @ Y C ViZ = / t :b)n - I b9
9&
T*U
CD/cE
` GJI / x|x< V = C V <<r YZ < V @ Y C ViZ = /
<=q? CN ?sr<w=#@ YZFa ?
1 ? ,o,
? , I C ?cGr ,_XAZFa gsr N ?A@ / , ?
CD/cE
K ,
C XA,
? `F`
?iGJI / x|x< V = N ?A@ / ,_V
K\GJIL?0G
t Nw -- )) - b jk- - >) - n" CD/cE
t , %y - - ) 1 ? ,o,
,ViaaFY r N ?A@ / , ?
K , I ZAX C r N ?A@ / ,_V t N K , )l j 4"Q - )
CD/cE
G / @
KMgILK|g
t ? u.u%% - ?3g j j 'u.u - ) - )w u.u
/ x|x< V = ,XBZFa g V5UU2V KMG I `5, t 4>)) - - ) - 9b%b& CD/cE
K\F= V N =q@ ZqX C r N ?B@ / ,_V t ? & - )l j .4"Q - )
Y[Z 1
x YZAV r YZ < V @ Y C VHZ = /J @ V =
[Y Z < V @ Y C ViZ = /
V_ZA` N
,V3a$aY r N ?A@ / , ?
Z3X /AE ?$r ,_V =#=
N @ /$1
Z3V ?B@
g r N ?A@ / , ? t Y u% - )&&u%u - )Q
-
- - %b
CD/cE
1 GJI ,_XAZFa s
?0gI ]
t < .bn&u% ` / < p @ - 45.^ -
C/cE
4 1 -
R"P
t '
w V
p
Y[Z =
1 Y 1 , / r/
Z / r< 1 ? C
x Y ZAV r / @
/ @ `AYZ ?
< 1 ? C K Y/
? , I V_Z = V @
1MCON
x YZcV r ,_V =#= X @q?
T*U
? , I pQp
1MCON
T 1
Z0X /AE ?sr ,_V =#=
?HG
N X <wg
?3gsI ] R
CD/cE
CD/cE
`5, IL? ,
R"P
Y[Z =
?0G
No/FN
KiG IL? ,
CD/cE
KMG
Y[Z 1
, //N
Z3X /cE ?$r ,_V =#=
CD/FE
` GJI ,XAZFa gsr N
< X K
` GJI 1 G
@ V =
V_Zc` N
157
4%)&) -
N @ /1
Z3V ?A@
? , Im ZqX C r N ?c@ / ,_V
? ,
t ` f
b j .w - ? ,
x YZcV r / @ `AYZ ? C VHZ = / t < ? , b - P%I . j & - ) - z
%4 1 , I C ?cGr ,\XBZFa gsr N ?c@ / , ?
1 ,
< Y I / x|x< V = N ?A@ / ,\V t < Y w -- )')p&'u.& - - - )'
t 1i - 4)Qw -
`3Y Id< Y
t `cY w -v- ))p&u%)' jk- - ) `3Y IL?0G
K\GJILKMG
t 13> - y - )&
@ `FYZ ? C
t 10w - ) - )&w - b{4 - < Y
1 ? ,o,
1H/ Z x|@ / Z = /
t `3Y < yn - v9
-j - y&b t 9%b - 4)) - 1 - b
t < > I 9 - ) - - )9
-j 6'
T.Z 1
Z / r< 1 ? C K Y /
< 1 ? C K Y/
t N|z
%%4w - 4>m9
-j 'v - b)
1 ? ,o,
K Y /
KMG
t Y
j %w -
w - b - )
Y[Z 1
? `F`
< Y I C ?cGsr ,oXAZFa gsr N ?A@ / , ?
< Y I `3Y
t< )k
bw[w
p:% j -
1MCON
t '6
Q) - z
.4 1 Y 1 , / r / @ `AYZ ? C
T.ZAU
`AYZ ? C ViZ = /J @ V =
C VHZ = /
V_ZA` N
CD/cE
`5V 1
T*U
CD/cE
C XA,
CD/cE
CD/cE
? `F`
G / @
N @ /s1
Z3V ?c@
< g
< Y
N X w
N X <wg
`3Y
A.Broggi
158
1 Y 1 , / r}< 1 ? C K Y /L
1/ Z x|@ / Z = /
<>=#? CON ?sr ,Y <w=q?
CD/cE
N X <wg
CD/cE
G / @
1MCON
No/FN
@ V =
N @ /$1
ZiV ?A@
? , Im / x|x< V =
, XcZFa g V5UU2V KMG t Nb jl- ) . u%u%u
KoG
K , Im ZBX C r N ?c@ / ,_V
KMgILK|g
? , Im / xHx< V = ,A
X ZFa g 0
V UU8V P K5G t < .
4 - ) . u%u
KMG
V_ZA` N
N @ s
/ 1
Z3V ?A@
CD/cE
` GJI / x|x< V = ,YZcV ?sr E X / =#?
< =q? CN ?sr<w=#@ YZFa ?
t< -j - > - )& - -
1 ? ,o,
CD/cE
` GJI / x|x< V = N ?A@ / ,oV
? , Im ZqX C r N ?c@ / ,_V
CD/cE
K , I C ?cGsr ,_XAZFa gsr N ?A@ / , ?
CD/cE
K ,
C XA,
K\J
G I ` G
CD/cE
? `F`
KMGJ
I ?0G
t NH -- )l% j &{4"%)) - 9[ I K0G
t < - )&n - )l
bw%v4 K0G
CD/cE
1 , m
159
? @
N @ /1
Z3V A
?3gsI ]
CD/cE
R"P
[Y Z =
@ V =
<>=#? O
C N ?sr<w=#@ YZFa ?
V_Zc` N
N @ /s1
Z3V ?A@
? GId< Via ` < V3a
0
CD/cE
CD/cE
` <IL?0G
ZqX C r N ?B@ / o
CD/cE
, V I ]
@ V =
Y[ZcYbUY ? ,oYUU ? 2
U Y / ZAV
VoZA` N
t < %n^u%&
` / <
p NH'
< &p
1 < V3a
? @
N @ /$1
Z0V A
x < V = Y <w=#@ XUY / ZcY t< -j CD/cE
` GJI / x|
<=q? CN ?sr <w=#@ YZFa ?
1 ? ,o,
@ V =
V_ZA` N
V ZB` <
o
C ? YZ
VZA`
)}9u.'
A.Broggi
160
CALCOLATORI ELETTRONICI
Prova scritta
21 ottobre 1991
Al termine dellinserimento e della richiesta il programma deve ripetere le operazioni previste al punto 2.
= Y = ,\V
N_bn -
<
% -
4>.) R"P
P P
<>=#? 1hC
Pe
P ]
<>=#? 1hC
1 < V3a
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
N @ $
/ 1
N X <wg
CD/cE
N X <wg
1 ? ,o,
1 ? ,o,
1 Y 1 , / r N @ Y Z 1 Y N ? ,_V 1 ? ,o,
1MCON
161
x2?A@
t Y 9bbu%m4 - ) - 9
- b < V CN @ V
` <
?0GI ]]
t - )Q&6
'v4>%Q> -jkj
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q?
U Y/ A
Z V
= ?
t , .) - 9
%)& - 4 - - 9% ,ViaaY r}< 1 H
V , #
t ) 96) - ? ,
? , I pP p
t< )k - 9bv>%pQp P p I
ub -
4
A.Broggi
162
T.ZAU
Z / r YZ < V @ Y C V0Z = /
1 ? ,o,
Y[Z < V @ Y C V0Z = /
CD/cE
` GJI / x|x< V = Y <w=#@
<=q? CN ?sr<w=#@ YZFa ?
1 ? ,o,
1 Y 1 , / r N @ YZ 1 Y N ? ,\V
T CON
? , I pR p
1MCON
Z / r YZ < V @ Y C i
V Z = /
t
T.ZAU
X < 1 Y =#?
@ Y1 V @ 1 ?
1 ? ,o,
CD/cE
` GJI / x|x< V = Y <w=#@
<=q? CN ?sr<w=#@ YZFa ?
1 ? ,o,
1 Y 1 , / r N @ YZ 1 Y N ? ,\V
T CON
<
=
q
?
@
=
t@
X 1 Y
V
C ? Y Z
V_ZA` N
,V3a$aY r< 1 V0, =q?
Z3X /AE ?$r ,_V =#= X @B?
)}9u.'
t @ - )m
)&vb
%' - )
' - ) < & 9b jk- /0% - 'n
N @ $
/ 1
Z0V ?A@
?0gI ]
t< .n&u% ` / < p @ - 4h.^ - 41 -
C/cE
R"P
t ' w V
p
Y[Z =
? , IpP p
t 1ib)) - )k - >L9yp
1MCON
@ ?
t
j .9b: - p P pJp e p I - )&)& T 1
Z0X /AE ?sr ,_V =#= X c
? , Ipe p P
t 9
I - )' j .wQ' 1MCON
@ ?
t -yZiX /FE ?sr ,oV =q= X @c?
T.Z 1
Z3X /cE ?sr ,\V =q= X B
@ V =
V_ZA` N
N @ s
/ 1
Z0V ?A@
K , Im ZBX C r V0Z =#@c?c= V
CD/cE
K , I C ?cGr ZcX C r V0Z =#@B?A= V t< )l j .4"Qb -
p
1MCON
x
T*U
YZcV r YZ < V @ Y C ViZ = / t :b)n - I b9
9&
? , I C ?cGr ,_XAZFa gsr V0Z =#@B?A=#?
CD/cE
K ,
C XA,
? `F`
?iGJI / x|x< V = VZ =q@q?A= V
K\GJIL0
? G
t Nw -- )) - b jk- - >) - n" CD/cE
KoG
t< - )n - )w - b - )') - b - N X <wg
CD/cE
` GJI / x|x< V = Y[Z < V @ Y C r X = V0Z = V
<=q? CN ?sr<w=#@ YZFa ?
1 ? ,o,
t , .>%w
1 ? ,o,
,ViaaFY r X = V0Z = V
KMG
t @ 9 - )k - - )&)p.w
No/FN
? `F`
KMGJI ,_XAZFa gsr X = ViZ = V t ) - w - - )l:%)&
x < V = Y[Z < V @ Y C r = Vi,oV x / Z /
CD/cE
` GJI / x|
<=q? CN ?sr <w=#@ YZFa ?
1 ? ,o,
t , .)k j %v4l.)'%[
1 ? ,o,
,ViaaFY r= V0_
, V x / Z /
K\F= V N =q@ ZqX C r V0Z =q@c?B= V t ? & - )k j %v4>Q - )&
Y[Z 1
163
x Y ZAV r ,_V #
= = X q
@ ?
,V3a$aY r X = V0Z = V
,V3a$aY r = V0,_V x / Z /
N @ /$1
Z0V ?A@
g rX = 0
CD/cE
1 GJI ,_XAZFa s
V Z = V t Y 'u. - )&&u.u - )l
w - b{
- - b%
?0gI ]
t< .bn&u% ` / < p @ - 45.^ - 41 -
C/cE
R"P
t ' w V
p
Y[Z =
? , I V_Z = V @
t < y)k - 9bvpJw% I
1MCON
x YZcV r ,_V =#= X @q?
t . j & - ) - )
T*U
? , I pQp
t 10w)') - )k - L9%p
1MCON
s
?
r
#
=
=
t n - )&4w I )'. - )'b - 9
T 1
Z0X /AE
,_V
?HG
t < - )n - )k.&9b ?0G
N X <wg
?3gsI ] R
t < %n^u%& ` / < p1 - -
%/3w%p
CD/cE
t 1 - - b.4 - 9[ -j - b
CD/cE
`5, IL? ,
R"P
Y[Z =
?0G
t @ 9& - )Q
w6w4> ?iG
No/FN
KiG IL? ,
t C j &u.u - ) - 9
CD/cE
KMG
t ?
& - )kw -
Y[Z 1
t @ %&b. - & -
{1 G$ ]
, //N
Z3X /cE ?$r ,_V =#=
@ V =
V_ZA` N
N @ /1
ZiV ?A@
CD/cE
1 GJI ,_XAZFa gsr= V0,\V x / Z / t Y u - )'u%u -
w - b
- - %
?3gI ]
t< %n&u%' ` / < p @ - 4# - 41 -
CD/AE
Z3X /AE ?$r ,_V =#=qR
R"P
t ' w V
p
Y[Z =
? , I V_Z = V @
t < y)k - 9bvpJw% I
1MCON
x YZcV r ,_V =#= X @q?FR
t : j & - ) - )
b T*U
? , I p}]wp
t 1ib)) - )k - >L9y
p
1MCON
t
j f9b: - p ]pJyp ^p I
T 1
Z0X /AE ?sr ,_V =#=BR
? , I p}wp P
t - ))> - &)&%y - )' - 9
1MCON
T.Z 1
Z3X /cE ?sr ,\V =q=qR
?HG
t< - )n - )k.&9b ?0G
N X <wg
?3gsI ] R
t < %n^u%& ` / < p1 - -
%/3w%p
CD/cE
t 1 - - b.4 - 9[ -j - b
CD/cE
`5, IL? ,
R"P
Y[Z =
?0G
t @ 9& - )Q
w6w4> ?iG
No/FN
KiG IL? ,
t C j &u.u - ) - 9
CD/cE
KMG
t ? & - )kw -
Y[Z 1
t @ %'% - '6 -
{1 G$ ]
, //N
Z3X /cE ?$r ,_V =#=qR
x YZAV r ,_V =#= X @q?FR
@ V =
,V3a$aY r = V0,_V x / Z /
VZA` N
A.Broggi
164
@ Y1 V @ 1 ?
1 Y1 , /
1/ Z x|@
x YZAV r @
@ Y1 V @
N @
/ 1
Z3V ?A@
? , Im ZqX C r V0Z =#@c?c= V t < pL9 - v9%'.99
CD/cE
? , I]
t >%b I - ))& - 9 - ) -v- )l:% j
1MCON
x YZcV r @ Y 1 V @ 1 ?
t 4>.)') -
%
T*U
CD/cE
` GJI / x|x< V = C V <<r @ Y 1 V @ 1 ?
<q
= ? CN ?sr<w=#@ YZFa ?
t< -j -j .99 - v4>Q
%
1 ? ,o,
K\J
G I / x|x< V = @ Y 1 V @ 1 ?sr ViZ =q@B?c=q?
CD/cE
?
t , .>%w
1 ,o,
,Vi
a aFY r X = V0Z = V
I KMG
CD/cE
1 GJJ
< X K
1 GJI / x|x< V = @ Y 1 V @ 1 ?sr V0Z =#@B?A=#? t < y%pJ9 - v> j wv9)&
x YZcV r @ Y 1 V @ 1 ?
t V_Z = V @$I % j - ) -
.
-
T*U
1 ,_`
K , Im ZBX C r V0Z =#@c?c= V
CD/cE
x x< V = V_Z =q@B?c= V
CD/cE
`3Y I / |
r@ Y 1 V @ 1 ?
t < - )n - ) - )w %uu - 4>)) - 9 N X <wg
1 G
N X <wg
`3Y
< Y I / x|
x < V = @ Y 1 V @ 1 ?sr V0Z =q@c?B=q?
CD/cE
@ V N
t 10[w - )y9'6 4Qz.9
1MCN <K
1H/ Z x|@ / Z = / r /
T.V
t @ & 9& - w - >w
No/FN
`5Y
t @ '9bb - ) %u.u - 9[ No/FN
1 G
? `F`
`3Y I C ?BGr ,oXAZAa g$r ViZ =q@B?A=#?
K ,
t ` f
j .w -
w - b
w
`5V 1
t 10w& - ) -
%
- 9 K , ]
1 Y 1 , / r}@ Y 1 V @ 1 ?
T.ZAU
CD/cE
` GJI / x|x< V = Z / Z r}=q@ /FE ?c= /
?
<
=q? CN ?sr<w#
= @ YZFa ?
t< -j - 9[' - p Z = bn - p
1 ,o,
x YZcV r}@ Y 1 V @ 1 ?
t = % j - ) - &
%%
T CON
/ Z = / r /Fd
CD/FE
` GJI / x|x< V = =H@ /AE ?A= /
<=q? CN ?sr<w=#@ YZFa ?
t< -j - 9[' - p = n - p
1 ? ,o,
t N|6w - w&u.'%w:bn -
No/FN
` G
No/FN
1 G
? `F`
` GJI ,oXAZca g$r X = V0Z = V t NHw -- )m96 j ..)'%[
<=q? CN ?sr<w=#@ YZFa ?
t )9 -j 1 ? ,o,
@ V =
Y1 V @ 1 ?
1 ?
V_Zc` N
C /cE
D
Y[Z =
N @ /1
Z3V ?A@
?3gsI ]
R"P
t < %n^u%&
` / <
p NH'
< &p
@ V =
V_Zc` N
N @ /s1
CD/cE
CD/cE
CD/cE
CD/cE
@ V =
?
?
Y[ZcYbUY ,oYUU U2Y / A
Z V
VoZA` N
N @ V < ViZ =q? U2Y / ZAV
1 < V3a
165
Z3V ?A@
?0GId< Via ` < V3a
` <IL?0G
V <IL?0G
ZqX C r V0Z =q@c?B= V I ]
? @
N @ /$1
Z0V A
x < V = Y <w=#@ XUY / ZcY t< -j CD/cE
` GJI / x|
<=q? CN ?sr <w=#@ YZFa ?
1 ? ,o,
@ V =
V_ZA` N
V ZB` <
o
C ? YZ
VZA`
)}9u.'
A.Broggi
166
CALCOLATORI ELETTRONICI
Prova scritta
25 novembre 1991
= Y = ,\V
` < V3a
,V0Z r Y CN 0
V asZ /
,V0Z r}<=q@ Y ZFa ?
Z3X C r Y CN i
V asZBY
V_Z = V @
N_bn -
V\WFX
Pe
VMWAX
<
% -
4>.) R
N X K ,oY 1
n j
p ` ?B=q? p
t , 6
P P
u%u -
4"Q -
9['6 -
` K
` K
` K
V\WFX
` K
` K
` K
` K
` K
` K
` K
` K
` K
Y <w=#@ XFUY / ZBY
` K
` K
` K
` K
` K
` K
` K
C V <<r YZ < V @ Y C 0
V Z = /
` K
` K
` < V3a
V_ZA` <
<>=#? 1hC
<>=#? 1hC
1 < V3a
` K
P ]
V_Z = V @$I ,YZAV x V0VH`
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
167
x2?A@
N @ /$1
t Y b9 bu%m4 - ) - 9
- b < V CN @ V
N X <wg
` <
? GI ]]
0
t - )Q&6
'v4>%Q> -k
C /cE
D
j j
?HG
t
N X <wg
1 ? ,o,
Y[ZcbY U2Y ? ,YbU_U ? UY / ZBV
x ViV0`
VHV0`
VHV0`
VHV0`
VHV0`
VHV0`
VHV0`
VHV0`
VHV0`
ub -
4
A.Broggi
168
1 ? ,o,
N @ V < VHZ =q? UY / ZAV
<=q? CN ?sr E Y`FV ?A=#?
1 Y 1 , / r N @ YZ 1 Y N ? ,_V
1 ? o
, ,
t , .) - 9
%)& - 4 - - 9% 1 ? ,o,
, ViaaFY r}< 1 VH, =#?
1 Y 1 , / r YZ < V @ Y C
N @ $
/ 1
Z0V ?A@
g ?A@
1 ? ,_,
,6V0asa$Y r 1 A
? ZA`
? , I ] ` x
t @ &b --yj$- '9b
)
? , Ip? p
t 1iw)) - )l - >L9yp
1MCON
t
j .9b: - p ? pyp Jp I - )&)& T 1
Z0X /AE ?sr ,_V =#= X @c?
? , Ip, p
t 9
I - )&b j %l' 1MCON
t -yZiX /FE ?sr ,oV =q= X @c?
T.Z 1
Z3X /cE ?sr ,\V =q= X @B?
@ V =
V_ZA` N
N @ /s1
Z0V ?A@
?HG
t< - )n - ?0G
N X <wg
C /cE
D
` GJI / x|x< V = C V <<r YZ < V @ Y C ViZ = /
?
<
=q? CN ?sr<w=#@ YZFa ?
t< -j -j .99 - &
.9 - 9b. j
1 ,o,
?0G
t @ 9& - ?0G
No/FN
K\GJI / x|x< V = Y CON V3a$ZcY t N|w - b - )') -- %4 CD/cE
< X K
? , I p? p
t ? , j %v4>.)&) - 9
%%)& CD/cE
1 , I ,ViZ r Y CN ViasZ / t 1 , )w .u%u - 4Q
C XA,
1 ,
? `F`
KMGJI?0G
t K3G -- )&)p&u%v4>.)')p j %
? `F`
KMGJI
t K0G w -- )) - u - 4"Q9b.b j .w
CD/cE
1 GJI ,6V0Z r <w=q@ YZAa ? t 10w - 4> j$-
- - %
t , .
- - b.y)y ? ,
1 ? ,_,
,V0asa$Y r 1 gA?A@
? , I V_Z = V @
t < 9l j V_Z = V @I
1MCON
x YZcV r YZ < V @ Y C
t 9l. j & - )p9b.b j .w
T*U
KiG IL? ,
t C j &u.u - )l
- - %
CD/cE
KMG
t Y 6
j .w - )w -
Y[Z 1
t 1iw& - ' -
{1 G$ ]
1 Y 1 , / r YZ < V @ Y C
, //N
169
@ V =
V_ZA` N
1 ? Z 1 V0,_, ? UY / ZcV
N @ /1
Z0V ?A@
K\GJI / x|x< V = Y CON V3a$ZcY t Y &u%ub - 4 j j CD/cE
CD/cE
1 GJI Z3X C r Y CON V0a$ZcY t 10 - b j %v4Q j %
? ``
KMGJIL
t < 9b - w&u%v4)%
1 Y 1 , / r 1 ? Z 1 VH,\,
CD/cE
` GJI ,V0Z r <w=q@ YZca ? t 1iw - b)w %u%u - 9'
K\= V N =q@ KiG I pp t 1 -
%)) -
- - %
1 Y 1 , / r 1 ? Z 1 r}R
CD/FE
KMG
t Y 6
j .w - )w -
Y[Z 1
G
t ` f
j -
w - 9& `5V 1
`
t Y - 9
&.9
1 Y 1 , / r 1 ? Z 1 r}R
T.ZAU
? `F`
KMGJIJR
t ? - )l> -
t 1i& - ' -
1 G ]
1 Y 1 , / r 1 ? Z 1 V0,_,
, //N
@ V =
1 ? Z 1 V0,_, ? UY / ZcV
VZA` N
<>=#? CON ?sr E Y`FV ?A=q?
N @ /1
ZiV ?A@
?0GI ].>]]
t Y n^z
- )p10)' - <
.% < %n
%>p
CD/cE
t x &.9 - 4 -
- 6
%)) - 1 G ` G
CD/cE
1 GJI ]%]]]
t 4w
- v)
494%)m
- - .b
CD/cE
` GJIQP ]
KMgI
t ? &wv
- - b%b
CD/cE
P ]
t - )& - 9 - 99 - 4"
Y[Z =
?3gsI ] R
t Y nz
- )p < 1\9N_9'&8p
CD/cE
KMgI ]%]
t N - & - nf 4w% - &n CD/cE
G / @
t ? u.u%% -` G
` GJI ` G
P ]
Y[Z =
CD/cE
` GJI / x|x< V = ? a$V0ZA` ? t N|w -- )&) - 9& <=q? CN ?sr<w=#@ Y ZFa ?
t 4%)&Q j %Q) - 9 -j 1 ? ,o,
CD/cE
` GJI / x|x< V = Y <w=#@ XUY / ZcY
<=q? CN ?sr<w=#@ YZFa ?
t< -j - )}9u%&
1 ? ,o,
@ V =
<>=#? O
? r E Y`FV ?A=q?
C N s
VZA` N
<>=#? CON ?sr<w=#@ YZFa ?
? @
N @ /1
Z3V A
?3gsI ]
CD/cE
R"P
[Y Z =
@ V =
<>=#? O
C N ?sr<w=#@ YZFa ?
V_Zc` N
t < %n^u%&
` / <
p NH'
< &p
A.Broggi
170
,V3a$aY r 1 gA?c@
,V3a$aY r 1 gA?c@
? @
N @ /1
Z0V A
?3gsI ] P
C /cE
D
R"P
Y[Z =
@ V =
V_Zc` N
N @ /s1
Z3V ?A@
? GId< Via
0
CD/cE
CD/cE
` <IL?0G
@ V =
?
?
Y[ZcYbUY ,oYUU U2Y / ZAV
VoZA` N
N @ V < ViZ =q? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
1 < V3a
@ V =
N @ /$1
V_ZA` N
VoZB` <
C ? YZ
VZA`
Z0V ?A@
` < V3a
t < %n^u%&
` / <
p @ - 45. - 41
- %p
171
CALCOLATORI ELETTRONICI
Prova scritta
10 febbraio 1992
Scrivere un programma in assembler che effettui il prodotto di due matrici A e B e dia come
risultato la matrice C. Il programma deve:
Accettare da tastiera le due matrici (gli elementi delle matrici A e B, di dimensione 2x2, sono
numeri positivi inferiori a 10).
Presentare su video la matrice C risultato del prodotto.
= Y = ,\V
` < 3
V a
`3Y C r C
C ?A=#@
C ?A=#@
C ?A=#@
` < V3a
?A=
Y 1 V r?
Y 1 V rK
Y 1 V r1
<>=#? 1hC
<>=#? 1hC
N_bn -
<
% -
< 0
V a C ViZ = N ?A@B? N X K ,oY 1 p `
e
V\WAX
? = `3Y C r C
` K
`3Y C r C A
K
r
A
?
= 3
C
C
`
`3Y
` Y C rC
` K
`3Y C r C ?c= 3
` Y C rC
V_ZA` <
?B=q?
t@
?B=
?c=
?A=
P R
p
&9)v>.)m
- 9b
`5X NB7 ;
`5X NB7 ;
`5X Nq7 ;
e e
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
ub -
4
A.Broggi
172
1 < V3a
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
C ? YZ
CD/ , = Y N ,_Y 1 ? UY / ZAV
1 Y 1 , / &r P
1 Y 1 , / }r R
1 Y 1 , / re
N @ $
/ 1
N X <wg
CD/cE
N X <wg
1 ? ,o,
1 ? ,o,
CD/cE
1 ? ,o,
CD/cE
1 ? ,o,
1 ? ,o,
CD/cE
1 ? ,o,
@ V =
V_ZA` N
CD/cE
CD/cE
CD/cE
CD/cE
C/cE
C/cE
N X <wg
N X <wg
G / @
C/cE
C XA,
? `F`
Y[Z 1
? `F`
`5V 1
T.ZAU
No/FN
x2?A@
t Y 9bbu%m4 - ) - 9
- b < V CN @ V
` <
?0GI ]]
t - )Q&6
'v4>%Q> -jkj
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q? UY / ZAV
K\GJI / x|x< V = C ?A=#@ Y 1 V r}?
t , %) - jl-js-
,ViaaFY r C ?c=q@ Y 1 V
K\GJI / x|x< V = C ?A=#@ Y 1 V r}K
t , %) - 9.
4 -j$-
,ViaaFY r C ?c=q@ Y 1 V
C/ , = Y N ,_Y 1 ? U2Y / ZAV t C)')&
- )y4 j$-
K\GJI / x|x< V = C ?A=#@ Y 1 V r 1
<=q? CN ?sr C ?A=#@ Y 1 V
t < -j - ) -j$- &
%y 96) -
t @ ' - ) < 9 jl- /3% - &n
N @ /s1
Z3V ?A@
< Y I / x|x< V = C ?A=#@ Y 1 V r ?
`3Y I / x|x< V = C ?A=#@ Y 1 V r K
K\GJI / x|x< V = C ?A=#@ Y 1 V r 1
t 10w - ' y1 ,
1 , I `3Y C r C ?A=
t 1iw -
)1 g
1 gsI `3Y C r C ?c=
t 1i - 4%)') -j )')&
- u
` gsI `3Y C r C ?c=
< Y
`3Y
t ? u.u%% - )k 9)& - bv - u - )& `5,
`5, I `5,
? , Im < Y
t 1 - &
- ) j %v4 ?
Ko= V N =#@ `cY
t C)'&)'
- %)' j %w4> K
t< jkjl- )k&9)& - v - bu% - )&
`5, IL? ,
< Y
t Y 6
j .w - w - j$-
?
t Y
j - - js-
K
`3Y I `3Y C r C ?c=
t ` f
j - )l
b - 4%)m
)
` g
t 4 j )'&)&
- u.'6
1 Y 1 , / r}e
`5Y
173
t?
'9 - > - j$-
K
t C j bu%u - ) 9)w -
t Y 6
j .w - w - b j$-
1
t ` .
%b j % -
bw -
)'
t?
9 t ? &9b -
,V3a$aY r C ?A=#@ Y 1 V
N @ /1
Z3V ?A@
CD/cE
1 GJI `5Y C r C ?A=c `AY C r C ?c= t Z j .v4>Qb -
t , %y)l> j .)y
1 Y 1 , / r\
1 ? ,\,
, V =q= X @B?
,6V3asaV r ZAX C V @ /
KiG IL? ,
t C j &u.u - ) - )
CD/cE
KMG
t Y 6
j .w - )w -
Y[Z 1
t 10 - & -
1 GF ]
1 Y 1 , / r ,\V =q= X @B?
, //N
@ V =
,V3a$aY r C ?A=#@ Y 1 V
V_ZA` N
? ,
N @ /$1
ZiV ?A@
CD/cE
1 GJI `5Y C r C ?A=c A
` Y C r C ?c= t Z j .v4>Qb -
? , Im K3G
t , %y)k j %
1 Y 1 , / r}<=q? CN ?
CD/FE
<=q? CN ?sr ZAX C V @ /
t < -j - )Q
wb4> ? ,
1 ? ,o,
KMG
t Y 6
j .w - )w -
Y[Z 1
t 10w - & -
1 G$ ]
1 Y 1 , / r}<=q? CN ?
, //N
@ V =
<>=#? O
? r C ?A=#@ Y 1 V
C N s
VZA` N
,V3a$a$V r ZAX C V @ /
@ ?
Z3X /AE ?$r ,_V =#= X B
Y[Z =
1MCON
T 1
1MCON
T.Z 1
< X
@ V =
N @ /1
Z3V ?A@
?0gI ]^
t< .n&u% ` / < p @ - 4h.^ - 41 -
C/cE
R"P
t ' w V
p
? , I p}]wp
t< )k - 9bv> j bv%p p ]p
@ ?
t )y - )& - 9
Z0X /AE ?sr ,_V =#= X c
? , I p}wp P
t< )k - 9b%p p pJy)
@ ?
t > - )'
Z3X /cE ?sr ,\V =q= X B
K
? , I p ]p
t < > - ) - 94>.Q j .bQ ?5< 1 YY
V_Zc` N
A.Broggi
174
N @ /s1
Z3V ?A@
? GId< Via
0
CD/cE
CD/cE
` <IL?0G
@ V =
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
VoZA` N
<>=#? CON ?sr ZBX C V @ /
<>=#? CON ?sr ZBX C V @ /
N @ V < ViZ =q? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
1 < V3a
@ V =
@ V =
N @ /$1
Z3V ?A@
V_ZA` N
N @ /$1
V_ZA` N
VoZB` <
C ? YZ
VZA`
Z0V ?A@
` < V3a
175
CALCOLATORI ELETTRONICI
Prova scritta
18 febbraio 1992
Scrivere un programma assembler che calcoli i primi 400 valori della sequenza
generata con la seguente legge:
xi 1 axi b mod256
dove a e b sono numeri compresi fra 0 e 255.
Il programma deve:
Acquisire i valori di a e b;
Visualizzare la sequenza su 20 righe di 20 numeri con il seguente formato:
bbb1bb25b145bb30b100bbb0 &
= Y = ,\V
N_bn -
<>=#? 1hC
<>=#? 1hC
? @B?
N A
~ ]]
4>.) P
` < V3a
Z3X C r Y = V @B? UY / ZBY
G ]
?
K
@ ?
C ?F< 1 g V B
` < V3a
<
% -
N X K ,oY 1
% - '
P R
p ` ?B=q? p
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
ub -
4
A.Broggi
176
1 < V3a
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
N @ /$1
N X <wg
C /cE
D
N X <wg
1 ? ,o,
1 ? ,o,
1 ? ,o,
CD/cE
1 ? ,o,
CD/cE
CD/cE
CD/cE
1 Y 1 , / r N @ Y Z 1 Y N ? ,_V LN X <wg
N X <wg
1 ? ,o,
No/FN
C XA,
? `F`
No/FN
, //N
@ V =
?
C
Y Z
V_ZA` N
<>=#? CON ?sr ?qG
x2?A@
t Y 9bbu%m4 - ) - 9
- b < V CN @ V
` <
?0GI ]]
t - )Q&6
'v4>%Q> -jkj
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q? UY / ZAV
t , %y j %)y ? ,
,ViaaFY r ZAX C V @ /
? IL? ,
t , j j 'u.u - ?
t , %y j %)y ? ,
,ViaaFY r ZAX C V @ /
K IL? ,
t , j j bu%u - K
? , IJG ]
t Y u% - )&u%u - G ] ? ,
1 GJI Z3X C r Y = V @q? U2Y / ZcY t 13> -
t < - )'n - 1 G
1 G
?HG
<=q? CN ?sr ?cG
t < -j - )l j .bv ? ,
?0G
Ko= V N =#@ ?
tA?0G ? >? ,
? , ILK\F= V N =q@ K tL? , 77 ? >? , ; K ; j z4 R
t @ '9bb - 1 G
1 G
1 Y 1 , / r N @ YZ 1 Y N ? ,_V
t @ ' - ) < 9 jl- /3% - &n
N @ /$1
Z3V ?A@
<=q? CN ?sr K Y ? Z 1#/
t < -j
1 ? ,o,
G / @
?3gsI}?Ag
t ? u%u% C ?F< 1 g V @c? I ]
t ? uu.% CD/cE
CD/cE
1 , IQP ]]
<=q? CN ?sr 1 ?c@c?A=h=
1 ? ,o,
CD/cE
1 , IQP ]
<=q? CN ?sr 1 ?c@c?A=h=
1 ? ,o,
C ?F< 1 g V @c? I&P
CD/cE
<=q? CN ?sr ZAX C V @ /
1 ? ,o,
@ V =
t @ '
V_ZA` N
- )k j
- - b% -
? g
)k% 9 0
) -js- 9b
.
)) -
bz
.4w -
-jk- w
? @
N @ /1
Z V A
0
?HG
N X <wg
1 ,
Y[`AY E
C ?F< 1 g V B
@ ? IL? ,
tZ
/ @
-
. - ? , %pL4"n^%9v4 t )- C F
? < 1 g V @q? "4 nw - p w]>p
<=q? CN ?sr ZAX C V @ /
t < -j - ? ,
A
1 ? ,o,
C XA,
1 ,
K , IL? ,
CD/cE
?0G
No/FN
< X K
? , ILK ,
@ V =
<>=#? CON ?sr 1 ?A@c?B=q=
V_ZA` N
177
] I
N @ /$1
Z3V ?A@
?HG
t < - )n - ?0G
N X <wg
K , IL? ,
t < ? , ) - C ?c< 1 g V @B? 9] I
C /cE
D
K , I C ?F< 1 g V @c?
t 9 -j - -
%vb49b
/ @
<"=q? CON ?sr ZcX C
T.ZAU
<=q? CN ?sr K Y ? Z 1#/
1 ? ,o,
x YZcV r <w=q? CON ?
T N
<>=#? CON ?sr ZBX C
? ``
? , I p}]wp
t ,_- 9b4 -
Q - b&pQp ]p
<=q? CN ?sr 1 gc?A@
t < ->j - )l
- - ? ,
1 ? ,o,
x YZAV r}<=q? CN ?
?0G
t @ 9& - ?0G
NM/FN
@ V =
<>=#? CON ?sr ZBX C V @ /
V_ZA` N
<>=#? CON ?sr K Y ? Z 1h/
? @
N @ /s1
Z0V A
?HG
N X <wg
? , I plp
CD/cE
<=q?
1 ? ,o,
C N ?sr 1 gc?A@
?0G
No/FN
@ V =
V_ZA` N
N X <wg
C /cE
D
CD/cE
CD/cE
N @ /s1
Z3V ?c@
1 G
?3gsI ] V
K , I]
1 GJI ]]] P
t< - )'n - 1 G
t< .n^u K Y / < p '1 - %p
t N - & -v- b&n t < ->j - 9)v
- - b%b
A.Broggi
178
Y[Z =
No/FN
@ V =
P ]
1 G
t @ ' 9bb - 1 G
t @ ' - )) -
bz
.4w -
VoZA` N
N @ /s1
Z3V ?A@
? GId< Via
0
CD/cE
CD/cE
` <IL?0G
@ V =
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
VoZA` N
,V3a$aY r ZAX C V @ /
,V3a$aY r ZAX C V @ /
N @ V < ViZ =q? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
1 < V3a
@ V =
@ V =
N @ /s1
Z3V ?c@
VoZA` N
N @ /$1
V_ZA` N
VoZB` <
C ? YZ
VZA`
Z0V ?A@
` < V3a
-jk- w
179
CALCOLATORI ELETTRONICI
Prova scritta
7 aprile 1992
Scrivere un programma in assembler che, dato un numero compreso fra 0 e 99, calcoli tutte le
potenze dello stesso fino a raggiungere il numero massimo contenuto in 32 bit. Il programma
deve:
Accettare da tastiera il numero.
Presentare su video la serie di potenze significative.
<>=#? 1hC
N_bn ? @B?
N A
<
% -
4>.)D
N X K ,oY 1
- ')
P R
p ` ?B=q? p
<>=#? 1hC
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
1 < V3a
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
t
ub -
4
A.Broggi
180
C ? YZ
N @ $
/ 1
N X <wg
CD/cE
N X <wg
1 ? ,o,
1 ? ,o,
1 ? ,o,
x2?A@
? @
N @ s
/ 1
Z3V A
? G
H
N X <wg
? GI ` G
0
C /cE
D
C XA,
Z0X C V @ /
G 1 g a
G I 1 G
`
G 1 g a
K\GJL
I ?0G
?0G
No/FN
C XA,
Z0X C V @ /
t Y 9bbu%m4 - ) - 9
- b < V CN @ V
` <
?0GI ]]
t - )Q&6
'v4>%Q> -jkj
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q?
U Y/ A
Z V
t , %y)k j .) j j bu%u ,ViaaFY r ZAX C V @ /
t .)Q%&9b ?iG
t C j &u%u - )k j %
CD/cE
Z3X C V @ / IL?iG
t ? u%u% - ) - - b - ) - 4". e%R '
CD/cE
` GJI ]
t ` G ?BG ) -j ))&
- u
<=q? CN ?sr ZAX C V @ /
t < -j - )k j . ` G ?cG
1 Y 1 , / r N @ Y Z 1 Y N ? ,_V 1 ? o
, ,
1 ? ,o,
C/ , = Y N ,_Y 1 ? U2Y / ZAV t V 9b% ZqX C V @ /c ` G ?cG [ ` G ?BG
t &b - 4w) U %b x ) - - 4 P
t 9{4>.n^%'. - b
1 Y 1 , / r N @ YZ 1 Y N ? ,oV
T*U
@ V =
t @ ' - ) < 9 jl- /3% - &n
C ? Y Z
V_ZA` N
? `F`
` GJILKMG
? ` 1
1 GJI ]
@ V =
VoZA` N
1 G K5G
t::
t
1 G ` G ?cG
t < 1 G pJ> - ) - u% I )
t U %b x ) - - 4.%'% - b
N @ /s1
Z3V ?A@
? GId< Via
0
CD/cE
CD/cE
` <IL?0G
@ V =
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
VoZA` N
N @ V < ViZ =q? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
,V3a$aY r ZAX C V @ /
,V3a$aY r ZAX C V @ /
<>=#? CON ?sr ZBX C V @ /
<>=#? CON ?sr ZBX C V @ /
1 < V3a
@ V =
@ V =
@ V =
N @ /$1
Z0V ?A@
V_ZA` N
N @ /s1
Z3V ?c@
VoZA` N
N @ /$1
V_ZA` N
V ZB` <
o
C ? YZ
VZA`
Z3V ?A@
` < V3a
181
A.Broggi
182
CALCOLATORI ELETTRONICI
Prova scritta
1 giugno 1992
Scrivere un programma assembler che accetti un numero decimale in base 10 con il seguente
formato: zz,zzz e ne calcoli la trasformazione in base 2 con il formato xxxxx,xxxxx. La trasformazione ovviamente approssimata.
Il programma deve stampare come output:
La trasformazione in base 2 xxxxx,xxxxx.
La ritrasformazione in base 10 esatta del numero in base 2 calcolato al punto precedente.
183
CALCOLATORI ELETTRONICI
Prova scritta
17 luglio 1992
Scrivere un programma in assembler che, dato un numero compreso fra 0 e 999, lo scompomga
nei suoi fattori primi. Il programma deve:
Accettare da tastiera il numero.
Presentare su video la serie dei suoi fattori primi con la relativa molteplicit.
= Y = ,\V
N_bn -
<
% -
4>.) P ))
P R
<>=#? 1hC
<>=#? 1hC
1 < V3a
` K
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
ub -
4
A.Broggi
184
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
C ? YZ
N @ /$1
N X <wg
C /cE
D
N X <wg
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? ,o,
@ V =
V_ZA` N
x2?A@
tY
` <
?0GI ]]
t
?HG
t
Y[ZcYbU2Y ? ,YbU_U ? UY / ZBV
N @ V < VHZ =q? UY / ZAV
,ViaaFY r ZAX C V @ /
< 1q/ACON5/ ZBY
<=q? CN ?sr / X = N X =
t@
9bbu%m4 - ) - 9
- b < V CN @ V
- )Q&6
'v4>%Q> -k
j j
?0G
t , j ' ] ?0G e
N @ /1
ZiV ?A@
K\GJI / x|x< V = ` A
? = Y t N|6w -v- )')p&&u%&vub - 4 -
CD/cE
t Nb j - 4 -
w)') -
1 GIdR
Z3X /AE ?$r< 1 ? Z < Y / ZcV C/cE
G / @
t ? u%u% - ) - - b - ) - 4".)m4>n^ 4w.4w
1 Y 1 , / r}< 1q/ACON5/ ZqY
` GJI ` G
?HG
t< - )n - )k j
N X <wg
t ` n^ 4w.)d - bb
1 G
`3Y E
t < y) - 4"n&9'4 - .9b)&) I
1MCON
` GsI ]
x ?A=#=
t n -
)z99b j - >
N @ / << Y C/ r |
T.ZAU
KiG I 1 G
t C j uu - ) -
CD/cE
? `F`
KMGJIJR
t ? - )l> -
t = )'{4 - ))'9 -
%4 -
No/FN
` G
t &8pL9'6
- n^
?0GJIQP
t @ .% - ) -
%.4w - 9)&9
1MCON
T.ZAU
Z0X /AE ?$r < 1 ? Z < Y / ZcV tA?0G pL4'n%94 - P
x YZcV r < 1q/FCN3/ < YbU
T CON
?0G
t @ 9' - )k4&n 4w%64w
N @ / << Y C/ r}x|?A=h=
N\/AN
t NHbn -
)kbz99b j -
1 G
Y[Z 1
t @ %'. - ) - bz
.4w 1 Y 1 , / r< 1#/CON3/ ZcY
T CON
x YZAV r}< 1q/ACON5/ < YU
C/AE
/ @ ` N =q@ K3G I ] t C j bu%u - js- %%}4
t &
- ) - '{4>m4 -
@ V =
< 1#/CON5/ ZcY
VZA` N
,V3a$aY r ZAX C V @ /
N @ /s1
Z3V ?c@
?iG
,V3a$aY r ZAX C V @ /
@ V =
185
VoZA` N
N @ /1
Z0V ?A@
K\GJI / x|x< V = ` ?A= Yb Rt Nw - b - )) - u> - 4 - R
CD/cE
t , %y)k j -
CD/cE
` GJIm KiGcR
t NH - 4 P ) -j )'%)&
' - p
CD/cE
1 gIQP
Z3X /AE ?$r C/ , = V N ,
?0GsIm K3G
t , %y)k - b
1 Y 1 , / r ,\V =q= X @B?
CD/FE
? `F`
KMGJIJR
t Nw -- )Qz99 j - b
?0GJI ` G
t , v
[w -
).
f4ww
1MCON
r
|
x
A
?
#
=
=
t 94>&n.9 I n -v- 9 -j -
T.ZAU
Z0X /AE$/
t < - ) I
J) -j )'%)&
- p
1 g
Y[Z 1
t %& - ) - z
.4 1 Y 1 , / r ,_V =#= X @B?
T CON
<>=#? CN ?$r x|?A=#= / @ V
t < -j - Qp ` G 71 g ;p
1 ? ,_,
Z3X /AE$/ r}x|?A=q=
t N|)kn^v - b ` G
CD/cE
` GJIL?iG
t< yp - )l% j 4>%m4 - I
1MCON
` GsI ]
t %'. - ) - bz
.4 T.ZAU
Z0X /AE ?$r C/ , = V N ,
@ V =
t - )& j .wQ9
<>=#? CON ?sr / X = N X =
V_ZA` N
<>=#? CON ?sr x|?B=q= / @ V
<>=#? CON ?sr x|?B=q= / @ V
@ V =
N @ /$1
Z3V ?A@
VoZB` N
N @ /s1
Z3V ?A@
?
0
G
Id< Via
CD/cE
CD/cE
` <IL?0G
@ V =
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
VoZA` N
N @ V < ViZ =q? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
1 < V3a
@ V =
t ` G
b>b%y)k j %v4 t j .w{1 g ) -j )%)'
' - p
N @ /$1
V_ZA` N
V ZB` <
o
C ? YZ
VZA`
Z0V ?A@
` < V3a
9 -j -
A.Broggi
186
CALCOLATORI ELETTRONICI
Prova scritta
17 settembre 1992
Scrivere un programma in assembler che esegua la trasformazione fra numeri in basi diverse. In
particolare il programma deve:
1. Accettare da tastiera un numero K che rappresenti la base della numerazione del primo
numero.
2. Accettare da tastiera un numero N nella base prima indicata.
3. Accettare da tastiera un numero L che rappresenti la base di numerazione nella quale occorre
trasformare il numero N.
Il programma deve fornire il numero specificato ai punti 1) e 2) nella base indicata in 3). Sono da
considerare i seguenti limiti:
1. 2 K L 20.
2. Il valore del numero rappresentato da N(baseK) deve essere minore di 65536 (decimale) =
216 ; in caso contrario il programma deve segnalare errore.
3. I numeri da usare per K ed L sono:
2
2 b 9
9 10
A & 20
187
= Y = ,\V
` < V3a
V_Z = V
,YZAV x
Z3X C V
V @B@ /
@
` < V3a
<>=#? 1hC
<>=#? 1hC
1 < V3a
N_bn -
<
% -
`
`
` K
& p
p <=#? 5
1 p t Eq% - )&)&z
- - t j j
b - .) < -
%6J
t :wb
~> ^.9
ub -
t :::::::::::t
t
1\vb
& - )4%)Q -jkjlt :::::::::::t
C ? YZ
P R
< 0
V a C ViZ = N ?A@B? N X K ,oY 1 p ` ?B=q? p
P e
VMWAX
P ]
V\WFX
`5
` K
VoZ = V @I ,YZAV x ViVi` I ,YZcV x ViV0`
K
p Y )Q j %9%b&vp'p js- &4> P
` K
VZ = V @I ,YZAV x V0VH` I ,YZcV x ViV0`
K
p Y 69b%b) - 9> p
` K
VoZ = V @sI ,YZBV x V0Vi` I ,YZAV x V0VH`
K
p Y 69b%b) j % p
` K
V_Z = V @sI ,YZAV x ViV0` I ,YZAV x V0VH`
K
p Y )Q j %v
bn.&v
pp p
V_ZA` <
V0VH`
@ /
@ V
C V <<r / X = N X =
N @ /$1
N X <wg
C /cE
D
N X <wg
1 ? ,o,
1 ? ,o,
1 ? ,o,
1 ? ,o,
x2?A@
` <
?0GI ]]
?HG
Y[ZcYbU2Y ? ,YbU_U
N @ V < VHZ =q?
,ViaaFY rKh?F<
,ViaaFY r ZAX C
t Y b9 bu%m4 - ) - 9
- b < V CN @ V
t - )Q&6
'v4>%Q> -jkj
t
?
U Y / ZBV
U Y / ZAV
?3g
4
A.Broggi
188
t
<>=#? CN ?sr V @B@ / @ V
ZqX C V @ /c IL?HG
,ViaaFY rKh?F< V
<=q? CN ?sr ZAX C V @
x YZcV
<>=#? CON s
? rV c
@ @ / @ V
C/cE
` GI / x|x< V =
<=q? CN ?sr<w=#@ YZFa
1 ? ,o,
x YZAV
@ V =
C ? YZ
V_ZA` N
T 1
C /cE
D
1 ? ,o,
1 ? ,o,
T CON
96%
&[
- - 4 - ? , ) ?0G
t< P '9 -j - 49
%
t C j bu%u%)k j %
t , .) - 9by) ? ,
t < -j - ZBX C V @ /Bm.)') /
- 9b4w
- t ? , 4b9
V @B@ / @ V t C%99 - v4>Q
?
t< -j - ) j .99 - '
t @ ' - ) < 9 jl- /3% - &n
,V3a$aY r Kh?A< V
N @
/ 1
Z0V ?A@
CD/cE
` GJI / x|x< V = Y[Z < V @$rK#?F< V
<=q? CN ?sr<w=#@ YZFa ?
t< -j -j .99 - v4>Q9. j .w
1 ? ,o,
t , j '98L
- - )
b CD/cE
1 , I p Jp P
t , %m
- - b%b{
) j &
1 ? ,_,
Z3X /AE$/ r 1 ?B@c?A=h=
,V0asa$Y r 1 ?A@q?A=q=
? , I V_Z = V @
t < y%pJ9 - j w V_Z = V @
1MCON
t )Q - )&
- - b.
T*U
Z0X /AE/ r 1 ?A@B?A=#=
? , I pR p
t< ) 1MCON
- 9y4w
- - p R
t )
Q - )&b
- - .b
T 1
Z0X /AE/ r 1 ?A@B?c=q=
<=q? CN ?sr 1 ?c@c?A=h=
t< -j - )Q
- - b.y)
1 ? ,o,
@ V =
,V3a$aY r Kh?A< V
VZA` N
,V3a$aY r 1 ?A@B?A=#=
1 Y 1 , / r\
, V =q= X @B?
N @ /s1
Z3V ?A@
?3g$I ]
t < %n&u.' ` / < p @ - 4h% - 41 -
CD/FE
R"P
t ' w V
p
Y[Z =
? , I p p P
t< )k - 9b%p p p I - ))' 1MCON
t 9 - )' - ) -
n%9 js- &
9
)&
T 1
Z / r 1#/ Z E V @A< Y / ZAV
? ZA`
? , I ] ` x
t 13n^.by j$- 9b
%)&
? , I V_Z = V @
t < 9Q j VoZ = V @I
1MCON
Z / r 1#/ Z E V @c< Y / ZBV
x YZcV r ,_V =#= X @q?
t . j & - ) - )
T*U
? , I p}]wp
t< p j '4>p ]p
1MCON
t - ))& - &)&%y)Q
- - b.
1 Y 1 , / r ,oV =q= X @B?
T 1
? , I 1 ,
t , v
[w -
)) j
1MCON
t z91 ,
1 Y 1 , / r ,oV =q= X @c?
T.Z 1
? , I p}wp P
t<
pL
b j 6b.9b: - p ]pJp p
1MCON
x YZcV r ,oV =q= X @B?
t - ))& - . j & - ) - )(b T 1
? , Ip? p
t< p p}wpJ p ? p
1MCON
t - ))& - &)&%y)Q
- - b.
1 Y 1 , / r ,oV =q= X @B?
T 1
? , I 1 ,
t , v
[w -
)) j
1MCON
t z91 ,
1 Y 1 , / r ,oV =q= X @c?
T.Z 1
189
? , I1 ,
t<
p js- &41 ,
1MCON
t - )') - &)&.)k
- - b%
1 Y 1 , / r ,oV =q= X @c?
T.Z 1
x YZAV r ,_V =#= X @q?
?3gIL? ,
t N ?ig )l9b)& - jlCD/FE
< X K
?3gsI p ]p
t ?5< 1 YY td< b - p ]p
?3gIQP ]
t < y%p j &yy - ) -
1MCON
t % j & - ) - )
1 Y x|@q?sr `V 1 Y C ? ,\V
T 1
< X K
?3gsI p ? p pwp bP
t ? )&b j bQ)b - .)Q -
@ V =
1 Y x|@B?sr `FV 1 Y C ? ,oV
,V3a$aY r 1 ?A@B?A=#=
VoZA` N
<>=#? CON ?sr 1 ?A@c?B=q=
1 Y 1 , / r ZAX C V @ /J
N X <wg
C /cE
D
CD/cE
Y[Z =
No/FN
@ V =
N @ /1
Z0V ?A@
?HG
?3gsI ] R
`5, IL? ,
R"P
?0G
V_ZA` N
N @ s
/ 1
Z3V ?c@
? G
H
t< - )n - )l
bwb4 ?HG
N X <wg
C /cE
D
` GJI / x|x< V = Y[Z < V @$r ZAX C V @ /
<q
= ? CN ?sr<w=#@ YZFa ?
t< -j -j .99 - v4>Q9. j .w
1 ? ,o,
?0G
t @ 9& - ?0G
No/FN
G IJ?0G
t , j &98L
- - .b)
b CD/cE
1 J
t ? , n - )'4>%)) - 9b ?3g
G / @
K\GJILKMG
t ? u.u%% - )l9b)& - v - u. - )&
?
r
A
?
B
@
A
?
#
=
=
t , %y
- - %b{4 - - 9&. 1 ,\,
,6V0asaY 1
<=q? CN ?sr 1 ?c@c?A=h=
t< -j - )Q
- - b.y)
1 ? ,o,
? , I V_Z = V @
t < y%pJ9 - j w V_Z = V @sI . j ' 1MCON
x YZcV r ZAX C V @ /
t ) - )
- b49
9%u - 1 - b
T*U
G 1 g a
?iGJILKMG
t<
-j - ?0G KMG >%) -j )''6)'
- u
K , IL?0g
t < - )n - ) - - b - ) - 4%)Q&9)& -
CD/cE
t ?qG 1 g"? ,
C XA,
1 g
t< - )&n - ) 96) - - u - )' ` G
CD/cE
` GJIL?iG
? , ILK ,
t 1 - &
- ) - - b - ) - 4>.)Q&9)& -
CD/cE
t ?qG 1 g"?Ag
C XA,
1 g
? `F`
t N| ` G )k&9)& - ' - )
` gIL? ,
x YZcV r ZAX C V @ /
t < js- '4> P & I :. j & T 1
?3gIQP
t < ?0g
pL4>n^.9bv4 - u% I 4>n
1MCON
t 9
&
)D1 - - 4 P
1MC1
x YZcV r ZAX C V @ /
t < js- '4> P & I :. j & T 1
A.Broggi
190
? `F`
`5, ILKMg
? ` 1
` gI ]
K\GJI ` G
CD/cE
1 Y 1 , / r ZcX C V @ /
T.Z 1
?iGJIJKMG
CD/FE
@ V =
VoZA` N
N @ $
/ 1
Z3V ?A@
?HG
N X <wg
CD/cE
` GJI / x|x< V = C V
<=q? CN ?sr<w=#@ Y ZFa
1 ? ,o,
?0G
N /FN
o
@ V =
<>=#? O
C N ?sr ZBX C V @ /
V_ZA` N
<>=#? CON ?sr<w=#@ YZFa ?
? @
N @ /1
Z3V A
?3gsI ]
CD/cE
R"P
[Y Z =
@ V =
<>=#? O
C N ?sr<w=#@ YZFa ?
V_Zc` N
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
N @ /s1
Z3V ?A@
? GId< Via
0
CD/cE
CD/cE
` <IL?0G
@ V =
Y[ZcYbUY ? ,oYUU ? U2Y / ZAV
VoZA` N
N @ V < ViZ =q? U2Y / ZAV
N @ V < ViZ =q? U2Y / ZAV
1 < V3a
@ V =
N @ /$1
V_ZA` N
V ZB` <
o
C ? YZ
VZA`
Z0V ?A@
t < %n^u%&
` < V3a
` / <
p NH'
< &p
191
CALCOLATORI ELETTRONICI
Prova scritta
19 novembre 1992
Scrivere un programma in assembler che, dato un numero compreso fra 0 e 64000, ne calcoli la
radice quadrata e la radice cubica con approssimazione allintero inferiore. Il programma deve:
Accettare da tastiera il numero.
Presentare su video:
CALCOLATORI ELETTRONICI
Prova scritta
8 febbraio 1993
In una prima fase realizzare il programma indicato considerando solo numeri positivi.
A.Broggi
192
CALCOLATORI ELETTRONICI
Prova scritta
6 aprile 1993/1
Scrivere un programma in assembler che muova di una posizione un cursore (qualsiasi) sullo schermo nelle quattro direzioni (nord, sud, est, ovest) utilizzando come comandi quattro caratteri diversi
definiti a priori.
Il programma deve inoltre:
partire con il cursore circa al centro dello schermo,
quando il carattere raggiumge uno dei bordi impedire che esca dallo schermo.
Nel loop principale del programma e opportuno inserire un ritardo; considerare la posizione
piu opportuna nel loop per il ritardo stesso.
In una prima fase realizzare il programma indicato non considerando controlli sui bordi dello
schermo.
CALCOLATORI ELETTRONICI
Prova scritta
6 aprile 1993/2
Nel loop principale del programma e opportuno inserire un ritardo; considerare la posizione
piu opportuna nel loop per il ritardo stesso.
In una prima fase realizzare il programma indicato non considerando controlli sui bordi dello
schermo.
193
CALCOLATORI ELETTRONICI
Prova scritta
1 giugno 1993/1
Scrivere un programma in assembler che accetti in ingresso una frase con un massimo di 500
caratteri e che di questa calcoli:
il numero di parole (si considerano separatori: lo spazio, i segni di punteggiatura, gli apostrofi).
la lunghezza massima e la lunghezza minima delle parole.
la lunghezza media delle parole (questo valore deve essere calcolato con una cifra decimale
significativa).
CALCOLATORI ELETTRONICI
Prova scritta
21 luglio 1993/1
Scrivere un programma in assembler che accetti in ingresso una frase con un massimo di 500
caratteri e che successivamente:
chieda allutilizzatore di indicare un carattere o una sequenza di caratteri (max 4 caratteri).
risponda indicando tutte le parole nelle quali compare il carattere o la sequenza di caratteri
precedentemente indicata.
si considerino separatori fra parole gli spazi e i segni di punteggiatura: punto, virgola, due
punti e punto e virgola.
A.Broggi
194
CALCOLATORI ELETTRONICI
Prova scritta
15 settembre 1993
CALCOLATORI ELETTRONICI
Prova scritta
5 ottobre 1993
195
CALCOLATORI ELETTRONICI
Prova scritta
3 novembre 1993
CALCOLATORI ELETTRONICI
Prova scritta
11 gennaio 1994
A.Broggi
196
CALCOLATORI ELETTRONICI
Prova scritta
7 febbraio 1994
Scrivere un programma in assembler che accetti in ingresso un numero di n cifre (con n fino ad un
massimo di 10) che di questo calcoli:
tutte le possibili permutazioni.
i numeri cosi ottenuti devono poi essere visualizzati contemporaneamente sullo schermo.
197
CALCOLATORI ELETTRONICI
Prova scritta
28 febbraio 1994
Scrivere un programma in assembler che accetti in ingresso una sequenza di 16 cifre esadecimali.
A partire dai caratteri di ingresso:
formare la sequenza di 8 byte generata dal codice inserito.
stampare la sequenza di 0 e di 1 cosi ottenuta.
data la stringa prima ottenuta visualizzarne una codifica run length.
Esempio:
Sequenza ASCII: FFFF.0000.1010.0000
Sequenza di bit: 1111111111111111.0000000000000000.0001000000010000.0000000000000000
Codifica: 1 16 19 1 7 1 20
A.Broggi
198
CALCOLATORI ELETTRONICI
Prova scritta
13 giugno 1994/1
CALCOLATORI ELETTRONICI
Prova scritta
13 giugno 1994/2
199
CALCOLATORI ELETTRONICI
Prova scritta
18 luglio 1994/1
In una seconda fase si considerino le parole formate utilizzando tutti i caratteri alfanumerici (A ...
Z, 0 ... 9). I numeri seguono le lettere nellordinamento.
CALCOLATORI ELETTRONICI
Prova scritta
18 luglio 1994/2
In una seconda fase si consideri la possibilit che il numero possa assumere i seguenti formati:
n nnnEkk oppure nn nnEkk oppure nnn nEkk.
A.Broggi
200
CALCOLATORI ELETTRONICI
Prova scritta
5 settembre 1994/1
CALCOLATORI ELETTRONICI
Prova scritta
5 settembre 1994/2
201
CALCOLATORI ELETTRONICI
Prova scritta
28 Ottobre 1994
Al termine, ripetere il ciclo con una seconda stringa, ma evidenziare il carattere (o i caratteri)
che hanno variato maggiormente la loro frequenza nelle due stringhe.
Esempio:
Sequenza in ingresso: ab4abbbm
Output: a
A.Broggi
202
CALCOLATORI ELETTRONICI
Prova scritta
23 Gennaio 1995
In un primo tempo assumere che la stringa in ingresso soddisfi a tutte richieste e che il cursore non esca mai dallo schermo. Successivamente introdurre il controllo della corretta sintassi e
generare errore se le specifiche non sono soddisfatte.
Esempio:
Sequenza in ingresso: as4a2sbbbs
Il cursore si deve muovere: asaaaassbbbs e deve generare un disegno del tipo:
G3GAG
G G
G G
G3G G
G3G
/
203
CALCOLATORI ELETTRONICI
Prova scritta
12 Aprile 1995
Esempio:
Stringa in ingresso: 4+9330+08=
Uscita: 4+9330+08= 102
A.Broggi
204
CALCOLATORI ELETTRONICI
Prova scritta
16 Giugno 1995
205
CALCOLATORI ELETTRONICI
Prova scritta
25 Settembre 1995
A.Broggi
206
CALCOLATORI ELETTRONICI
Prova scritta
29 Novembre 1995
, dove lintervallo di
Successivamente considerare leffettiva lunghezza dei mesi, e gli anni formati da 365 giorni.
Esempio:
N jl- 4 - -
< f
4 - 4 - -
a l - 9
9
] PPSR ~
PeP ]
e>P*R
207
CALCOLATORI ELETTRONICI
Prova scritta
19 Gennaio 1996
jkj }99
, dove lintervallo
Successivamente considerare anche il caso in cui il primo orario sia posteriore al secondo (cio
si riferisca al giorno precedente).
Esempio:
N j v
-
< f
4w% - b
< f
4wl - 9
9
P ]w R
] e ]
Pe R ]
P%P ]^
A.Broggi
208
CALCOLATORI ELETTRONICI
Prova scritta
19 Gennaio 1996
Al fine di controllare lo stato della tastiera utilizzare i servizi Interrupt numero 16h (servizi 0 e
1).
209
CALCOLATORI ELETTRONICI
Prova scritta
27 Febbraio 1996
Estendere in seguito il programma al calcolo del giorno della settimana di un qualunque giorno
nel decennio 1990/1999. Si ricorda che il 1 Gennaio 1990 stato un lunedi e che gli anni 1992 e
1996 sono anni bisestili.
Utilizzare un formato a piacere per lintroduzione dei dati e per la visualizzazione del risultato.
R
R
Y )Q%'4"%)) -
9 jl- -
C - b.4w
E3%4
R
R
P
Y )Q%'4"%)) -
9 jl- -
A.Broggi
210
CALCOLATORI ELETTRONICI
Prova scritta
25 giugno 1996
Scrivere un programma in Assembly che accetti in ingresso una stringa di massimo 20 caratteri
e che continui ciclicamente a stamparla, facendola ruotare sullo schermo (matrice 80 25).
Pi precisamente la stringa deve essere stampata sullo schermo prima alla posizione (0, 0), poi
alla (0, 1), poi alla (0, 2) fintanto che non si raggiunge la posizione (0, 80 lunghezza_della_stringa );
nella successiva stampa della stringa tutti i caratteri devono essere stampati consecutivamente,
eccetto lultimo, che deve essere stampato sotto il penultimo.
&&&&&&&'&&&''[
_
mS*
_&&&&&&&'&&&''[
_&&&&&&&'&&&''[
(*
_&&&&&&&'&&&''[
_&&&&&&&'&&&''[
S"
_&&&&&&&'&&&''[
_&&&&&&&'&&&''[
_&&&&&&&'&&&''[
_&&&&&&&'&&&''[
_&&&&&&&'&&&''[
S%
.
211
Successivamente considerare la possibilit di uscire dal programma con la pressione del tasto
SPAZIO anche se la stringa non ha terminato il ciclo; al fine di controllare lo stato della tastiera
utilizzare lInterrupt numero 16h (servizi 0 e 1).
Successivamente consentire al programma di eseguire pi di un ciclo: al termine di ogni ciclo
la stringa verr raddoppiata.
&&&&&&&'&&&''[
_
mS*S*
_&&&&&&&'&&&''[
Esempio di risoluzione
S
:
:(
S
-
! (M
!#"#$%'&)( *+&)% ,
.! /%0213/%0214
-
%o*7
(M=< ?>f=< - @
>)02A< B
}
}
I S
.! C!%#D%E!7#5GFH*09)0/"(D
-
J
L
K'
M
M >_ M
-N O
O
-N
M
I
P M >Q 6SRT T6SRT
- < I
P M >VU
XW
O
B
I
P >YU
Z
W
B
[W
I
P >VU
6
I
P
? >
ZB
- < I
P > J
@
U W
O
-
A.Broggi
212
I4-
I S
& B
\>]U J
ZBW
_`ZB
^
I
P
U B
Z
W > O
I
P
U B
W
>
I
P M >VU
XW
& B
I
P
U
@aW > M
-
B*
-
:
-
-N O M
I
P M > b 6666
}
@<
-
- M
B
*
:
c&
- J
fO >VU B
Z
W
f >VU :(
[W
I4- >#Q 6
^ _`
O
:
W >
I
PdU
:(
[W > 6
I
PdU
^ I4- K
@<
I4- O > T
^ _`
T
O
:
W > 6
I
PdU
:(
[W > 6efefO
I
PdU
^ I4- K
T @<
I4- > 6egefO
^ _`
Sb(
O
:
W > 6egefO
I
PdU
:(
[W > 6
I
PdU
^ I4- K
Sb( @<
I4- O > 6egefO
^ _ K
O
:
W > 6
I
PdU
}
-
J
I
P M >
I
P >o M
aW > 6
I
P
U
@
U B
Z
W > 6
I
P
I
P
U B
W >
B*
!#(\
!#( I S
213
A.Broggi
214
CALCOLATORI ELETTRONICI
Prova scritta
16 luglio 1996
Il programma deve poi spostare ogni lettera della stringa appena stampata in basso di un numero
di posizioni dato dal numero della seconda stringa associato alla lettera della prima stringa.
Esempio:
?0K 1 `FV
N jl- 9['6 -
< f
4 - 9b& - PSRP.~e
/0w.
?3K 1 `FV
? 1
K
V
`
Successivamente il programma deve entrare in un ciclo in cui le lettere della prima stringa
rimbalzano tra le due posizioni indicate precedentemente.
In un primo tempo supporre che i dati inseriti soddisfino alle specifiche; in un secondo tempo
effettuare il controllo degli errori.
215
CALCOLATORI ELETTRONICI
Prova scritta
10 Settembre 1996
Qualora la posizione in cui un carattere deve essere mosso risulti occupata, il carattere
rimarr fermo. In pi, quando un carattere raggiunge il bordo dello schermo, si ferma.
il ciclo termina quando tutti i caratteri sono fermi.
Esempio:
% 58 (% %\
% % %
(\
5
% % %
(\
5
% % %
(\
5
216
% % %
(\
5
7 I Q
: _
<
% % %
H (M
5
A.Broggi
217
CALCOLATORI ELETTRONICI
Prova scritta
1 Ottobre 1996
i accetti in ingresso una stringa composta da almeno 10 caratteri e massimo 70; la stringa deve contenere 2 lettere
maiuscole mentre le rimanenti devono essere minuscole.
i entri in un ciclo la cui funzione di stampare la stringa inserita con le seguenti modifiche:
le due lettere maiuscole si spostano allinterno della stringa di una posizione;
nel caso la posizione successiva sia gi occupata dallaltra lettera maiuscola o se si arrivati al termine
della stringa, la lettera modificher la propria direzione.
i ad ogni iterazione il programma deve acquisire un carattere da tastiera: nel caso in cui il tasto sia "SPAZIO", il
programma termina, altrimenti viene rieseguito il ciclo.
Successivamente introdurre il controllo su;;a correttezza del formato della stringa inserita dallutente.
Esempio:
A.Broggi
218
CALCOLATORI ELETTRONICI
Prova scritta
19 Novembre 1996
Scrivere un programma in Assembly formato da un ciclo principale in cui un carattere viene mosso di una posizione per ogni iterazione. Il carattere partir dallangolo alto a sinistra dello schermo e si muover verso destra; una
volta arrivato al bordo destro, scender di una posizione e continuer a muoversi verso sinistra. Una volta arrivato
al bordo sinistro, scender di una posizione e riprender secondo landamento descritto precedentemente. Quando il
carattere raggiunge lutlima posizione dello schermo (angolo in basso a destra), riprender dalla posizione iniziale.
Inserire allinterno del ciclo due procedure che permettano allutente di variare la velocit di movimento del
carattere attraverso la pressione di due diversi tasti. Attenzione: il carattere DEVE muoversi di una posizione ad ogni
iterazione, indipendentemente dalla pressione dei tasti sopra menzionati!
Al fine di controllare lo stato della tastiera si consiglia di utilizzare lInterrupt numero 16h (servizi 0 e 1).
CALCOLATORI ELETTRONICI
Prova scritta
28 Gennaio 1997
Successivamente:
i introdurre il controllo che la stampa non esca dallo spazio dello schermo; in tal caso segnalare errore.
i modificare il programma in modo che venga stampato un asterisco nel caso in cui la posizione corrente sia gi
occupata da un altro carattere.
* @
N
@<
K
N O ^ N
N
- - -
O N ^
O N ^ S j
N ^ O N
K N O - -@-
A.Broggi
220
CALCOLATORI ELETTRONICI
Prova scritta
28 Febbraio 1997
i accetti in ingresso una stringa composta da massimo 70 caratteri; la stringa pu contenere solo lettere maiuscole
e minuscole;
i entri in un ciclo in cui ad ogni iterazioine venga stampata una nuova stringa ottenuta dalla precedente eliminando le lettere (anche multiple) con codice ASCII minore.
Successivamente modificare il programma in modo che ad ogni iterazione vengano stampate due stringhe: la
prima secondo quanto scritto sopra, mentre la seconda contenente le lettere eliminate dalla prima.
Esempio:
* @
:
_
: _
: _
: _
: _
N
@<
p <
`T <
b<
rq <
`s <
ege % e
egege
egege
egege
B egege !20!K
egege !mK
egege K
% %#% %
% %#% %o;0
%#% % %o;02!
%#% % o
% ;02! egegegegefe K
% % %#_
% t02!! egefegegege Ku
221
CALCOLATORI ELETTRONICI
Prova scritta
2 Aprile 1997
i accetti in ingresso una stringa di massimo 70 caratteri composta da lettere maiuscole, minuscole e spazi; lo
spazio, che pu anche comparire pi volte consecutivamente, carattere separatore tra parole diverse;
i stampi tutte le parole della prima stringa che contengono la lettera di cintrollo specificata dalla seconda immissione su righe diverse consecutivamente, in modo da allineare sulla stessa colonna (centrata nello schermo) la
lettera di controllo.
Nel caso si avessero pi ricorrenzze della lettera di controllo in una stessa parola, tale parole viene considerata e
stampata pi volte.
Successivamente eliminare linserimento della lettera di controllo e creare 5 colonne, una per ogni vocale.
Esempio:
* @
N
@<90
I4- J
40 B
J
J
* @
N Z
@
<,
R
I - J
0
Y
0
S
Z J
}
Z
J
}
* @
N
@<90
I4- J
40 B
J
J
R
0
J
0
S
R
Z
J
}
J
R
0
I4-
0
I4-
0
I4-
0
S
0
S
J
30
J
Z
J
}
Z
J
}
A.Broggi
222
CALCOLATORI ELETTRONICI
Prova scritta
7 Luglio 1997
i rappresenti i numeri inseriti sotto forma di istogramma (a tal fine si scelga un modo per la loro approssimazione).
In un primo tempo assumere che il range di variabilit dellistogramma sia tra 0 e 1000; successivamente determinare il range di variabilit utilizzando il valore massimo assunto dai dieci numeri, cio tra 0 e max(ni).
Esempio:
* @
p6p N@I
\< ;66 > T66 >Db 6 6 > 66 > s s > xq s > scqS6 > T b 6 > 6 > T66
y#y y
y#y y
y#y y
y#y y
y#y y
y y#y
y#y y
y y#y
y#y y9y#y y
y y#yzy y#y
y y yzy y y
y y y
y y#yzy y#y
y y yzy y y
y y y
y y#y9y y#yzy#y y9y#y yzy#y y
y#y yzy#y y
y y y
#
y y#y9y y#yzy#y y9y#y yzy#y y9y#y y9y#y y{y y y
y y y
#
223
CALCOLATORI ELETTRONICI
Prova scritta
10 Settembre 1997
i accetti in ingresso 2 stringhe alfanumeriche (che comprendono solo le lettere dellalfabeto maiuscole e minuscole, e i numeri) senza spazi e con almeno un carattere in comune;
i stampi la seconda stringa verticalmente dallalto al basso in modo che le due stringhe si incrocino in corrispondenza del primo carattere che hanno in comune, che verr sostituito da un asterisco.
In un primo tempo assumere che i dati in ingresso siano conformi alle specifiche. Successivamente introdurre il
controllo sugli errori di inserimento.
Esempio:
m
I
<
" J
<
% J
% Fg"
%
F
"
A.Broggi
224
CALCOLATORI ELETTRONICI
Prova scritta
12 Settembre 1997
Scrivere un programma in Assembly che permetta di inserire una stringa di lettere minuscole, maiuscole e numeri,
di massimo 40 caratteri. Si supponga che la stringa contenga almeno 2 vocali. La prima e lultima vocale dividono la
stringa in 3 parti.
Il programma deve pulire lo schermo e stampare la stringa iniziale in posizione centrale. Successivamente deve
stampare su righe successive le tre stringhe in modo che la seconda stringa (la parte centrale della stringa iniziale)
rimanga nella posizione originale, mentre le prima e la terza si spostino di un carattere verso sinistra e verso destra
rispettivamente fino a raggiungere il bordo dello schermo. Quando entrambe le stringhe mobili hanno raggiunto il
bordo dello schermo il programma termina.
Successivamente
Esempio:
_ M P%@b
S* kK O ^aj I
* @
r
@<
* @
r
|
-
ZP%
@
< Kk
N
_&&&&&&&'&&&''&&[
_ M P%@
b
S* Kk O ^aj I
_
M P%@
b (* Kk O ^aj I
_
M P%@
b
(* Kk O ^aj I
_
^aj I
M P%@
b
(* Kk O
_
O
^aj I
M B P}
b
(* Kk
_
O
^aj I
M P%@
b
(* Kk
_
O
^aj I
M P%@ b
(* Kk
_&&&&&&&'&&&''&&[
225
CALCOLATORI ELETTRONICI
Prova scritta
2 Dicembre 1997
Scrivere un programma in Assembly che permetta di inserire una stringa formata solo da lettere maiuscole e
minuscole e che la visualizzi sullo schermo. Il programma deve poi entrare in un ciclo da cui pu uscire solo alla
pressione del tasto Spazio. Allinterno del ciclo viene controllata la tastiera; ogni volta che viene premuto il tasto
corrispondente ad una lettera, dalla stringa iniziale vengono eliminate tutte le ricorrenze (maiuscole e minuscole) della
lettera digitata; la nuova stringa viene sovrascritta alla precedente (alle stesse coordinate della precedente), eliminando
gli eventuali caratteri rimasti dalla stringa precedente.
Successivamente modificare il programma in modo che la pressione di tasti corrispondenti a lettere minuscole
abbiano leffetto di eliminare le corrispondenti ricorrenze nella stringa iniziale (come sopra), mentre la pressione di
tasti corrispondenti a lettere maiuscole abbiano leffetto opposto, ovvero di reinserire le lettere eliminate in precedenza.
Esempio:
* @ N @<
S*% %_~0/05G52
S"B% %_~0/05G52
8
-
-
J Z
J @ :
*~0/025G5
8
-
-
J Z
J :
;0/0
8
-
-
J Z
J :
8
-
-
J Z
J 5 :
f@5G5
8
-
-
J Z
J %] :
S}% %"5G5
J )0# :
8
-
-
J Z
S"B% %_~0/05G52
A.Broggi
226
CALCOLATORI ELETTRONICI
Prova scritta
27 Gennaio 1998
Scrivere un programma in Assembly che permetta di inserire tre stringhe a, b, e c di caratteri alfanumerici (lettere
e numeri) e le visualizzi sullo schermo. Il programma deve stampare la stringa a, carattere per carattere, partendo
dalla met del bordo sinistro dello schermo verso destra; ogni volta che si incontra una ricorrenza di un carattere della
stringa b, la stampa procede verso lalto di un carattere. Parallelamente ogni volta che si incontra una ricorrenza di un
carattere della stringa c, la stampa procede verso il basso di un carattere.
Successivamente modificare il programma in modo che richieda limmissione di una quarta stringa d; ogni volta
che si incontra una ricorrenza di un carattere di questultima stringa, la stampa della stringa a viene riportata nella
posizione originale.
In un primo tempo si assuma che gli insiemi dei caratteri delle stringhe b, c e d abbiano intersezione nulla;
successivamente introdurre tale controllo e, in caso di intersezione non nulla, mostrare le lettere in comune.
Esempio:
* @
* @
* @
* @
_ M BP
r -
I J
@<
r B
* J
@<
r k
_
<
r N
: J
<
K
b(%
O
^aj
I
_ M P%@b % kK O ^aj I
%P
O
K