Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 2 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.12.07
Prihlásený: 22.05.08
Príspevky: 2
Témy: 1
Príspevok NapísalOffline : 07.12.2007 19:16

Zdravim Vas

Uz dlhsiu dobu si lamem hlavu nad takymto programom ...

- nacitam z klavesnice desatinne cislo (|x| <1) v desiatkovej sustave
- prevediem ho do sestnastkovej sustavy a vypisem ...

napr.:

vstup: 0.23
vystup: 0.3AE147AE1

Ma niekto nejaky napad ako by to malo vyzerat? Pripadne tu mozem pastnut to co som doteraz vypotil ...

EDIT:
takze pripajam to co som zatial vytvoril ... ale nefunguje to tak ako ma ...
Kód:
TITLE prevod.asm
.MODEL SMALL
.STACK 400
.DATA
      lf       DB 13
      cr       DB 10
      output1  DB 'Zadane cislo je $'
      output2  DB ' v sestnastkovej sustave.',13,10,'$'
      char     DB 0
      kelosoli  DB 0,0
      tabulka  DB '0123456789ABCDEF'
.CODE


newline MACRO           ;makro noveho riadku
        push ax
        push dx
        mov ah,02h
        mov dl,CR
        int 21h
        mov dl,LF
        int 21h
        pop dx
        pop ax
        ENDM

ukaz16kovo PROC   ;procedura na zobrazenie cisla v decimalnom kode parametrom je cislo ulozene v bufferi
     push bp       ;ulozenie ukazovatela na aktualnu poziciu zasobnika
     mov bp,sp
     push ax        ;na zaciatku procedury ulozime do zasobnika stare obsahy registrov
     push bx
     push cx
     push dx
    
     mov ah,02h
     mov dl,'0'
     int 21h
     mov dl,'.'     ;kedze ide o desatinne cislo tak najprv napisat 0.
     int 21h

    mov cx,00h
    mov dh,00h      ;pripravenie parametrov
    mov bx,0000h      
    mov ax,[bp+4]   ;nacitanie zo zasobnika cislo na zobrazenie

nocheinmal:
     
      mov cx,16
       mov dx,0000h
      mul cx        ;nasobenie sestnastkou
      add dl,48     ;pripocitanie ASCII nuly
       push ax
       mov ah,02h    ;vypis danej cislice v dl na obrazovku
       int 21h
       pop ax      
      cmp ax,00h
      jnz nocheinmal
      
          pop dx
     pop cx           ;vratenie povodnych obsahov registrov
     pop bx
     pop ax
     pop bp
    
     ret 2    
         
ukaz16kovo ENDP

getc PROC NEAR    ;procedura na nacitanie znaku z klavesnice
     push bp        ;parametrom procedury je offset buffera na ulozenie znaku
    mov bp,sp
     push ax          ;na zaciatku procedury ulozime do zasobnika stare obsahy registrov
     push bx
    
     mov bx,[bp+4]  ;nacitanie z zasobnika offset buffera na ulozenie znaku
     mov ah,01h     ;DOS funkcia na nacitanie znaku z klavesnice
     int 21h          ;volanie prerusenia   
     mov [bx],al      ;ulozenie znaku do buffera
    cmp al,lf        ;porovnanie s koncom riadku

     pop bx  ;vratenie povodnych obsahov registrov
     pop ax
     pop bp
    
     ret 2    
getc ENDP


start:   
          mov ax,@DATA  ;ulozenie datoveho segmentu
          mov ds,ax     ;do ds
           mov dx,0000h    
          mov bx,OFFSET char   ;pripravenie prametra procedury getc
          mov ax,2000h

