Ayudantia2 Solucion - Pontificia Universidad Católica de Chile

Anuncio
Pontificia Universidad Católica de Chile
Escuela de Ingenierı́a
Departamento de Ciencia de la Computación
IIC2342 Arquitectura de Computadores (II/2009)
Ayudantı́a N◦ 2 : Solución
1. Solución:
i
j
temp
return
loop1:
loop2:
no:
STX
LIT
STA
LIT
SUB
ADD
BGE
return
0x00h
i
0x01h
N
i
end1
LDA
STA
LIT
ADD
STA
LDA
SUB
BEQ
i
min
;min = i
0x01h
i
j
; j = i + 1
N
j
end2 ; salto si N-j == 0
LDX min
LDAI a
STA temp
LDX j
LDAI a
SUB temp
BGE no
LDA j
STA min
LDX min
LDAI a
;guardamos X
;i=0
;salto si (i -(N-1))!<0
; temp = a[i];
;salto si (a[j]-a[min]!<0)
;min = j
1
STA temp
LDX i
LDAI a
LDX min
STAI a
LDA temp
LDX i
STAI a
LIT
ADD
STA
BRA
0x01h
j
j
loop2
LIT
ADD
STA
BRA
0x01h
i
i
loop1
; temp = a[min]
;a[min] = a[i]
;a[i] = temp
; j++
end2:
end1:
;i++
LDX return ; restauramos X
RTS
2. Solución:
num
uno
STA
LIT
STA
LDA
AND
BNE
LDA
ADD
ADD
RTS
num
00000001b
uno
num
uno
impar ; hay que sumar 1, caso par hay que sumar dos
num
uno
uno
impar:
LDA num
ADD uno
RTS
2
3. Solución:
Hamm_Dist BRA
Val1
Val2
Result
Aux_Val
Num_1
;Start
;Valor 1
;Valor 2
;Resultado
;Valor Auxiliar
;Dato: Num_1 = 1
Start
LIT
STA
LDA
XOR
0
Result
Val1
Val2
;Ac = 0
;Result = 0
;Carga en Ac el valor Val1
;Ac = Val1 xor Val2 --> los unos son los bits diferentes
Loop
STA
LIT
AND
BEQ
LDA
ADD
STA
Aux_Val
00000000001b
Aux_Val
Update
Result
Num_1
Result
;Guardo el valor de Ac en la "variable" auxiliar
;Ac = 0001h
;Ac = 1 si el bit menos significativo de Aux_Val era 1
;Si Aux_Val = 0 no aumento Result y salto a Update
;Ac = Result
;Ac = Result + 1
;Guardo el valor actualizado en "Result"
Update
LDA Aux_Val
SRA
BNE Loop
LDA Result
RTS
;Ac = Aux_Val
;Shifteo Ac hacia la derecha
;Si Ac (Aux_Val shifteado) = 0 termino, o vuelvo al loop
;Ac = Result
;Retorno con el resultado en Ac
3
Descargar