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