Está en la página 1de 4

1.

ESQUEMA

Los estudiantes elaboran el esquema.

2. ALGORITMO

A. Variables y datos

NBITS constante, 8
dividendo 1 byte
divisor 1 byte
cociente 1 byte c.i.: 0
residuo 1 byte c.i.: 0
contador 1 byte c.i.: 8

B. Procedimiento

1. iniciar variables

 contador
 borrar cociente y residuo

2. generar residuo y cociente

 desplazar dividendo
 e insertar en residuo
 actualizar cociente insertando 0

3. ¿contiene?

 restar divisor de residuo


 si no contiene, 0 al cociente
 si contiene, 1 al cociente
 incrementar cociente
 actualizar residuo

4. ¿último?

 contabilizar
 no es último, volver a 2.

5. salir
3. FLUJOGRAMA
4. MODELO DE PROGRAMACIÓN 1

dividendo dendo 1 byte RAM


divisor disor 1 byte RAM
cociente conte 1 byte RAM c.i.: 0
residuo resid 1 byte RAM c.i.: 0
contador C c.i.: 8
borrador A

5. CÓDIGO FUENTE

;*** División de dos octetos no signados

;*** segmento de datos


.dseg
.org 0
NBITS .equ 8

dendo .rb 1 ; dividendo


disor .rb 1 ; divisor
conte .rb 1 ; cociente
resid .rb 1 ; residuo

;*** segmento de código


.cseg
.org 0x10

; iniciar variables
lda c,#NBITS ; contador
clr conte ; borrar cociente y residuo
clr resid

; generar residuo y cociente


sgte_bit:
dai dendo ; desplazar dividendo 1 bit
rci resid ; e insertar en residuo
dai conte ; generar cociente

; ¿contiene?
lda a,resid ; restar divisor de residuo
sub a,disor
bnc cuenta ; no contiene, 0 al cociente
inc conte ; sí contiene, 1 al cociente
sta a,resid ; actualizar residuo

; ¿último?
cuenta:
dec c ; contabilizar
bnz sgte_bit ; no, siguiente bit
hlt
.fin
4. MODELO DE PROGRAMACIÓN 2

elem 4 bytes RAM c.i.: elem+2=0, elem+3=0 ; dividendo, divisor, cociente, residuo
cont C c.i.: 8 ; contador

5. CÓDIGO FUENTE

;*** División de dos octetos no signados

;*** segmento de datos


.dseg
.org 0
; constantes
NBITS .equ 8 ; cuenta
DENDO .equ 0 ; desplazamientos para el puntero
DISOR .equ 1
CONTE .equ 2
RESID .equ 3

; variables: dividendo, divisor, cociente y residuo


elem .rb 4 ; cuatro elementos

;*** segmento de código


.cseg
.org 0x10

; iniciar variables
lda c,#NBITS ; contador
lda ix,#elem ; índice
clr a ; borrar cociente y residuo
sta a,ix+CONTE
sta a,ix+RESID

; generar residuo y cociente


sgte_bit:
dai ix+DENDO ; desplazar dividendo 1 bit
rci ix+RESID ; e insertar en residuo
dai ix+CONTE ; generar cociente

; ¿contiene?
lda a,ix+RESID ; restar divisor de residuo
sub a,ix+DISOR
bnc cuenta ; no contiene, 0 al cociente
inc ix+CONTE ; sí contiene, 1 al cociente
sta a,ix+RESID ; actualizar residuo
; ¿último?
cuenta:
dec c ; contabilizar
bnz sgte_bit ; no, siguiente bit
hlt
.fin

También podría gustarte