Red de conocimiento informático - Computadora portátil - Cómo implementar sumas y restas de 32 bits en un microcontrolador de 8 bits

Cómo implementar sumas y restas de 32 bits en un microcontrolador de 8 bits

Cuando hablas de implementar sumas y restas de 32 bits, te refieres a operaciones de doble byte.

;Subrutina de resta de doble byte

;Parámetros : R6R5, R4R3

; Devolver: R2R3

DSUB: MOV A, R5

CLR C

SUBB A, R3

MOV R3, A

MOV A, R6

SUBB A, R4

MOV R2, A

RET

; subrutina de adición de doble byte

; Parámetros: R6R5, R4R3

; Retorno: R2R3

LADD: MOV A, R5

AÑADIR A, R3

MOV R5, A

MOV A, R6

AÑADIR A, R4

MOV R6, A

MOV A, R5

MOV R3, A

MOV A, R6

MOV R2, A

RET

; Subrutina de multiplicación de doble byte

; Parámetros: R6R5, R4R3

; >DMUL: MOV A, R5;

MOV B, R3

MUL AB; A prepara el multiplicador

MOV R1, B; almacenamiento temporal alto R1

MOV B, R6

MUL AB; > AGREGAR A, R1; el bit bajo del producto más el bit alto del producto se almacenan temporalmente en R4

MOV R4, A

CLR A; >

ADDC A, B; el acarreo del bit alto más el bit bajo se almacena en R5

MOV R1, A

MOV A, R4

MOV B, R5

MUL AB; R5*R4

AGREGAR A, R1; agregue R5 al bit bajo del tercer producto y almacene temporalmente R6

XCH

A, R4

MOV FO, C; guardar bit de transporte

MOV A, R6

MUL AB; p> ADD A, R1; cuarta vez Agregue R5 al bit bajo del producto y almacene R5

MOV R1, A

CLR A

MOV ACC .0, C

MOV C, FO

ADDC A, B; el acarreo del bit alto más el bit bajo del cuarto producto se almacena en R4

MOV R2, A

RET

; Programa de división de doble byte

; Parámetros: R2R1R4R3, R6R5

; R4R3 (cociente), R2R1 (resto)

DDIV: MOV A, R1

CLR C

SUBB A, R5

MOV A, R2

SUBB A, R6

JNC DIV1; El byte de orden superior del dividendo es mayor que el divisor, por lo que se transfiere al procesamiento de desbordamiento.

MOV B, DIV1; Ejecutar división sin desbordamiento, establecer el número de ciclos

MOV B, #16; El dividendo se transfiere al procesamiento de desbordamiento

Desplazar un bit a la izquierda, enviar cero a el bit bajo

DDIV2: CLR C

MOV A, R3

RLC A

MOV R3, A

MOV A, R2

RLC A

MOV R2, A

MOV A, R1

RLC A

MOV R1, A

XCH A, R2

RLC A

XCH A, R2

MOV FO, C; proteger el bit más alto desplazado

CLR C

SUBB A, R5 el bit alto desplazado es 1, suficiente para reducir DV2

MOV A, R2;

SUBB

A, R6

JB FO, DV2

JC DV3

DV2: MOV R2, A; devolver el resultado de la resta

MOV A, R0

MOV R1, A

INC R7; el anterior

DV3: DJNZ B, DV2 no es suficiente para reducir, el número de ciclos es. -1

CLR FO; ejecución normal sin desbordamiento, FO=0

RET

DIV1: SETB FO; establecer indicador de desbordamiento

RET