Ayuda, ¿cómo hacer una calculadora con microcontrolador?
datos divdll 20h; definir unidad divisoria
datos divdlh 21h
datos divdhl 22h
datos dlvdhh 23h p> 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> 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: p>
/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.