Cátedra: Saubidet
Fecha: Segunda Oportunidad - Segundo Cuatrimestre 2005
Día: 29/12/2005
Codificar una rutina en Assembler para IBM 370 que realice lo siguiente:
HAMMING PPIO 3
L 7,0(1) //R7 = Dir(Byte)
ICM 5,8,0(7) //R5 = Byte
SLL 5,1 //Pierdo el 0 extra
LA 6,1
LA 8,BITS
LA 9,7 //Cantidad de bits a analizar
COMPARA C 5,=F'0'
BL UNO
B PROX
UNO ST 6,0(8) //Proxima palabra
SLL 5,1
PROX BCT 9,COMPARA
LA 11,0 //Sumatoria de bits de paridad erronea
BIT1 LA 8,0 //Sumatoria de bits para c/ bit de paridad
LA 6,BITS
A 8,0(6) //Bits analizados por bit de paridad 1
A 8,8(6)
A 8,16(6)
A 8,24(6)
SRDL 8,1 //El último bit determina par/impar
C 9,=F’0’
BNL BIT2
A 11,=F’1’
BIT2 LA 8,0
A 8,4(6) //Bits analizados por bit de paridad 2
A 8,8(6)
A 8,20(6)
A 8,24(6)
SRDL 8,1
C 9,=F’0’
BNL BIT4
A 11,=F’2’
BIT4 LA 8,0
A 8,12(6) //Bits analizados por bit de paridad 4
A 8,16(6)
A 8,20(6)
A 8,24(6)
SRDL 8,1
C 9,=F’0’
BNL FINCOMP
A 11,=F’4’
FINCOMP C 11,=F’0’ //R11 = Posición bit erroneo
BE FIN
L 7,0(1)
ICM 5,8,0(7)
SLDL 4,0(11) //Dejo el bit erroneo al comienzo de R5
SLL 4,1 //Hago espacio para el bit a corregir
C 5,=F’0’
BL ESCERO //El bit era 1 y pasa a 0
A 4,=F’1’ //El bit era 0 y pasa a 1
ESCERO SLL 5,1 //Pierdo el bit erroneo, y lleno con 0
LA 8,7 //¿Cuántos bits faltan desplazar?
SR 8,11
SLDL 4,0(8)
STCM 4,1,0(7) //Devuelvo el byte corregido
FIN CHAU
BITS DC 7F’0’
END
Notas