cyklus:     
      push bx       ;sprostredkovanie parametra procedure getc cez zasobnik
       call getc      ;volanie nacitania znaku
      jz navestie1   ;skoc na vypis

       mov cx,[bx]
       cmp cl,'.'     ;porovnanie ci moze zacat nacitavat cislo lebo desatinne miesta idu od bodky
       jz nastav
      
       cmp dl,01h     ;ci treba este nacitavat ci sa uz neprekrocila hranica poctu znakov
       jz cyklus

       cmp dh,01h     ;nastavenie aby viac uz necitalo znaky
       jnz cyklus
      
       cmp cl,'0'     ;kontrola intervalu cislic
       js navestie1
       cmp cl,'9'
       jns navestie1
      
       push ax
       push bx
       push dx
       mov ch,00h
       sub cl,30h
       mul cx
       mov bx,OFFSET kelosoli
       mov cx,[bx]
       add cx,ax       ;pripocitanie vysledneho cisla
       mov [bx],cx
       pop dx
       pop bx
       pop ax
       ror ax,3       ;rotacia o tri bity vpravo
       cmp ax,4000h
       jz nastavd
      jmp cyklus   ;skoc na nacitanie a testovanie noveho znaku

nastav:     
      mov dh,01h
       jmp cyklus

nastavd:   
      mov dl,01h
       jmp cyklus


navestie1:  newline           ;volanie makra newline t.j. novy riadok
       mov ah,09h             ;DOS funkcia zobrazenia retazca na obrazovku
       mov dx,OFFSET output1  ;do dx dame offset zaciatku retazca
       int 21h                ;volanie prerusenia

      mov bx,OFFSET kelosoli
       mov ax, [bx]           ;pripravenie prametra procedury ukaz16kovo   
            push ax           ;sprostredkovanie parametra procedure cez zasobnik
            call ukaz16kovo  ;volanie zobrazenia cisla v hexa kode     

       mov ah,09h
       mov dx,OFFSET output2
       int 21h                ;volanie prerusenia
    
         
definitiv:mov ax,4c00h        ;koniec programu
          int 21h             ;volanie prerusenia
 end      start



Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.12.07
Prihlásený: 22.05.08
Príspevky: 2
Témy: 1
Príspevok Napísal autor témyOffline : 08.12.2007 10:41

Pomohol by mi s tym niekto ??? Ponukam financnu odmenu ... !!!


Odpovedať na tému [ Príspevkov: 2 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. assembler 8086- prevod z desiatkovej do 16-tkovej...help..

v Assembler, C, C++, Pascal, Java

0

1205

18.04.2010 20:15

erik.666 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler - Rozdiel medzi dvoma casovymi udajmi

v Assembler, C, C++, Pascal, Java

1

558

10.12.2009 19:50

stopa27 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler

v Assembler, C, C++, Pascal, Java

0

792

31.03.2009 20:10

bbeni Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ASSEMBLER

v Assembler, C, C++, Pascal, Java

8

1723

13.03.2007 20:39

My-reC Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. assembler

v Assembler, C, C++, Pascal, Java

1

1493

10.11.2006 18:14

Marco Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler

v Assembler, C, C++, Pascal, Java

0

709

01.04.2009 21:02

bbeni Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler úloha

v Assembler, C, C++, Pascal, Java

0

792

02.02.2008 7:37

HT Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zacat assembler

v Assembler, C, C++, Pascal, Java

15

1107

16.12.2011 23:24

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler Atmega8

v Assembler, C, C++, Pascal, Java

5

1158

17.10.2009 17:13

Logik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler 8086

v Assembler, C, C++, Pascal, Java

3

606

21.04.2009 20:05

Fico Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler binary

v Assembler, C, C++, Pascal, Java

23

1206

18.04.2012 7:17

Fico Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kalkulačka - assembler

v Assembler, C, C++, Pascal, Java

0

677

10.11.2011 18:54

Reverser Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. aky assembler?

v Assembler, C, C++, Pascal, Java

4

760

21.11.2007 9:49

euthanan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler 8080

v Assembler, C, C++, Pascal, Java

5

1291

02.04.2010 20:44

Fico Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler 8086

v Assembler, C, C++, Pascal, Java

2

610

27.03.2009 20:33

Ivan11114 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. assembler zaciatky

v Assembler, C, C++, Pascal, Java

5

953

03.09.2010 15:14

Fico Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra