Rev 551 | Rev 967 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 551 | Rev 822 | ||
---|---|---|---|
Line 466... | Line 466... | ||
466 | jne no_neg |
466 | jne no_neg |
467 | mov [sign],1 |
467 | mov [sign],1 |
Line 468... | Line 468... | ||
468 | 468 | ||
469 | no_neg: |
469 | no_neg: |
470 | fld [tmp2] |
- | |
471 | fist [integer] |
- | |
472 | fisub [integer] |
- | |
473 | fldcw [controlWord] |
470 | fld [tmp2] |
474 | cmp byte [sign], 0 ; change fraction to positive |
471 | cmp byte [sign], 0 ; change fraction to positive |
475 | je no_neg2 |
472 | je no_neg2 |
Line 476... | Line 473... | ||
476 | fchs |
473 | fchs |
- | 474 | ||
- | 475 | no_neg2: |
|
- | 476 | fadd [smallValueForRounding] |
|
477 | 477 | fist [integer] |
|
478 | no_neg2: |
478 | fisub [integer] |
Line 479... | Line 479... | ||
479 | mov [res],0 ; convert 6 decimal numbers |
479 | mov [res],0 ; convert 6 decimal numbers |
480 | mov edi,6 |
480 | mov edi,6 |
Line 497... | Line 497... | ||
497 | dec edi |
497 | dec edi |
498 | jz real_done |
498 | jz real_done |
499 | jmp newd |
499 | jmp newd |
Line 500... | Line 500... | ||
500 | 500 | ||
- | 501 | real_done: |
|
501 | real_done: |
502 | fldcw [controlWord] |
502 | mov eax,[res] |
503 | mov eax,[res] |
503 | mov [decimal],eax |
504 | mov [decimal],eax |
504 | cmp [integer],0x80000000 |
505 | cmp [integer],0x80000000 |
505 | jne no_error |
506 | jne no_error |
Line 508... | Line 509... | ||
508 | 509 | ||
509 | no_error: |
510 | no_error: |
510 | mov [dsign],byte '+' |
511 | mov [dsign],byte '+' |
511 | cmp [sign],byte 0 ; convert negative result |
512 | cmp [sign],byte 0 ; convert negative result |
512 | je no_negative |
513 | je no_negative |
513 | mov eax,[integer] |
514 | ; mov eax,[integer] |
514 | not eax |
515 | ; not eax |
515 | inc eax |
516 | ; inc eax |
516 | mov [integer],eax |
517 | ; mov [integer],eax |
Line 517... | Line 518... | ||
517 | mov [dsign],byte '-' |
518 | mov [dsign],byte '-' |
518 | 519 | ||
519 | no_negative: |
520 | no_negative: |
Line 864... | Line 865... | ||
864 | id db 0x0,0 |
865 | id db 0x0,0 |
865 | res dd 0 |
866 | res dd 0 |
866 | trans1 dq 0 |
867 | trans1 dq 0 |
867 | trans2 dq 0 |
868 | trans2 dq 0 |
868 | controlWord dw 1 |
869 | controlWord dw 1 |
- | 870 | smallValueForRounding dq 0.0000005 ; 1/2 from last significant digit |
|
869 | multipl: dd 10,16,2 |
871 | multipl: dd 10,16,2 |
Line 870... | Line 872... | ||
870 | 872 | ||
871 | dsign: |
873 | dsign: |
872 | muuta1 db '+0000000000.000000' |
874 | muuta1 db '+0000000000.000000' |