September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -0,0 +1,44 @@
|
|||
/* ARM assembly Raspberry PI */
|
||||
/* program formatNum.s */
|
||||
/* use C library printf ha, ha, ha !!! */
|
||||
/* Constantes */
|
||||
.equ EXIT, 1 @ Linux syscall
|
||||
/* Initialized data */
|
||||
.data
|
||||
szFormat1: .asciz " %09.3f\n"
|
||||
.align 4
|
||||
sfNumber: .double 0f-7125E-3
|
||||
sfNumber1: .double 0f7125E-3
|
||||
|
||||
/* UnInitialized data */
|
||||
.bss
|
||||
.align 4
|
||||
|
||||
/* code section */
|
||||
.text
|
||||
.global main
|
||||
main: @ entry of program
|
||||
push {fp,lr} @ saves registers
|
||||
|
||||
ldr r0,iAdrszFormat1 @ format
|
||||
ldr r1,iAdrsfNumber @ number address
|
||||
ldr r2,[r1] @ load first 4 bytes
|
||||
ldr r3,[r1,#4] @ load last 4 bytes
|
||||
bl printf @ call C function !!!
|
||||
ldr r0,iAdrszFormat1
|
||||
ldr r1,iAdrsfNumber1
|
||||
ldr r2,[r1]
|
||||
ldr r3,[r1,#4]
|
||||
bl printf
|
||||
|
||||
|
||||
|
||||
100: @ standard end of the program
|
||||
mov r0, #0 @ return code
|
||||
pop {fp,lr} @restaur registers
|
||||
mov r7, #EXIT @ request to exit program
|
||||
swi 0 @ perform the system call
|
||||
|
||||
iAdrszFormat1: .int szFormat1
|
||||
iAdrsfNumber: .int sfNumber
|
||||
iAdrsfNumber1: .int sfNumber1
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
o_form("/w9s0/\n", 7.125);
|
||||
o_form("/w12d6p6/\n", -12.0625);
|
||||
o_form("/w12d6p6/\n", 7.125);
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
procedure writeInFixedFormat(n: real);
|
||||
const
|
||||
wholeNumberPlaces = 5;
|
||||
fractionalPlaces = 3;
|
||||
zeroDigit = '0';
|
||||
negative = '-';
|
||||
var
|
||||
signPresent: boolean;
|
||||
i: integer;
|
||||
begin
|
||||
// NOTE: This does not catch “negative” zero.
|
||||
signPresent := n < 0.0;
|
||||
if signPresent then
|
||||
begin
|
||||
write(negative);
|
||||
n := abs(n);
|
||||
end;
|
||||
|
||||
// determine number of leading zeros
|
||||
i := wholeNumberPlaces;
|
||||
if n > 0 then
|
||||
begin
|
||||
i := i - trunc(ln(n) / ln(10));
|
||||
end;
|
||||
|
||||
for i := i - 1 downto succ(ord(signPresent)) do
|
||||
begin
|
||||
write(zeroDigit);
|
||||
end;
|
||||
|
||||
// writes n with
|
||||
// - at least 0 characters in total
|
||||
// - exactly fractionalPlaces post-radix digits
|
||||
// rounded
|
||||
write(n:0:fractionalPlaces);
|
||||
end;
|
||||
Loading…
Add table
Add a link
Reference in a new issue