Red de conocimiento informático - Conocimiento de la instalación - Ayuda, ¿cómo hacer una calculadora con microcontrolador?

Ayuda, ¿cómo hacer una calculadora con microcontrolador?

I. División:

datos divdll 20h; definir unidad divisoria

datos divdlh 21h

datos divdhl 22h

datos dlvdhh 23h p>

datos divl 24h; define la unidad de dividendo

datos divh 25h

datos templ 26h; define la unidad restante

datos temph 27h;

divd: push acc

push b

mov a,divdh ;Determinar si el divisor es cero String 5

orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a, orl a , orl b.

divl

jnz divd0

setb ov ;el divisor es cero, establece el indicador de desbordamiento

pop b

pop acc

ret

divd0: mov templ,#00h ;el divisor no es cero, haz los cálculos

mov templ, #00h

mov temph, #00h

mov a, divdh.#00h

mov b,#20h ;establecer recuento de bucles

divd1:clr c ;bit de avance, unidad restante y p>

mov a,divdll ;divisor unidad por unidad

rlc a ; desplazamiento circular hacia la izquierda

Cadena 8

mov divdll,a< / p>

mov a,divdlh

rlc a

mov divdlh,a

mov a,divdhl

rlc a

mov divdhl, a

mov a,divdhh

rlc a

mov divdhh,a

mov a ,templ

rlc a

mov templ,a

xch a,temph

rlc a

xch a,temph

mov f0,c ; guardar llevar

clr c<

subb a,divl ;restar divisor del resto

Cadena 9

mov r7,a

mov a,temph

subb a,divh

anl c,/f0 ;Determinar si hay suficiente resto para restar

jc divd2 ;No es suficiente para restar, pasa al siguiente dígito

mov templ,r7 ;Suficiente para restar, actualiza la celda restante

mov temph,a

inc divdll ;cociente en 1

divd2:djnz b,divd1

clr ov

pop b

pop acc

ret

end

Para obtener una explicación del código anterior, visite la siguiente URL:

/dianqi/dpj/13517.html

II.

La multiplicación de código BCD solo puede hacer mucho. Si primero lo cambia a hexadecimal, luego haga la multiplicación hexadecimal. Y finalmente ajústelo al código BCD, que será más eficiente.