[ Príspevok: 1 ] 
AutorSpráva
Offline

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

Registrovaný: 15.03.10
Prihlásený: 18.04.10
Príspevky: 3
Témy: 3 | 3

caute, potreboval by som pomôcť so zadanim. neako mi to nejde vie to niekto upraviť.. :D pls

Text zadania:

Načítajte zo súboru reťazec znakov ukončený znakom "konca súboru". Nech tento reťazec predstavuje celé číslo v desiatkovej sústave. Preveďte toto číslo do šestnástkovej sústavy a vytlačte výsledok.

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


 [ Príspevok: 1 ] 


assembler 8086- prevod z desiatkovej do 16-tkovej...help..



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

c++ prevod z desiatkovej do dvojkovej sustavy

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

3

3914

11.03.2009 14:38

johny3212

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

Assembler 8086

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

11

1328

19.05.2010 22:38

JR55

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

Assembler 8086

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

3

643

21.04.2009 20:05

Fico

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

Assembler 8086

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

2

654

27.03.2009 20:33

Ivan11114

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

Assembler 8086 retazec odzadu

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

5

764

26.04.2009 13:23

bbeni

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

Assembler, procesor 8086, zistenie veľkosti súboru

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

0

386

15.03.2014 16:02

wink624

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

Assembler 8086-porovnsvanie zo znakmy 1 slova

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

2

883

29.04.2010 22:04

baky

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

Assembler - prevod medzi sustavami

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

1

2341

08.12.2007 10:41

jarda

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

8086

v Operačné systémy Microsoft

6

596

07.06.2008 20:18

prandof

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

pomoc z asemblerom 8086

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

0

282

24.04.2013 14:02

max18

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

ASSEMBLER

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

8

1787

13.03.2007 20:39

My-reC

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

Assembler

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

0

828

31.03.2009 20:10

bbeni

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

assembler

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

1

1537

10.11.2006 18:14

Marco

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

Assembler

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

0

746

01.04.2009 21:02

bbeni

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

Assembler binary

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

23

1272

18.04.2012 7:17

Fico

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

Assembler Atmega8

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

5

1208

17.10.2009 17:13

Logik



© 2005 - 2024 PCforum, edited by JanoF