Red de conocimiento informático - Computadora portátil - El lenguaje ensamblador del microcontrolador 51 realiza una división de 16 bits

El lenguaje ensamblador del microcontrolador 51 realiza una división de 16 bits

;Programa de división sin signo de doble byte (R5R2R3R4/R6R7)=(R2)R3R4 resto R6R7

;Entrada: R5, R2, R3, R4, R6, R7

; p>

; Recursos ocupados: ACC, B, F0

; Requisito de pila: 4 bytes

; R6, R7, OV

NDIV42: MOV A, R1

PUSH A

MOV B, #00H

NDV421: MOV A , R2

p>

CLR C

SUBB A, R7

MOV R1, A

MOV A, R5

SUBB A, R6

JC NDV422

MOV R5, A

MOV A, R1

MOV R2, A

INC B

SJMP NDV421

NDV422: PUSH B

MOV B, #10H

NDV423: CLR C

MOV A, R4

RLC A

MOV R4, A

MOV A, R3

RLC A

MOV R3, A

MOV A, R2

RLC A

MOV R2, A

XCH A, R5

RLC A

XCH A, R5

MOV F0, C

CLR C

SUBB A, R7

MOV R1, A

MOV A, R5

SUBB A, R6

JB F0, NCV424

JC NDV425

NCV424: MOV R5, A

MOV A, R1

MOV R2, A

INC R4

NDV425: DJNZ B, NDV423

POP A

CLR OV

JNZ NDV426

SETB OV

NDV426: XCH A, R2

MOV R7, A

MOV A, R5

MOV R6, A

POP A

MOV R1, A

RET