[ Príspevkov: 6 ] 
AutorSpráva
Offline

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

Registrovaný: 10.07.07
Prihlásený: 11.04.20
Príspevky: 51
Témy: 13 | 13
NapísalOffline : 03.09.2010 11:31 | assembler zaciatky

Ahojte.Mozno to bude pre niektorych hlupa otazka,ale zacinam s assemblerom a chcem sa len opytat ze aky mam prikaz pouzit aby mi zobrazilo hodnotu registru.....priklad: scitanie:

mov eax,4
mov ebx,4
add eax.ebx

a teraz chcem aby mi vypisalo na obrazovke hodnotu eax

v C je to jednoduche prikazom printf("%d", a);

ale chcel by som vediet ze ako je to v assemblery :)....

dakujem pekne ahojte....


Online

Skúsený užívateľ
Skúsený užívateľ
assembler zaciatky

Registrovaný: 11.01.09
Prihlásený: 19.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 03.09.2010 11:41 | assembler zaciatky

Uveď, prosím ťa, viac info. Aký prekladač (NASM, TASM, MASM, FASM,...), aký operačný systém (používajú sa iné prerušenia a pod.) a ako sa ma zobraziť výsledok. Lebo ty ho kľudne môžeš zobraziť v MessageBox-e vo windows napríklad, nemusí to byť v konzole.
Takže trocha presnejší popis.


Offline

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

Registrovaný: 10.07.07
Prihlásený: 11.04.20
Príspevky: 51
Témy: 13 | 13
Napísal autor témyOffline : 03.09.2010 12:22 | assembler zaciatky

prekladac NASM..operacny system Linux Ubuntu...vysledok by som chcel zobrazit v konzole.....priklad text vysledok je: a ciselnu hodnotu


Online

Skúsený užívateľ
Skúsený užívateľ
assembler zaciatky

Registrovaný: 11.01.09
Prihlásený: 19.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 03.09.2010 14:09 | assembler zaciatky

V assembleri to bude trocha ťažšie. Ak chceš napísať sám funkciu na prevedenie DWORDU na reťazec, tak dalo by sa postupovať nejako takto:

Keďže pracujeme s 32-bitovými registrami, najväčšie takéto číslo v desiatkovej sústave je 4 294 967 295 - obsahuje desať čísel, teda v slučke s desiatimi opakovaniami sa bude číslo v registri eax postupne deliť číslami počnúc 1000000000, 100000000, ... , 10, 1. Výsledok po delení sa vypíše ( popis vypísania viď nižšie ) a potom sa do registru eax uloží zvyšok po delení (i keď neviem, či sa zvyšok neukladá iba do 16-bitového registra ???). Týmto vypadne číslica, ktorá je najviac vľavo (tá, ktorú sme vypísali) a pokračuje sa v cykle.
Je mi jasné, že z toho popisu je to nepredstaviteľné, tak to názorne ukážem, ale na menšom čísle - trojcifernom:

Citácia:
číslo = 123

123 / 100 = 1 , zvyšok 23
- vypíše sa jednotka (výsledok delenia), a pokračuje sa so zvyškom

23 / 10 = 2 , zvyšok 3
- vypíše sa dvojka a pokračuje sa

3 / 1 = 3 , zvyšok 0
- vypíše sa trojka a cyklus skončil (cyklus = počet cifier)


Čím viac cifier, tým viac s tým je roboty. Ak teda stačí vypísať číslo napr po 65535 (16-bitov), ušetríš si takmer polovicu roboty.


Popis vypísania jednej cifry:

Ak si všimneš v ASCII tabuľke hodnoty číselných znakov, tak si uvedomoiš, že k cifre stačí prirátať hodnotu 0x30 a dostane sa jej ASCII vyjadrenie. Napríklad v registri máme číslo 3. Ak k nemu pripočítame 0x30, dostaneme číslo 0x33, čo je hexadecimálne vyjadrenie čísla 3 v ASCII tabuľke.

// toto bol postup, ako to spraviť čisto v assebmleri. Môžeš ale použiť aj nejakú funkciu na to určenú, uloženú v nejakej knižnici, ktorú iba inkludneš. Tuším sa dá použiť aj samotná printf, ale osobne som to ešte neskúšal.


Offline

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

Registrovaný: 10.07.07
Prihlásený: 11.04.20
Príspevky: 51
Témy: 13 | 13
Napísal autor témyOffline : 03.09.2010 14:31 | assembler zaciatky

dakujem ti pekne za vysvetlenie :).....ja som to skusal roznymi sposobmi ale teraz sa len pousmejem natom :) ako som to ja robil....diky moc :)....tusim co mam knihu tak tam je pisane ze sa da inkludovat aj printf :)....no nic idem sa ja pasovat stym :).....keby nieco tak tu mas dalsiu otazku :D


Online

Skúsený užívateľ
Skúsený užívateľ
assembler zaciatky

Registrovaný: 11.01.09
Prihlásený: 19.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 03.09.2010 15:14 | assembler zaciatky

Postup pre použitie printf funkcie:
Kód:
global main
extern printf

[section .data]
printf_sprava: db "Vysledok je: %d.", 10, 0
cislo: dd 123

[section .text]
main:

   push ebp
   mov ebp, esp
   push DWORD [cislo]
   push printf_sprava
   call printf
   mov esp, ebp
   pop ebp
   mov eax, 0
   ret


Kompilácia:
Kód:
nasm -f elf prog.asm

Zlinkovanie:
Kód:
gcc -o prog prog.obj

Spustenie:
Kód:
./prog


 [ Príspevkov: 6 ] 


assembler zaciatky



Podobné témy

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

Zaciatky

[ Choď na stránku:Choď na stránku: 1, 2, 3, 4 ]

v Webdesign

106

4363

26.04.2008 16:12

Tominator

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

Začiatky

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

1

475

13.02.2012 20:49

Ďuri

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

Začiatky

v Ostatné

27

766

21.12.2012 2:32

Ďuri

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

Zaciatky programovania

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

23

1665

26.11.2016 8:42

ado130

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

C# začiatky

v Technológia .NET

1

1909

13.12.2008 21:52

void

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

Zaciatky podnikania

v Ekonomika, práca, biznis, podnikanie a peniaze

2

550

03.08.2015 12:19

don jebot

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

JAVA zaciatky

[ Choď na stránku:Choď na stránku: 1, 2 ]

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

33

3701

23.05.2014 0:45

matwej

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

PICAXE - zaciatky

v Ostatné

3

1746

19.06.2009 18:39

Blackshadow

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

Linux-začiatky

v Operačné systémy Unix a Linux

10

822

06.07.2010 18:52

krejso

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

Tažké začiatky

[ Choď na stránku:Choď na stránku: 1, 2 ]

v HTML, XHTML, XML, CSS

37

1428

28.12.2013 14:43

shaggy

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

Jquery začiatky...

v JavaScript, VBScript, Ajax

10

941

19.02.2011 15:20

camo

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

Programovanie - Zaciatky

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

14

1092

21.02.2015 6:26

faraon

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

Zaciatky pascal

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

5

702

17.03.2008 10:30

neznamy

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

začiatky JAVA

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

18

1105

15.05.2013 7:46

BX

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

PHP Zaciatky

v PHP, ASP

1

445

14.02.2012 19:53

Ďuri

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

Webdesign - Začiatky

v Webdesign

3

455

11.09.2013 8:38

don jebot



© 2005 - 2024 PCforum, edited by JanoF