Enunciats i sol.lucions problemes tema EL PROCESSADOR

Anuncio
Escola Politècnica Superior. UIB
FONAMENTS DE COMPUTADORS
Informàtica de Gestió i Sistemes
Enunciats i sol.lucions problemes TEMA 1
c dels professors de l’assignatura
°
Conjunt de problemes #1
P1. Atès el següent programa pel PDP-11:
loop:
N = 3.
U: .BYTE 4.,10.,6.,3.
S: .BLKW 1
.EVEN
.REGDEF
.ENTRY
mov #0,S
mov #0,R0
mov #N,R2
movb U(R0),R3
inc R0
movb U(R0),R4
sub R3,R4
add R4,S
sob R2,loop
halt
Suposant que el programa s’emmagatzemarà a partir de la posició 200 Oct (això significa, en
particular, que l’adreça d’inici d’U serà 200 Oct), indica quin seria el contingut de la memòria.
És a dir, començant a la posició 200 Oct codifica tot el programa fins al HALT, incloent les
dades (indica a més l’adreça de les posicions de memòria a mesura que vagis fent la codificació).
Per tal de fer més clara la teva resposta empra la fulla TABULADA adjunta a l’enunciat i
també deixa el resultat final en HEXADECIMAL.
NOTA: Els formats de codificació per a les instruccions que apareixen al programa aixı́ com
dels modes d’adreçament, s’indiquen a les taules següents:
MNEMÒNIC
add
halt
inc
mov
movb
sob
sub
FORMAT
0110
src
dst
0000 000 000 000 000
0000 101 010
dst
0001
src
dst
1001
src
dst
0111 111 reg
q
1110
src
dst
MODE
D’ADREÇAMENT
registre
postincrement
predecrement
indexat
CODIFICACIÓ
DIRECTE INDIRECTE
000
001
010
011
100
101
110
111
P2.
Atès el següent programa pel PDP-11:
et1:
et2:
N=3.
U: .BYTE 5.,3.,8.
V: .BYTE 4.,3.,9.
C: .BLKW 1
.EVEN
.REGDEF
.ENTRY
mov #0,C
mov #N,R5
dec R5
cmpb U(R5),V(R5)
bmi et2
inc C
dec R5
bpl et1
halt
Determina el nombre d’accessos a memòria que suposa la seva execució. Per accessos a
memòria s’ha d’entendre no tan sols els accessos a operands, sino també el fetch de les
diferents parts de la instrucció. Indica amb una F els accessos que són de fetch i amb
ER i EW les lectures i escriptures, respectivament, generades amb l’execució de cada
instrucció.
NOTA: Recorda que el bus de dades del PDP-11 és de 16 bits. No confonguis els accessos
a les diferents parts de la instrucció (accessos de fetch) amb la fase de fetch.
(nota 1)
(nota 2)
(nota 3)
loop:
S:
U:
ADREÇA b15
4., 10.
200
0
6., 3.
202
0
?
204
?
mov #0,S
206
0
210
0
(nota 1)
212
1
mov #0,R0
214
0
216
0
mov #N,R2
220
0
222
0
movb U(R0),R3
224
1
226
0
inc R0
230
0
movb U(R0),R4
232
1
234
0
sub R3,R4
236
1
add R4,S
240
0
(nota 2)
242
1
sob R2,loop (nota 3)
244
0
halt
246
0
204(8 = 214(8 + Xs ⇒ Xs = −8(10
204(8 = 244(8 + Xs0 ⇒ Xs0 = −32(10
224(8 = 246(8 − 2q ⇒ q = 9(10
z
b14
0
0
?
0
0
1
0
0
0
0
0
0
0
0
0
1
1
1
1
0
b13
0
0
?
0
0
1
0
0
0
0
0
0
0
0
0
1
1
1
1
0
b12
0
0
?
1
0
1
1
0
1
0
1
0
0
1
0
0
0
1
1
0
b11
1
0
?
0
0
1
0
0
0
0
1
0
1
1
0
0
0
1
1
0
b10
0
0
?
1
0
1
1
0
1
0
1
0
0
1
0
0
0
1
1
0
b9
1
1
?
0
0
1
0
0
0
0
0
0
1
0
0
0
0
1
1
0
b8
0
1
?
1
0
1
1
0
1
0
0
0
0
0
0
0
1
1
0
0
}|
b7
0
0
?
1
0
1
1
0
1
0
0
1
1
0
1
1
0
1
1
0
b6
0
0
?
1
0
1
1
0
1
0
0
0
0
0
0
1
0
1
0
0
b5
0
0
?
1
0
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
b4
0
0
?
1
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
b3
0
0
?
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
CONTINGUT DE LA MEMÒRIA EN BINARI
b2
1
1
?
1
0
0
0
0
0
0
0
0
0
1
0
1
1
0
0
0
b1
0
1
?
1
0
0
0
0
1
1
1
0
0
0
0
0
1
0
0
0
b0
0
0
?
1
0
0
0
0
0
1
1
0
0
0
0
0
1
0
1
0
{
HEX
0 A 0
0 3 0
? ? ?
1 5 F
0 0 0
F F F
1 5 C
0 0 0
1 5 C
0 0 0
9 C 0
0 0 8
0 A 8
9 C 0
0 0 8
E 0 C
6 1 3
F F E
7 E 8
0 0 0
4
6
?
7
0
8
0
0
2
3
3
0
0
4
0
4
7
0
9
0
P1.
P2.
mov #0,C
mov #N,R5
dec R5
cmpb U(R5),V(R5)
bmi et2
inc C
dec R5
bpl et1
halt
3
2
1
3
1
2
1
1
1
(F)
(F)
(F)
(F)
(F)
(F)
(F)
(F)
(F)
+
+
+
+
+
+
+
+
+
0
0
0
2
0
1
0
0
0
(ER)
(ER)
(ER)
(ER)
(ER)
(ER)
(ER)
(ER)
(ER)
+
+
+
+
+
+
+
+
+
1
0
0
0
0
1
0
0
0
(EW)
(EW)
(EW)
(EW)
(EW)
(EW)
(EW)
(EW)
(EW)
1
1
1
3
3
2
3
3
1
vegada
vegada
vegada
vegades
vegades
vegades
vegades
vegades
vegada
Total F
= 3 + 2 + 1 + 3 × 3 + 1 × 3 + 2 × 2 + 1 × 3 + 1 × 3 + 1 = 29
Total ER = 2 × 3 + 1 × 2 = 8
Total EW = 1 + 1 × 2 = 3
Total
= 40
Conjunt de problemes #2
Sea el siguiente programa para el PDP-11, que comienza en la dirección 200 Oct:
N = 3
D: .BYTE 7,10,15
R: .BYTE 0,0,0
.EVEN
.REGDEF
.ENTRY
mov #N,R4
dec R4
proc1: bitb #1,D(R4)
beq proc2
movb #1,R(R4)
proc2: dec R4
bpl proc1
halt
P1. Suponiendo que el programa se almacenará a partir de la posición 200 Oct, indica cuál serı́a
el contenido de la memoria utilizando LA TABLA ADJUNTA DE LA PRIMERA
HOJA. Es decir, comenzando en la posición 200 Oct codifica todo el programa hasta
el HALT, incluyendo los datos (indica además la dirección de las posiciones de memoria
correspondientes a cada palabra de memoria). Para facilitar la claridad de la respuesta
indica también la codificación hexadecimal del contenido de cada posición de memoria.
Los formatos de las diferentes instrucciones y la codificación de los direccionamientos
aparecen en las tablas siguientes:
MNEMÓNICO
beq
bit{b}
bpl
dec{b}
halt
mov{b}
FORMATO
00000011 q
β011 src dst
10000000 q
β000101011 dst
0000 000 000 000 000
β001 src dst
MODO
DE DIRECCIONAMIENTO
registro
postincremento
predecremento
indexado
CODIFICACIÓN
DIRECTO INDIRECTO
000
001
010
011
100
101
110
111
β = 0 en operaciones sobre word
β = 1 en operaciones sobre byte
P2. (a) Determina el número de accesos a memoria que supone la ejecución del programa
anterior. Por accesos a memoria se ha de entender no sólo los accesos a operandos,
sino también el fetch de las diferentes partes de la instrucción. En LA TABLA
ADJUNTA CORRESPONDIENTE DE LA SEGUNDA HOJA, indica en la
columna F los accesos que son de fetch y en las columnas ER y EW las lecturas y
escrituras, respectivamente, generadas con la ejecución de cada instrucción.
(b) Ejecuta el programa instrucción a instrucción y en LA TABLA ADJUNTA CORRESPONDIENTE DE LA SEGUNDA HOJA indica los valores de los registros
R4 y P C al final de la ejecución de cada instrucción, ası́ como el valor final de los
vectores D y R.
Tanto en el problema P1 como en el P2 se valorará la inclusión de comentarios
aclaratorios sobre las respuestas aportadas.
P1.
NOTA: Cada fila de esta tabla representa una palabra de memoria (16 bits)
contenido de la memoria en binario
z
}|
dirección b15 b14 b13 b12
200
202
204
206
210
212
214
216
220
222
224
226
230
232
234
236
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
0000
0000
0000
0001
0000
0000
1011
0000
0000
0000
1001
0000
0000
0000
1000
0000
{
b11 b10 b09 b08
b07 b06 b05 b04
b03 b02 b01 b00
hexadec.
comentarios
1000
0000
0000
0101
0000
1010
0101
0000
0000
0011
0101
0000
0000
1010
0000
0000
0000
0000
0000
1100
0000
1100
1111
0000
1000
0000
1111
0000
1000
1100
1111
0000
0111
1101
0000
0100
0011
0100
0100
0001
0000
0011
0100
0001
0011
0100
0111
0000
0807
000D
0000
15C4
0003
0AC4
B5F4
0001
0080
0303
95F4
0001
0083
0AC4
80F7
0000
D(0), D(1)
D(2), R(0)
R(1), R(2)
mov #N,R4
#N
dec R4
bitb #1,D(R4)
#1
#D = 200 Oct
beq proc2 (nota 1)
movb #1,R(R4)
#1
#R = 203 Oct
dec R4
bpl proc1 (nota 2)
halt
(nota 1) 232 Oct = 224 Oct + 2q ⇒ q =
232 Oct−224 Oct
2
=
154−148
2
=3
(nota 2) 214 Oct = 236 Oct + 2q ⇒ q =
214 Oct−236 Oct
2
=
140−158
2
= −9
³
00001001(bnss = | − 9|(10 → 11110110 + 1 = 11110111(C2 = −9(10
´
P2.(a)
mov #N,R4
dec R4
proc1: bitb #1,D(R4)
beq proc2
movb #1,R(R4)
proc2: dec R4
bpl proc1
halt
F
2
1
3
1
3
1
1
1
ER
0
0
1
0
0
0
0
0
EW
0
0
0
0
1
0
0
0
Num.
ejecuciones
×1 = 2
×1 = 1
×3 = 12
×3 = 3
×2 = 8
×3 = 3
×3 = 3
×1 = 1
TOTAL ACCESOS
33
P2.(b)
1a iter.
z
proc1:
proc2:
mov #N,R4
dec R4
bitb #1,D(R4)
beq proc2
movb #1,R(R4)
dec R4
bpl proc1
halt
}|
R4
3
2
2
2
2
1
1
{
PC
212
214
222
224
232
234
214
valor final D
valor final R
(si procede)
2a iter.
(si procede)
3a iter.
(si procede)
4a iter.
z
z
z
}|
{
}|
{
R4
PC
R4
PC
1
1
222
232
0
0
234
214
0
0
0
-1
-1
-1
222
224
232
234
236
240
7 10
1 0
15 octal
1 octal
R4
}|
{
PC
Conjunt de problemes #3
P1. Sea el siguiente programa para el PDP-11:
V:
W:
Z:
e2:
e1:
.BYTE 5.,10.,6.,7.
.BYTE 0,0,0,0
.BLKB 1
.EVEN
.REGDEF
.ENTRY
clr R1
clrb Z
mov #V,R0
cmpb (R0)+,(R0)
bmi e1
movb #1,W(R1)
incb Z
inc R1
cmp #3,R1
bne e2
halt
Suponiendo que el programa se almacena a partir de la posición 200 Oct, indica cuál serı́a
el contenido de la memoria utilizando LA TABLA ADJUNTA DE LA PRIMERA HOJA.
Es decir, comenzando en la posición 200 Oct codifica todo el programa hasta el HALT, incluyendo los datos (indica además la dirección de las posiciones de memoria correspondientes a
cada palabra de memoria). Para aumentar la claridad de la respuesta indica también la codificación hexadecimal del contenido de cada posición de memoria. Los formatos de las diferentes
instrucciones y la codificación de los direccionamientos aparecen en las tablas siguientes:
INSTRUCCIÓN
FORMATO
DESCRIPCIÓN
bne et
00000010 d
si Z = 0, PC ← [PC]+2d
bmi et
10000001 d
si N = 1, PC ← [PC]+2d
clr{b} dst
β000101000 dst
dst ← 0
cmp{b} src,dst β010 src dst
[src]-[dst]
halt
0000000000000000 detener el procesador
inc{b} dst
β000101010 dst
dst ← [dst]+1
mov{b} src,dst β001 src dst
dst ← [src]
β = 0 en operaciones de word
β = 1 en operaciones de byte
MODO
CODIFICACIÓN
DE DIRECC.
DIR.
IND.
registro
000
001
postincremento 010
011
100
101
predecremento
indexado
110
111
P2. Determina el número de accesos a memoria que supone la ejecución del programa siguiente.
Por accesos a memoria se ha de entender no sólo los accesos a operandos, sino también el fetch
de las diferentes partes de la instrucción. En LA TABLA ADJUNTA DE LA SEGUNDA
HOJA, indica en la columna F los accesos que son de fetch y en las columnas ER y EW las
lecturas y escrituras, respectivamente, generadas con la ejecución de cada instrucción.
A:
B:
C:
V:
etiq:
N = 2
.WORD 7,10
.WORD 3,60
.BLKW N
.WORD 0
.REGDEF
.ENTRY
clr R0
clr R2
mov A(R0),R1
add B(R0),R1
noc1:
noc2:
bcc noc1
mov #1,R2
add V,R1
bcc noc2
mov #1,R2
mov R1,C(R0)
movb R2,V
add #2,R0
cmp #N,R0
bne etiq
halt
P1.
NOTA: Cada fila de esta tabla representa una palabra de memoria (16 bits)
contenido de la memoria en binario
z
dirección b15 b14 b13 b12
200 Oct
0000
202
0000
204
0000
206
0000
210
????
212
0000
214
1000
216
1111
220
0001
222
0000
224
1010
226
1000
230
1001
232
0000
234
0000
236
1000
240
1111
242
0000
244
0010
246
0000
250
0000
252
0000
}|
b11 b10 b09 b08
1010
0111
0000
0000
????
1010
1010
1111
0101
0000
0100
0001
0101
0000
0000
1010
1111
1010
0101
0000
0010
0000
{
b07 b06 b05 b04
0000
0000
0000
0000
????
0000
0011
1111
1100
1000
0000
0000
1111
0000
1000
1011
1110
1000
1100
0000
1111
0000
b03 b02 b01 b00
0101
0110
0000
0000
????
0001
0111
1000
0000
0000
1000
0101
0001
0001
0100
0111
0110
0001
0001
0011
0101
0000
hexadec.
0A05
0706
0000
0000
????
0A01
8A37
FFF8
15C0
0080
A408
8105
95F1
0001
0084
8AB7
FFE6
0A81
25C1
0003
02F5
0000
(nota 1) 210(8 = 220(8 + Xz ⇒ Xz = −8(10 = 1111 1111 1111 1000(C2
(nota 2) 242(8 = 230(8 + 2q ⇒ q = 5(10 = 0000 0101(C2
(nota 3) 210(8 = 242(8 + Xz0 ⇒ Xz0 = −26(10 = 1111 1111 1110 0110(C2
(nota 4) 224(8 = 252(8 + 2q ⇒ q = −11(10 = 1111 0101(C2
comentarios
V(1), V(0)
V(3), V(2)
W(1), W(0)
W(3), W(2)
.EVEN, Z
clr R1
clrb Z
Xz (nota 1)
mov #V,R0
dir. inicio V
cmpb (R0)+,(R0)
bmi e1 (nota 2)
movb #1,W(R1)
1
dir. inicio W
incb Z
Xz0 (nota 3)
inc R1
cmp #3,R1
3
bne e2 (nota 4)
halt
P2.
etiq:
noc1:
noc2:
clr R0
clr R2
mov A(R0),R1
add B(R0),R1
bcc noc1
mov #1,R2
add V,R1
bcc noc2
mov #1,R2
mov R1,C(R0)
movb R2,V
add #2,R0
cmp #N,R0
bne etiq
halt
TOTAL ACCESOS
F
1
1
2
2
1
2
2
1
2
2
2
2
2
1
1
ER
0
0
1
1
0
0
1
0
0
0
0
0
0
0
0
EW
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
Num.
ejecuciones
1 × 1
1 × 1
3 × 1
3 × 1
1 × 1
2 × 0
3 × 1
1 × 1
2 × 0
3 × 1
3 × 1
2 × 1
2 × 1
1 × 1
1 × 1
25
Conjunt de problemes #4
P1 Dados los dos siguientes programas en lenguaje ensamblador del PDP-11:
M=3.
A:.BYTE 7.,-6.,3.,-1.
S:.BYTE 0,0,0,0
.REGDEF
.ENTRY
MOV #M,R0
ET1:CMPB A(R0),#0
BPL ET2
NEGB A(R0)
MOVB #1,S(R0)
ET2:DEC R0
BPL ET1
HALT
N=4.
A:.BYTE 7.,-6.,3.,-1.
S:.BYTE 0,0,0,0
.REGDEF
.ENTRY
CLR R0
MOV #A,R1
MOV #S,R2
ET1:CMPB (R1),#0
BPL ET2
NEGB (R1)
MOVB #1,(R2)
ET2:INC R0
INC R1
INC R2
CMP R0,#N
BNE ET1
HALT
INSTRUCCIÓN
FORMATO
bne et
00000010 q
bpl et
10000000 q
clr{b} dst
β000101000 dst
cmp{b} src,dst β010 src dst
dec{b} dst
β000101011 dst
inc{b} dst
β000101010 dst
halt
0000000000000000
mov{b} src,dst β001 src dst
neg{b} dst
β000101111 dst
β = 0 en operaciones de word
β = 1 en operaciones de byte
MODO
DE DIRECC.
registro
postincremento
predecremento
indexado
DESCRIPCIÓN
if Z=0, PC ← et
if N=0, PC ← et
dst ← 0
[src] - [dst]
dst ← [dst] - 1
dst ← [dst] + 1
para la CPU
dst ← [src]
dst ← -[dst]
CODIFICACIÓN
DIRECTO INDIRECTO
000
001
010
011
100
101
110
111
(a) Indica cuál serı́a el contenido de la memoria una vez codificado y almacenado SÓLO EL
PROGRAMA DE LA IZQUIERDA (EL DEL RECUADRO), incluyendo los datos, y
suponiendo que la memoria se llena a partir de la dirección 200 Oct. Para responder a este
apartado emplea la HOJA TABULADA adjunta, especificando cuál es la dirección de cada
fila, y expresando también la codificación hexadecimal.
(b) Calcula el número total de accesos a memoria que provoca la EJECUCIÓN DEL PROGRAMA DE LA DERECHA (EL QUE NO ESTÁ EN EL RECUADRO), distinguiendo entre accesos de fetch, accesos de escritura y de lectura. Por accesos a memoria se
entenderá no solamente los accesos a operandos, sino también los accesos de fetch de las diferentes partes de la instrucción. En la tabla adjunta se indica con una F los accesos que son de
fetch y con ER y EW las lecturas y escrituras de datos, respectivamente.
Se valorará la inclusión de comentarios aclaratorios a las soluciones a ambos apartados P1.(a) y P1.(b).
P1.(a)
NOTA: Cada fila de esta tabla representa una palabra de memoria (16 bits)
contenido de la memoria en binario
z
dirección
}|
{
b15 b14 b13 b12
b11 b10 b09 b08
b07 b06 b05 b04
b03 b02 b01 b00
hexadec.
comentarios
200 Oct
1111
1010
0000
0111
FA07
2a comp.
A; 1a comp.
A
202 Oct
1111
1111
0000
0011
FF03
4a comp.
A; 3a comp.
A
204 Oct
0000
0000
0000
0000
0000
2a comp.
S; 1a comp.
S
206 Oct
0000
0000
0000
0000
0000
4a comp.
S; 3a comp.
S
210 Oct
0001
0101
1100
0000
15C0
mov #M,R0
212 Oct
0000
0000
0000
0011
0003
M = 3
214 Oct
1010
1100
0001
0111
AC17
cmpb A(R0),#0
216 Oct
0000
0000
1000
0000
0080
#A = 200 Oct
220 Oct
0000
0000
0000
0000
0000
0
222 Oct
1000
0000
0000
0101
8005
bpl ET2 (q = 5(10 )
dir. ET 2
z }| {
[P C]
z }| {
236(8 = 224(8 +2q
224 Oct
1000
1011
0011
0000
8B30
negb A(R0)
226 Oct
0000
0000
1000
0000
0080
#A = 200 Oct
230 Oct
1001
0101
1111
0000
95F0
movb #1,S(R0)
232 Oct
0000
0000
0000
0001
0001
1
234 Oct
0000
0000
1000
0100
0084
#S = 204 Oct
236 Oct
0000
1010
1100
0000
0AC0
dec R0
240 Oct
1000
0000
1111
0101
80F5
bpl ET1 (q = −11(10 )
dir. ET 1
z }| {
[P C]
z }| {
214(8 = 242(8 +2q
242 Oct
0000
0000
0000
0000
0000
halt
P1.(b)
Instrucción
CLR R0
MOV #A,R1
MOV #S,R2
ET1: CMPB (R1),#0
BPL ET2
NEGB (R1)
MOVB #1,(R2)
ET2: INC R0
INC R1
INC R2
CMP R0,#N
BNE ET1
HALT
TOTAL ACCESOS
F
ER
EW
1
2
2
2
1
1
2
1
1
1
2
1
1
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
Número
de ejecuciones
1
1
1
4
4
2
2
4
4
4
4
4
1
Número total
de accesos
1
2
2
12
4
6
6
4
4
4
8
4
1
58
Conjunt de problemes #5
P1 Dado el siguiente programa en lenguaje ensamblador del PDP-11:
A:
B:
ET1:
N=4.
.BYTE 7.,3.,1.,10.
.BLKW N
.REGDEF
.ENTRY
CLR R0
CLR R1
MOV #N,R2
MOVB A(R0),-(SP)
JSR PC,SUBRUT
MOV (SP)+,B(R1)
INC R0
ADD #2,R1
SOB R2,ET1
HALT
INSTRUCCIÓN
add src,dst
clr{b} dst
inc dst
jsr reg,et
SUBRUT:
ET2:
ET3:
MOV R0,-(SP)
MOV 4(SP),R0
DEC R0
BMI ET3
ADD R0,4(SP)
BR ET2
MOV (SP)+,R0
RTS PC
FORMATO
0110 src dst
β000101000 dst
β000101010 dst
0000100 reg 110111
qet
halt
0000000000000000
mov src,dst
β001 src dst
sob reg,et
0111111 reg qet
β = 0 en operaciones de word
β = 1 en operaciones de byte
MODO
DE DIRECC.
registro
postincremento
predecremento
indexado
CODIFICACIÓN
DIRECTO INDIRECTO
000
001
010
011
100
101
110
111
(a) Indica cuál serı́a el contenido de la memoria una vez codificado y almacenado el módulo principal (sólo la columna de la izquierda), incluyendo los datos, y suponiendo que la memoria
se llena a partir de la dirección 200 Oct. Para responder a este apartado emplea la HOJA
TABULADA adjunta, especificando cuál es la dirección de cada fila, y expresando la codificación también hexadecimal para incrementar la claridad de la respuesta. Las tablas siguientes
indican los formatos de las diferentes instrucciones involucradas y sus códigos de operacin.
(b) Calcula el número total de accesos a memoria que provoca la ejecución de la subrutina
durante la ejecución del programa completo, distinguiendo entre accesos de fetch, accesos
de escritura y de lectura. Por accesos a memoria se entenderá no solamente los accesos a
operandos, sino también los accesos de fetch de las diferentes partes de la instrucción. En la
tabla adjunta se indica con una F los accesos que son de fetch y con ER y EW las lecturas y
escrituras de datos, respectivamente.
0000100 111 110111
de forma
qet
que, cuando se ejecuta, la dirección de salto se determina como [PC] + qet . En cuanto a la
instrucción rts pc, no necesita más para codificarse que 0000000010000 111.
NOTA: La codificación de la instrucción jsr pc,et es
Se valorará la inclusión de comentarios aclaratorios a las soluciones a ambos problemas P1.(a) i P1.(b).
P1.(a)
NOTA: Cada fila de esta tabla representa una palabra de memoria (16 bits)
contenido de la memoria en binario
z
}|
dirección b15 b14 b13 b12
200 Oct
0000
202
0000
204
0000
206
0000
210
0000
212
0000
214
0000
216
0000
220
0001
222
0000
224
1001
226
0000
230
0000
232
0000
b11 b10 b09 b08
0011
1010
0000
0000
0000
0000
1010
1010
0101
0000
1100
0000
1001
0000
{
b07 b06 b05 b04
0000
0000
0000
0000
0000
0000
0000
0000
1100
0000
0010
1000
1111
0000
b03 b02 b01 b00
0111
0001
0000
0000
0000
0000
0000
0001
0010
0100
0110
0000
0111
1110
hexadec.
0307
0A01
0000
0000
0000
0000
0A00
0A01
15C2
0004
9C26
0080
09F7
000E
comentarios
2a comp A, 1a comp A
4a comp A, 3a comp A
1a comp B
2a comp B
3a comp B
4a comp B
clr R0
clr R1
mov (r7)+,R2
4
movb A(R0),-(sp)
#A = 200 Oct
jsr pc,et
qet = 14(10
[P C]
dir. et
z }| {
z }| {
234
236
240
242
244
246
0001
0000
0000
0110
0000
0111
0101
0000
1010
0101
0000
1110
1011
1000
1000
1100
0000
1000
0001
0100
0000
0001
0010
1010
15B1
0084
0A80
65C1
0002
7E8A
252(8 = qet + 234(8
mov (sp)+,B(R1)
#B = 204 Oct
inc R0
add (r7)+,R1
2
sob R2,et; qet = 10(10
dir. et
z }| {
250
0000
0000
0000
0000
0000
224(8 = 250(8 −2qet
halt
P1.(b)
Instrucción
SUBRUT: MOV R0,-(SP)
MOV 4(SP),R0
ET2: DEC R0
BMI ET3
ADD R0,4(SP)
BR ET2
ET3: MOV (SP)+,R0
RTS PC
TOTAL ACCESOS
F
ER
EW
1
2
1
1
2
1
1
1
0
1
0
0
1
0
1
1
1
0
0
0
1
0
0
0
Número
de ejecuciones
4
4
8+4+2+11 = 25
8+4+2+11 = 25
7+3+1+10 = 21
7+3+1+10 = 21
4
4
[P C]
z }| {
Número total
de accesos
8
12
25
25
84
21
8
8
191
Conjunt de problemes #6
P1. Suposant que el contingut de la memòria del PDP-11 en binari és el que s’indica a continuació,
determina quin seria el programa assemblador corresponent. Per fer el desassemblatje has de
tenir en compte les etiquetes que s’indiquen i que la primera instrucció del programa es
troba a la posició 206 Oct. Això ho has de fer a la FULLA TABULADA adjunta, posant
a la vora de cada posició de memòria el seu significat. NOTES: Recorda que una instrucció
PDP-11 pot ocupar diverses posicions de memòria. A les taules adjuntes pots trobar els codis
d’operació de diverses instruccions del PDP-11, aixı́ com dels modes d’adreçament. Al programa
s’han posat tantes etiquetes com paraules de memòria ocupen el programa i les dades i, com a
consequència, hi ha més de les que realment es necessiten; per tant, pots prescindir de les que
no es derivin del desassemblatje.
→
adreça
200 Oct
202 Oct
204 Oct
206 Oct
210 Oct
212 Oct
214 Oct
216 Oct
220 Oct
222 Oct
224 Oct
226 Oct
230 Oct
232 Oct
234 Oct
A:
B:
C:
D:
E:
F:
G:
H:
I:
J:
K:
L:
M:
N:
O:
15
0000
0001
0000
0001
0000
0000
1011
0000
0000
0000
0000
1111
0000
1000
0000
1000
0000
0000
0101
0000
1010
0101
0000
0000
0011
1010
1111
1010
0000
0000
0000
0000
0000
1100
0000
1100
1111
0000
1000
0000
1011
1110
1100
1111
0000
0
0111
1101
0000
0100
0100
0100
0100
0001
0000
0010
0111
1100
0100
1000
0000
INSTRUCCIÓ
CODIFICACIÓ
add src,dst
0110 src dst
beq et
00000011 d
bit{b} src,dst β011 src dst
10000000 d
bpl et
dec{b} dst
β000101011 dst
halt
0000000000000000
inc{b} dst
β000101010 dst
mov{b} src,dst β001 src dst
sob reg,et
0111111 reg d
sub src,dst
1110 src dst
β = 0 en operacions de word
β = 1 en operacions de byte
MODE
D’ADREÇAMENT
registre
postincrement
predecrement
indexat
CODIFICACIÓ
DIR. IND.
000
001
010
011
100
101
110
111
P2. Atés el següent programa per al PDP-11:
200 Oct
N = 3.
A:.WORD 34,2,20
B:.WORD 4,6,3
P:.WORD 0,0,0
S:.WORD 0
.REGDEF
.ENTRY
mov #N,R0
mov #0,R1
et2: * mov B(R1),R2
et1: * add A(R1),P(R1)
* sob R2,et1
sub P(R1),S
add #2,R1
sob R0,et2
halt
(a) Indica quin seria el contingut de la memòria una vegada es codifiquès i emmagatzemès el
fragment del programa anterior que es troba dins el requadre, suposant que la memòria
s’omple a partir de l’adreça 200 Oct. Per respondre, empra la FULLA TABULADA adjunta,
especificant quina es l’adreça de cada filera i expressant també la corresponent codificació en
hexadecimal per tal d’incrementar la claredat de la resposta. Les taules del problema P1
indiquen els formats de les diferents instruccions i la seva codificació.
(b) Determina el nombre d’accesos a memòria que suposa l’execució del fragment del programa
anterior corresponent a les instruccions marcades amb ‘*’ si [R1] = 2. Per accessos a memòria
has d’entendre no només els accessos a operands, sino també el fetch de les diferents parts de
la instrucció. A la FULLA TABULADA adjunta, indica a la columna F els accesos que són
de fetch i a les columnes ER i EW les lectures i escriptures, respectivament, provocades per
l’execució de cada instrucció. Indica també el nombre de vegades que s’executa cada instrucció
amb les condicions esmentades ([R1] = 2).
Tant al problema P1 como al P2 es valorará la inclusión de comentaris aclaratoris
sobre las respostes donades.
P1.
adreça
15
0
significat
200 Oct
A:
0000
1000 0000
0111
2a comp. vector A, 1a comp. vector A
202 Oct
B:
0001
0000 0000
1101
4a comp. vector A, 3a comp. vector A
204 Oct
C:
0000
0000 0000
0000
variable C
206 Oct
D:
0001
0101 1100
0100
mov #4,R4
210 Oct
E:
0000
0000 0000
0100
4
212 Oct
F:
0000
1010 1100
0100
dec R4
214 Oct
G:
1011
0101 1111
0100
bitb #1,A(R4)
216 Oct
H:
0000
0000 0000
0001
1
220 Oct
I:
0000
0000 1000
0000
#A = 200 oct
222 Oct
J:
0000
0011 0000
0010
beq M (dir. et. = 224 oct (=[PC]) + 2*2 (=d) = 230 oct)
224 Oct
K:
0000
1010 1011
0111
inc C
226 Oct
L:
1111
1111 1110
1100
XC (dir. var. = -20 (=XC ) + 230 oct (=[R7]) = 204 oct)
230 Oct
M:
0000
1010 1100
0100
dec R4
232 Oct
N:
1000
0000 1111
1000
bpl G (dir. et. = 234 oct (=[PC]) + 2*(-8) (=d) = 214 oct)
234 Oct
O:
0000
0000 0000
0000
halt
P2.(a)
NOTA: Cada filera d’aquesta taula representa una paraula de memòria (16 bits)
z
contingut de la }|
memòria en binari
{
adreça b15 b14 b13 b12 b11 b10 b09 b08 b07 b06 b05 b04 b03 b02 b01 b00 hexadec.
comentaris
250 Oct
1110
1100
0111
0111
EC77
sub P(R1),XS (R7)
252
0000
0000
1000
1100
008C
#P = 214 oct
254
1111
1111
1110
0100
FFE4
XS (nota 1)
256
0110
0101
1100
0001
65C1
add (R7)+,R1
260
0000
0000
0000
0010
0002
2
262
0111
1110
0000
1100
7E0C
sob R0,et2 (nota 2)
264
(nota 1) 222 oct (=dir. S) = XS + 256 oct (=[R7]) ⇒ XS = −28(10
(nota 2) 234 oct (=dir. et2) = 264 oct (=[PC]) - 2d ⇒ d = 12(10)
P2.(b)
Instrucció
F
ER
EW
mov B(R1),R2
add A(R1),P(R1)
sob R2,et1
2
3
1
1
2
0
0
1
0
TOTAL ACCESSOS
Nombre
d’execucions
1
6
6
Nombre total
d’accessos
3
36
6
45
Conjunt de problemes #7
P1.(a) Atesos els dos programes següents en llenguatge assemblador de PDP-11 que fan exactament
el mateix:
Assemblador
N = 4.
V:.WORD 2,23,16,24
S:.WORD 0
.REGDEF
.ENTRY
mov #V,R0
mov #0,R1
et: add (R0)+,S
inc R1
cmp R1,#N
bne et
halt
Adreça
0
200 Oct
210 Oct
0
0
212 Oct
216 Oct
222 Oct
226 Oct
230 Oct
234 Oct
236 Oct
Assemblador
N = 4.
V:.WORD 2,23,16,24
S:.WORD 0
.REGDEF
.ENTRY
mov #0,R0
mov #N,R1
et: add V(R0),S
add #2,R0
dec R1
bne et
halt
Adreça
0
200 Oct
210 Oct
0
0
212 Oct
216 Oct
222 Oct
230 Oct
234 Oct
236 Oct
240 Oct
¿Quin dels dos dóna lloc a més accessos a memòria? Per respondre a aquesta questió has
d’emprar la FULLA TABULADA ADJUNTA.
P1.(b) Indicau quin seria el contingut de la memòria una vegada es codifiquès i emmagatzemès el
següent programa assemblador pel PDP-11 (incloent les dades), suposant que la memòria
s’omple a partir de l’adreça 200 Oct. Per respondre, empra la FULLA TABULADA ADJUNTA, especificant quina es l’adreça de cada filera, i expressant la codificació també en
hexadecimal per tal d’incrementar la claredat de la resposta. Les taules següents vos indiquen
els formats de les diferents instruccions i la seva codificació.
A:
B:
et:
.WORD 4.
.WORD 3.
.REGDEF
.ENTRY
add A,B
bne et
mov #1,B
halt
INSTRUCCIÓ
FORMAT
add src,dst
0110 src dst
bne et
00000010 d
halt
0000000000000000
mov{b} src,dst β001 src dst
β = 0 en operacions de word
β = 1 en operacions de byte
MODE
D’ADREÇ.
registre
postincrement
predecrement
indexat
CODIFICACIÓ
DIR.
IND.
000
001
010
011
100
101
110
111
Es valorarà la inclusió de comentaris aclaratoris a les sol.lucions a ambdós apartats
P1.(a) i P1.(b).
P1.(a)
et:
Instrucció
F
ER
EW
mov #V,R0
mov #0,R1
add (R0)+,S
inc R1
cmp R1,#N
bne et
halt
2
2
2
1
2
1
1
0
0
2
0
0
0
0
0
0
1
0
0
0
0
Nombre
d’execucions
1
1
4
4
4
4
1
Nombre total
d’accessos
2
2
20
4
8
4
1
TOTAL ACCESSOS
et:
41
Instrucció
F
ER
EW
mov #V,R0
mov #N,R1
add V(R0),S
add #2,R0
dec R1
bne et
halt
2
2
3
2
1
1
1
0
0
2
0
0
0
0
0
0
1
0
0
0
0
Nombre
d’execucions
1
1
4
4
4
4
1
Nombre total
d’accessos
2
2
24
8
4
4
1
TOTAL ACCESSOS
P1.(b)
45
NOTA: Cada filera d’aquesta taula representa una paraula de memòria (16 bits)
contingut de la memòria en binari
}|
z
adreça
200 Oct
202
204
206
b15 b14 b13 b12
0000
0000
0110
1111
b11 b10 b09 b08
0000
0000
1101
1111
{
b07 b06 b05 b04
0000
0000
1111
1111
b03 b02 b01 b00
0100
0011
0111
1000
hexadec.
0004
0003
6DF7
FFF8
comentaris
A
B
add A,B
XA = −810
Adreca d0 A
z}|{
210
1111
1111
1111
1000
FFF8
200 = 210 +XA
XB = −810
Adreca de B
z}|{
212
0000
0010
0000
0011
0203
z}|{
0001
0000
1111
0101
0000
1111
1111
0000
1111
0111
0001
0000
15F7
0001
FFF0
z}|{
0000
0000
0000
0000
0000
[P C]
z}|{
222 = 214 +2d
mov #1,B
1
XB0 = −1610
Adreca de B
222 (et)
[P C]
z}|{
202
= 212 +XB
bne et (d = 3)
Adreca d0 et
214
216
220
[P C]
z}|{
202
halt
[P C]
z}|{
= 222 +XB0
Conjunt de problemes #8
P1.(a) Suposant que el contingut de la memòria del PDP-11 en binari és el que s’indica a continuació,
determina quin seria el programa assemblador corresponent. Per fer el desassemblatje has de
tenir en compte les etiquetes que s’indiquen i que la primera instrucció del programa es troba
a la posició 210 Oct. Això ho has de fer a la FULLA TABULADA ADJUNTA, posant
a la vora de cada posició de memòria el seu significat. NOTES: Recorda que una instrucció
PDP-11 pot ocupar diverses posicions de memòria. A les taules adjuntes pots trobar els codis
d’operació de diverses instruccions del PDP-11, aixı́ com dels modes d’adreçament.
→
adreça
200 Oct
202 Oct
204 Oct
206 Oct
210 Oct
212 Oct
214 Oct
216 Oct
220 Oct
222 Oct
224 Oct
226 Oct
230 Oct
232 Oct
234 Oct
236 Oct
R:
S:
T:
15
0000
0000
0000
0000
0000
0110
0000
1111
0110
0000
0010
0000
1000
0000
1111
0000
0000
0000
0000
0000
1010
1100
0000
1111
0101
0000
0101
0000
0000
1011
1111
0000
0000
0001
0001
0000
0000
1111
1000
1111
1100
0000
1100
0000
1111
0011
1110
0000
0
1000
1100
0110
0000
0011
0111
0000
0110
0011
0010
0011
0100
1000
0111
1000
0000
INSTRUCCIÓ
CODIFICACIÓ
add src,dst
0110 src dst
bpl et
10000000 d
clr{b} dst
β000101000 dst
cmp{b} src,dst β010 src dst
halt
0000000000000000
neg{b} dst
β000101100 dst
β = 0 en operacions de word
β = 1 en operacions de byte
MODE
D’ADREÇAMENT
registro
postincremento
predecremento
indexado
CODIFICACIÓ
DIR. IND.
000
001
010
011
100
101
110
111
P1.(b) Determina el nombre d’accessos a memòria que suposa l’execució de les instruccions marcades
amb ‘*’ del programa següent. Per accessos a memòria has d’entendre no només els accessos a
operands, sino també el fetch de les diferents parts de la instrucció. A la TAULA ADJUNTA,
indica a la columna F els accesos que són de fetch i a les columnes ER i EW les lectures i
escriptures, respectivament, provocades per l’execució de cada instrucció. Indica també el
nombre de vegades que s’executa la mateixa instrucció durant l’execució del programa a la
columna nombre d’execucions, i el nombre total d’accessos que ha provocat cada instrucció al
cap de l’execució del programa a la columna nombre total d’accessos.
V:
W:
Z:
*
.BYTE 10.,9.,4.,6.
.BYTE 0,0,0,0
.BLKB 1
.EVEN
.REGDEF
.ENTRY
clr R1
clrb Z
mov #V,R0
e2:
*
*
e1:
*
cmpb (R0)+,(R0)
bpl e1
movb #1,W(R1)
incb Z
inc R1
cmp #3,R1
bne e2
halt
Es valorarà la inclusió de comentaris aclaratoris a les sol.lucions a ambdós problemes P1.(a) i P1.(b).
P1.(a)
adreça
200 Oct
15
significat
0000
0000 0000
1000
10 Oct - 1a. component vector R (word)
202 Oct
0000
0000 0001
1100
34 Oct - 2a. component vector R (word)
204 Oct
0000
0000 0001
0110
26 Oct - 3a. component vector R (word)
0000
0000 0000
0000
S (word)
0000
1010 0000
0011
clr R3
0110
1100 1111
0111
add R(R3),S
214 Oct
0000
0000 1000
0000
#R
216 Oct
1111
1111 1111
0110
XS = -10 Dec (220 Oct ([PC]) - 10 Dec = 206 Oct)
220 Oct
0110
0101 1100
0011
add #2,R3
222 Oct
0000
0000 0000
0010
2
224 Oct
0010
0101 1100
0011
cmp #4,R3
226 Oct
0000
0000 0000
0100
4
230 Oct
1000
0000 1111
1000
bpl T (d = -8 Dec, 232 Oct ([PC]) - 2*8 Dec = 212 Oct)
232 Oct
0000
1011 0011
0111
neg S
234 Oct
1111
1111 1110
1000
XS0 = -24 Dec (236 Oct ([PC]) - 24 Dec = 206 Oct)
236 Oct
0000
0000 0000
0000
halt
206 Oct
R:
0
S:
210 Oct
212 Oct
T:
P1.(b)
Instrucció
F
ER
EW
clrb Z
cmpb (R0)+,(R0)
incb Z
bne e2
2
1
2
1
0
2
1
0
1
0
1
0
Nombre
d’execucions
1
3
1
3
Nombre total
d’accessos
3
9
4
3
Conjunt de problemes #9
P1. Sea el siguiente programa para el PDP-11:
V:
A:
B:
et1:
et2:
et3:
N=4.
.BYTE 173,101,131,41
.BYTE 0
.BYTE 177
.EVEN
.REGDEF
.ENTRY
mov #0,R3
cmpb V(R3),A
bmi et2
movb V(R3),A
cmpb V(R3),B
bpl et3
movb V(R3),B
add #1,R3
cmp R3,#N
bne et1
halt
Suponiendo que el programa se almacena a partir de la posición 200 Oct, indica cuál serı́a
el contenido de la memoria utilizando LA TABLA ADJUNTA DE LA PRIMERA HOJA.
Es decir, comenzando en la posición 200 Oct codifica todo el programa hasta el HALT, incluyendo los datos (indica además la dirección de las posiciones de memoria correspondientes a
cada palabra de memoria). Para aumentar la claridad de la respuesta indica también la codificación hexadecimal del contenido de cada posición de memoria. Los formatos de las diferentes
instrucciones y la codificación de los direccionamientos aparecen en las tablas siguientes:
INSTRUCCIÓN
FORMATO
DESCRIPCIÓN
add src,dst
0110 src dst
[dst] ← [dst]+[src]
bmi et
10000001 d
si N = 1, PC ← [PC]+2d
bne et
00000010 d
si Z = 0, PC ← [PC]+2d
bpl et
10000000 d
si N = 0, PC ← [PC]+2d
cmp{b} src,dst β010 src dst
[src]-[dst]
halt
0000000000000000 detener el procesador
mov{b} src,dst β001 src dst
dst ← [src]
β = 0 en operaciones de word
β = 1 en operaciones de byte
MODO
CODIFICACIÓN
DE DIRECC.
DIR.
IND.
registro
000
001
postincremento 010
011
100
101
predecremento
indexado
110
111
P2. Determina el número de accesos a memoria que supone la ejecución del programa siguiente.
Por accesos a memoria se ha de entender no sólo los accesos a operandos, sino también el fetch
de las diferentes partes de la instrucción. En LA TABLA ADJUNTA DE LA SEGUNDA
HOJA, indica en la columna F los accesos que son de fetch y en las columnas ER y EW las
lecturas y escrituras, respectivamente, generadas con la ejecución de cada instrucción.
V:
W:
Z:
et1:
.WORD 3.,6.,10.
.WORD 1.,0.,4.
.BLKW 3
.REGDEF
.ENTRY
mov #0,R0
mov #0,Z(R0)
mov W(R0),R1
et2:
et3:
cmp R1,#0
beq et3
add V(R0),Z(R0)
dec R1
br et2
add #2,R0
cmp #6,R0
bne et1
halt
Tanto en el problema P1 como en el P2 se valorará la inclusión de comentarios
aclaratorios sobre las respuestas aportadas.
P1.
NOTA: Cada fila de esta tabla representa una palabra de memoria (16 bits)
contenido de la memoria en binario
dir.
(octal)
200
202
204
206
210
et1:
212
214
216
220
222
224
226
et2:
230
232
234
236
240
242
244
et3:
246
250
252
254
256
260
z
b15 b14 b13 b12
0100
0010
0111
0001
0000
1010
0000
1111
1000
1001
0000
1111
1010
0000
1111
1000
1001
0000
1111
0110
0000
0010
0000
0000
0000
}|
b11 b10 b09 b08
0001
0001
1111
0101
0000
1100
0000
1111
0001
1100
0000
1111
1100
0000
1111
0000
1100
0000
1111
0101
0000
0000
0000
0010
0000
{
b07 b06 b05 b04
0111
0101
0000
1100
0000
1111
1000
1111
0000
1111
1000
1110
1111
1000
1110
0000
1111
1000
1101
1100
0000
1101
0000
1110
0000
b03 b02 b01 b00
1011
1001
0000
0011
0000
0111
0000
0100
0011
0111
0000
1100
0111
0000
0111
0011
0111
0000
1111
0011
0001
0111
0100
1101
0000
hexadec.
417B
2159
7F00
15C3
0000
ACF7
0080
FFF4
8103
9CF7
0080
FFEC
ACF7
0080
FFE7
8003
9CF7
0080
FFDF
65C3
0001
20D7
0004
02ED
0000
comentarios
200:V(0); 201:V(1)
202:V(2); 203:V(3)
204:A; 205:B
mov #0,R3
0
cmpb V(R3),A
#V = 200 oct
XA = 10100C2 (1)
bmi et2: d = 00000011C2 (2)
movb V(R3),A
#V = 200 oct
XA0 = 101100C2 (3)
cmpb V(R3),B
#V = 200 oct
XB = 100111C2 (4)
bpl et3: d = 00000011C2 (5)
movb V(R3),B
#V = 200 oct
XB0 = 1011111C2 (6)
add #1,R3
1
cmp R3,#N
N=4
bne et1: d = 11101101C2 (7)
halt
(1)
dir. efectiva A = XA + [P C] ⇒ 204 oct = XA + 220 oct ⇒ 132 = XA + 144 ⇒ XA = −12
(2)
dir. et2 = [P C] + 2d ⇒ 230 oct = 222 oct + 2d ⇒ 152 = 146 + 2d ⇒ d = 3
(3)
dir. efectiva A = XA0 + [P C] ⇒ 204 oct = XA0 + 230 oct ⇒ 132 = XA0 + 152 ⇒ XA0 = −20
(4)
dir. efectiva B = XB + [P C] ⇒ 205 oct = XB + 236 oct ⇒ 133 = XB + 158 ⇒ XB = −25
(5)
dir. et3 = [P C] + 2d ⇒ 246 oct = 240 oct + 2d ⇒ 166 = 160 + 2d ⇒ d = 3
(6)
dir. efectiva B = XB0 + [P C] ⇒ 205 oct = XB0 + 246 oct ⇒ 133 = XB0 + 166 ⇒ XB0 = −33
(7)
dir. et1 = [P C] + 2d ⇒ 212 oct = 260 oct + 2d ⇒ 138 = 176 + 2d ⇒ d = −19
P2.
V: .WORD 3.,6.,10.
W: .WORD 1.,0.,4.
Z: .BLKW 3
.REGDEF
.ENTRY
mov #0,R0
et1: mov #0,Z(R0)
mov W(R0),R1
et2: cmp R1,#0
beq et3
add V(R0),Z(R0)
dec R1
br et2
et3: add #2,R0
cmp #6,R0
bne et1
halt
TOTAL ACCESOS
F
2
3
2
2
1
3
1
1
2
2
1
1
ER
0
0
1
0
0
2
0
0
0
0
0
0
EW
0
1
0
0
0
1
0
0
0
0
0
0
Total
2
4
3
2
1
6
1
1
2
2
1
1
Num.
ejecuciones
1
3
3
8
8
5
5
5
3
3
3
1
103
=
=
=
=
=
=
=
=
=
=
=
=
2
12
9
16
8
30
5
5
6
6
3
1
Conjunt de problemes #10
P1.(a) Indicau quin seria el contingut de la memòria una vegada es codifiquès i emmagatzemès el
següent programa assemblador pel PDP-11 (incloent les dades), suposant que la memòria
s’omple a partir de l’adreça 200 Oct. Per respondre, empra la FULLA TABULADA adjunta,
especificant quina es l’adreça de cada filera i expressant també la corresponent codificació en
hexadecimal per tal d’incrementar la claredat de la resposta. Les taules següents vos indiquen
els formats de les diferents instruccions i la seva codificació.
A:
B:
C:
et:
.BYTE 10,34,26
.BYTE 04,32,12
.WORD 0
.REGDEF
.ENTRY
mov #2,R3
mov #B,R1
movb A(R3),R2
movb (R1)+,R4
add R2,C
add R4,C
sob R3,et
halt
INSTRUCCIÓ
add src,dst
halt
mov{b} src,dst
sob reg,et
FORMAT
0110 src dst
0000000000000000
β001 src dst
0111111 reg q
DESCRIPCIÓ
[dst] ← [dst]+[src]
aturar el processador
dst ← [src]
reg ← [reg] - 1
if [reg] 6= 0,
PC ← [PC] - 2q
β = 0 en operacions de word
β = 1 en operacions de byte
MODE
D’ADREÇAMENT
registre
postincrement
predecrement
indexat
CODIFICACIÓ
DIR. IND.
000
001
010
011
100
101
110
111
P1.(b) Determina el nombre d’accessos a memòria que suposa l’execució del programa següent. Per
accessos a memòria heu d’entendre no només els accessos a operands, sino també el fetch de
les diferents parts de la instrucció. A la TAULA ADJUNTA, indica a la columna F els
accesos que són de fetch i a les columnes ER i EW les lectures i escriptures, respectivament,
provocades per l’execució de cada instrucció. Indica també el nombre de vegades que s’executa
la mateixa instrucció durant l’execució del programa a la columna nombre d’execucions, i el
nombre total d’accessos que ha provocat cada instrucció al cap de l’execució del programa a la
columna nombre total d’accessos.
A:
Z:
N = 3
.WORD 5.,10.,17.
.BLKW 1
.EVEN
.REGDEF
.ENTRY
mov #A,-(sp)
mov #N,-(sp)
mov #Z,-(sp)
jsr pc,sr
add #6,sp
halt
sr:
lp:
mov
mov
mov
clr
add
sob
rts
6(sp),R0
4(sp),R1
2(sp),R2
(R2)
(R0)+,(R2)
R1,lp
pc
0000100 111 110111
de forma que,
q
quan s’executa, l’adreça de bot es determina com [PC] + q. Quant a la instrucció rts pc, no
necessita més per a codificar-se que 0000000010000 111.
NOTA: La codificació de la instrucció jsr pc,sr és
Es valorarà la inclusió de comentaris aclaratoris a les sol.lucions a ambdós apartats
P1.(a) i P1.(b).
P1.(a)
NOTA: Cada filera d’aquesta taula representa una paraula de memòria (16 bits)
contingut de la memòria en binari
z
adreça
200 Oct
202 Oct
204 Oct
206 Oct
210 Oct
212 Oct
214 Oct
216 Oct
220 Oct
222 Oct
224 Oct
226 Oct
}|
b15 b14 b13 b12
0001
0000
0000
0000
0001
0000
0001
0000
1001
0000
1001
0110
b11 b10 b09 b08
1100
0100
1010
0000
0101
0000
0101
0000
1100
0000
0100
0000
{
b07 b06 b05 b04
0000
0001
0001
0000
1100
0000
1100
1000
1100
1000
0100
1011
b03 b02 b01 b00
1000
0110
1010
0000
0011
0010
0001
0011
0010
0000
0100
0111
hexadec.
1C08
0416
0A1A
0000
15C3
0002
15C1
0083
9CC2
0080
9444
60B7
comentaris
1 i 2 comp. d’A
3a comp. d’A i 1a de B
2a i 3a comp. de B
C
mov #2,R3
2
mov #B,R1
adreça inici de B = 203 Oct
movb A(R3),R2
adreça inici d’A = 200 Oct
movb (R1)+,R4
add R2,C
a
a
[P C]
AE
230 Oct
1111
1111
1110
1100
FFEC
232 Oct
0110
0001
0011
0111
6137
z}|{
z}|{
206 = XC0 + 232
⇒ XC0 = 134 − 154 = −20
add R4,C
[P C]
AE
234 Oct
1111
1111
1110
1000
FFE8
z}|{
XC0
z}|{
206 =
+ 236
0
⇒ XC = 134 − 158 = −24
@et
236 Oct
0111
1110
1100
1000
7EC8
240 Oct
0000
0000
0000
0000
0000
z}|{
sob R3,et: 220 = 240 −2d
⇒ d = (160 − 144)/2 = 8
halt
P1.(b)
Instrucció
F
ER
EW
mov #A,-(sp)
mov #N,-(sp)
mov #Z,-(sp)
jsr pc,sr
add #6,sp
halt
sr: mov 6(sp),R0
mov 4(sp),R1
mov 2(sp),R2
clr (R2)
lp: add (R0)+,(R2)
sob R1,lp
rts pc
2
2
2
2
2
1
2
2
2
1
1
1
1
0
0
0
0
0
0
1
1
1
0
2
0
1
1
1
1
1
0
0
0
0
0
1
1
0
0
TOTAL ACCESSOS
Nombre
d’execucions
1
1
1
1
1
1
1
1
1
1
3
3
1
[P C]
z}|{
Nombre total
d’accessos
3×1=3
3×1=3
3×1=3
3×1=3
2×1=2
1×1=1
3×1=3
3×1=3
3×1=3
2×1=2
4 × 3 = 12
1×3=3
2×1=2
43
Conjunt de problemes #11
P1.(a) Indicau quin seria el contingut de la memòria una vegada es codifiquès i emmagatzemès el
següent programa assemblador pel PDP-11 (incloent les dades), suposant que la memòria
s’omple a partir de l’adreça 200 Oct. Per respondre, empra la FULLA TABULADA adjunta,
especificant quina es l’adreça de cada filera, i expressant la codificació també en hexadecimal
per tal d’incrementar la claredat de la resposta. Les taules següents vos indiquen els formats
de les diferents instruccions i la seva codificació.
A:
C:
e1:
.WORD 10,34,26
.WORD 0
.REGDEF
.ENTRY
clr R3
add A(R3),C
add #2,R3
cmp #4,R3
bpl e1
neg C
halt
INSTRUCCIÓ
FORMAT
add src,dst
0110 src dst
bpl et
10000000 d
clr{b} dst
β000101000 dst
cmp{b} src,dst β010 src dst
halt
0000000000000000
neg{b} dst
β000101100 dst
β = 0 en operacions de word
β = 1 en operacions de byte
MODE
D’ADREÇAMENT
registro
postincremento
predecremento
indexado
DESCRIPCIÓ
[dst] ← [dst]+[src]
si N = 0, PC ← [PC]+2d
dst ← 0
[src]-[dst]
aturar el processador
dst ← -[dst]
CODIFICACIÓ
DIR. IND.
000
001
010
011
100
101
110
111
P1.(b) Determina el nombre d’accessos a memòria que suposa l’execució del programa següent. Per
accessos a memòria heu d’entendre no només els accessos a operands, sino també el fetch de
les diferents parts de la instrucció. A la TAULA ADJUNTA, indica a la columna F els
accesos que són de fetch i a les columnes ER i EW les lectures i escriptures, respectivament,
provocades per l’execució de cada instrucció. Indica també el nombre de vegades que s’executa
la mateixa instrucció durant l’execució del programa a la columna nombre d’execucions, i el
nombre total d’accessos que ha provocat cada instrucció al cap de l’execució del programa a la
columna nombre total d’accessos.
V:
W:
Z:
.BYTE 5.,10.,6.,7.
.BYTE 0,0,0,0
.BLKB 1
.EVEN
.REGDEF
.ENTRY
clr R1
clrb Z
mov #V,R0
e2:
e1:
cmpb (R0)+,(R0)
bmi e1
movb #1,W(R1)
incb Z
inc R1
cmp #3,R1
bne e2
halt
Es valorarà la inclusió de comentaris aclaratoris a les sol.lucions a ambdós problemes P1.(a) i P1.(b).
P1.(a)
NOTA: Cada filera d’aquesta taula representa una paraula de memòria (16 bits)
contingut de la memòria en binari
z
adreça
200 Oct
202 Oct
204 Oct
206 Oct
210 Oct
212 Oct
214 Oct
}|
b15 b14 b13 b12
0000
0000
0000
0000
0000
0110
0000
b11 b10 b09 b08
0000
0000
0000
0000
1010
1100
0000
{
b07 b06 b05 b04
0000
0001
0001
0000
0000
1111
1000
b03 b02 b01 b00
1000
1100
0110
0000
0011
0111
0000
hexadec.
0008
001C
0016
0000
0A03
6CF7
0080
comentaris
1 comp. d’A
2a comp. d’A
3a comp. d’A
C
clr R3
add A(R3),C
adreça d’inici d’A = 200 Oct
a
[P C]
AE
216 Oct
1111
1111
1111
0110
FFF6
220
222
224
226
0110
0000
0010
0000
0101
0000
0101
0000
1100
0000
1100
0000
0011
0010
0011
0100
65C3
0002
25C3
0004
Oct
Oct
Oct
Oct
z}|{
z}|{
206 = XC + 220
⇒ XC = 134 − 144 = −10
add #2,R3
2
cmp #4,R3
4
[P C]
@e1
230 Oct
1000
0000
1111
1000
80F8
232 Oct
0000
1011
0011
0111
0B37
bpl e1: 212 = 232 +2q
q = (138 − 154)/2 = −8
neg C
[P C]
AE
234 Oct
1111
1111
1110
1000
FFE8
236 Oct
0000
0000
0000
0000
0000
z}|{
z}|{
z}|{
XC0
z}|{
206 =
+ 236
0
⇒ XC = 134 − 158 = −24
halt
P1.(b)
Instrucció
F
ER
EW
clr R1
clrb Z
mov #V,R0
e2: cmpb (R0)+,(R0)
bmi e1
movb #1,W(R1)
incb Z
e1: inc R1
cmp #3,R1
bne e2
halt
1
2
2
1
1
3
2
1
2
1
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
1
1
0
0
0
0
TOTAL ACCESSOS
Nombre
d’execucions
1
1
1
3
3
1
1
3
3
3
1
Nombre total
d’accessos
1
3
2
3
3
4
4
3
6
3
1
33
Descargar