Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Autor | Správa |
---|
Registrovaný: 07.12.07 Prihlásený: 22.05.08 Príspevky: 2 Témy: 1 | 1 |
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
|
|
Registrovaný: 07.12.07 Prihlásený: 22.05.08 Príspevky: 2 Témy: 1 | 1 |
Pomohol by mi s tym niekto ??? Ponukam financnu odmenu ... !!!
|
|
Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 0 | 1244 | 18.04.2010 20:15 erik.666 | | v Assembler, C, C++, Pascal, Java | 1 | 592 | 10.12.2009 19:50 stopa27 | | v Assembler, C, C++, Pascal, Java | 0 | 828 | 31.03.2009 20:10 bbeni | | v Assembler, C, C++, Pascal, Java | 8 | 1787 | 13.03.2007 20:39 My-reC | | v Assembler, C, C++, Pascal, Java | 1 | 1537 | 10.11.2006 18:14 Marco | | v Assembler, C, C++, Pascal, Java | 0 | 746 | 01.04.2009 21:02 bbeni | | v Assembler, C, C++, Pascal, Java | 1 | 563 | 16.04.2013 22:34 XOLOO | | v Assembler, C, C++, Pascal, Java | 0 | 829 | 02.02.2008 7:37 HT | | v Assembler, C, C++, Pascal, Java | 15 | 1182 | 16.12.2011 23:24 Ďuri | | v Assembler, C, C++, Pascal, Java | 5 | 1208 | 17.10.2009 17:13 Logik | | v Assembler, C, C++, Pascal, Java | 3 | 644 | 21.04.2009 20:05 Fico | | v Assembler, C, C++, Pascal, Java | 23 | 1272 | 18.04.2012 7:17 Fico | | v Assembler, C, C++, Pascal, Java | 0 | 719 | 10.11.2011 18:54 Reverser | | v Assembler, C, C++, Pascal, Java | 4 | 785 | 21.11.2007 9:49 euthanan | | v Assembler, C, C++, Pascal, Java | 5 | 1339 | 02.04.2010 20:44 Fico | | v Assembler, C, C++, Pascal, Java | 2 | 654 | 27.03.2009 20:33 Ivan11114 |
|