Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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
Príspevok NapísalOffline : 03.09.2010 11:31

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....


Offline

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

Registrovaný: 11.01.09
Prihlásený: 26.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 03.09.2010 11:41

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
Príspevok Napísal autor témyOffline : 03.09.2010 12:22

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


Offline

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

Registrovaný: 11.01.09
Prihlásený: 26.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 03.09.2010 14:09

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
Príspevok Napísal autor témyOffline : 03.09.2010 14:31

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


Offline

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

Registrovaný: 11.01.09
Prihlásený: 26.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 03.09.2010 15:14

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


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


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

4174

26.04.2008 16:12

Tominator Zobrazenie posledných príspevkov

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

435

13.02.2012 20:49

Ďuri Zobrazenie posledných príspevkov

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

v Ostatné

27

702

21.12.2012 2:32

Ďuri Zobrazenie posledných príspevkov

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

v Perl, Python, Ruby, CGI

0

607

21.11.2011 19:09

black evil Zobrazenie posledných príspevkov

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

v Technológia .NET

1

1872

13.12.2008 21:52

void Zobrazenie posledných príspevkov

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

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

2

498

03.08.2015 12:19

don jebot Zobrazenie posledných príspevkov

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

3599

23.05.2014 0:45

matwej Zobrazenie posledných príspevkov

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

v Ostatné

3

1717

19.06.2009 18:39

Blackshadow Zobrazenie posledných príspevkov

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

v Operačné systémy Unix a Linux

10

781

06.07.2010 18:52

krejso Zobrazenie posledných príspevkov

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

1313

28.12.2013 14:43

shaggy Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

3

456

29.03.2020 17:33

LukIneskoNR Zobrazenie posledných príspevkov

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

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

23

1569

26.11.2016 8:42

ado130 Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

10

881

19.02.2011 15:20

camo Zobrazenie posledných príspevkov

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

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

5

671

17.03.2008 10:30

neznamy Zobrazenie posledných príspevkov

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

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

14

1041

21.02.2015 6:26

faraon Zobrazenie posledných príspevkov

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

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

18

1059

15.05.2013 7:46

BX 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