Programming - when the calculator is contraindicated in BASIC.
(C) WLODEK BLACK
Hello friends. I called again to load on your holidays ...
Congratulations to all on Victory!
Continues the theme of the session ...
WHEN
BASIC CALCULATOR
NOT for
There are situations when the calculation, with sufficient
complex (as compared with elementary actions like "add"
or "subtract"), done using a calculator BASIC
impractical or impossible (for example, when you can not
call the subroutine from ROM).
Here's how to print on the screen in decimal form in
band # 0000 - # FFFF:
Input: HL = number
DENARY LD DE, 10000; determine the number of times for 10000
CALL DIGIT
LD DE, 1000; - "- 1000
CALL DIGIT
LD DE, 100; - - 100
CALL DIGIT
LD DE, 10; - - 10
CALL DIGIT
LD A, L; remaining units
INC A; adds one
JR DIGIT2
DIGIT XOR A; zero the counter and simultaneously. reset the
flag C DIGIT1 SBC HL, DE; subtract the loop until the loan
INC A; building up counter
JR NC, DIGIT1; cycle until the loan
ADD HL, DE; restore balance
DIGIT2 ADD A, 47; we add 47 for obtaining me the code of the
symbol digit
JP PRINT; print figure
Algorithm procedure DENARY simple: consistently determining
how many times, 10000, 1000, etc. contained in the original
number, count all the decimal digits sequentially
the number of bits and print them. INC A team does not affect
the flag transport, so it can be used after SBC HL, DE. On
DIGIT2 tag is a team of ADD A, 47. Why not 48, because the code
symbol digit = value + 48 digits? The fact that the counter on
A register will always make an extra turn, that is, it
Output from subroutine DIGIT will always be one greater
than "necessary." It is this extra unit, and we compensate by
adding 47, not 48. But when you print discharge unit, when we
take number of units directly from the register L, without
using a subroutine DIGIT, extra edinichki does not occur, and
we do adds performing INC A.
Print PRINT procedure should not alter HL.
But one of the solutions the opposite problem - getting the
numbers on his record in the form of numbers. As an example, I
will procedure "CALC" from the program AUTOHISTORIZER-2. In the
"History" server, each line looks similar to this here:
4628902
Other articles:
|
|
|
|
Programming - when the calculator is contraindicated in BASIC.
|
|
|
|
|
|
|
|
|
|
|