| | |
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Autor | Správa |
---|
Registrovaný: 23.01.07 Prihlásený: 14.04.11 Príspevky: 239 Témy: 26 |
Zaujímalo by ma či sú nejaké funkcie na násobenie a delenie. Ja som zatial skúšal niečo vymyslieť: (násobenie)
Kód: procedure TForm1.Button1Click(Sender: TObject); var a,b,return:integer; begin a:= strtoint(edit1.Text); b:= strtoint(edit2.Text); asm mov eax,a mov ecx,b @l: add ecx,b loop @l mov return,ecx end; label1.Caption:= inttostr(return); end;
ale po stlačení tlačítka som dlho čakal(~10sekúnd) a dočkal som sa... vyšlo to 0
potom som skúšal namiesto ECX dať EBX - to nešlo spustiť vôbec apotom ešte EDX - to vyšlo nejaké pekne veľké číslo
na delenie nemám šajnu
|
|
Registrovaný: 02.09.05 Prihlásený: 17.11.10 Príspevky: 154 Témy: 1 |
Niee. Pre delenie/ nasobenie existuju instrukcie :
MUL - nasobenie
DIV - delenie
MUL ocakava cislo 1 v 8/16/32 bit registri al/ax/eax, druhe cislo moze byt z pamate tak isto 8/16/32 bit, alebo nejaky dalsi univerzalny register..
Vysledok je v al/ax/eax
DIV ocakava cislo 1 tak isto v 8/16/32 bit registri al/ax/eax, druhe cislo moze byt z pamate rovnako 8/16/32 bit, alebo nejaky dalsi univerzalny register..
Delenie je v al/ax/eax
Zvysok po deleni je v registri dl/dx/edx
napr. fciu nasobenia v delphi som spravil takto :
Kód: function multiply(c1, c2 : integer) : integer; assembler; asm pusha // ulozime univerzalne registre na zasobnik mov eax, c1 mul c2 mov result, eax popa end;
a podobne aj delenie...
|
|
Registrovaný: 23.01.07 Prihlásený: 14.04.11 Príspevky: 239 Témy: 26 | Napísal autor témy martin90: 01.11.2007 15:37 | |
|
diky moc. Ale teraz ma napadlo niečo na násobenie cez loop . Musím to skúsiť
//edit: nefungovalo to cez loop . Ten MUL ide ale DIV robí problémy.
delenie:
Kód: procedure TForm1.Button1Click(Sender: TObject); var a,b,ret:integer; asm mov a,6 mov b,2
mov eax,a div b mov ret,eax end; showmessage(inttostr(ret));
end;
toto mi vyhodí chybu "Integer overflow"
|
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | Napísal imcold: 01.11.2007 19:30 | |
|
Skús toto:
Kód: procedure TForm1.Button1Click(Sender: TObject); var a, b, ret, zv:integer; asm mov a,7 mov b,2 mov edx, 0 mov eax, a div dword b
mov ret, eax mov zv, edx end; showmessage(inttostr(ret)); showmessage(inttostr(zv));
end;
Pro hraní sa s assemblerom sa ti určite zíde aj zoznam inštrukcií s ich popisom - skús napríklad manuál k Nasm. Div počíta zároveň aj zvyšok; pri veľkosti operandu nad 8b sa navyše pri delení používa aj (e)dx.
|
|
Registrovaný: 23.01.07 Prihlásený: 14.04.11 Príspevky: 239 Témy: 26 | Napísal autor témy martin90: 01.11.2007 20:01 | |
|
aha. diky
|
|
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Nasobenie v JavaScript, VBScript, Ajax | 9 | 1023 | 24.02.2008 19:03 eiger33 | | nasobenie pola Pascal v Assembler, C, C++, Pascal, Java | 8 | 472 | 15.06.2013 22:47 dany2281995 | | len uprava programu v assembleri v Assembler, C, C++, Pascal, Java | 0 | 606 | 17.04.2010 10:54 pack | | Jednoduchá úloha v assembleri - pomozte v Assembler, C, C++, Pascal, Java | 6 | 2129 | 15.11.2007 20:38 martinezb6 | | C++ nasobenie vacsich cisel v Assembler, C, C++, Pascal, Java | 5 | 744 | 30.12.2009 12:32 josi | | pomoc s vytvorenim programu v Assembleri v Assembler, C, C++, Pascal, Java | 0 | 335 | 04.10.2011 17:49 tomik858 | | jednoducha uloha v assembleri pls help v Assembler, C, C++, Pascal, Java | 4 | 666 | 04.05.2008 11:42 snapshot | | Delay aneb mrhanie casom v assembleri v Assembler, C, C++, Pascal, Java | 5 | 790 | 20.10.2009 23:53 stanke | | Kroneckerovske nasobenie v C j. v Assembler, C, C++, Pascal, Java | 8 | 696 | 28.11.2008 16:14 suchy | | VHDL kód pre násobenie dvoch integerov v Elektronika | 3 | 550 | 06.01.2018 21:40 ado130 | | nechapem delenie v ATI/AMD grafické karty | 6 | 1219 | 27.01.2010 3:28 foxXx | | Delenie Hdd v Pevné disky a radiče | 7 | 502 | 21.09.2015 4:45 branci6138 | | delenie HDD v Pevné disky a radiče | 12 | 724 | 05.06.2013 21:52 sp33d | | Delenie viet v PHP, ASP | 6 | 934 | 15.07.2008 16:18 vladooo | | Delenie disku [ Choď na stránku: 1, 2 ] v Pevné disky a radiče | 43 | 2782 | 21.05.2008 16:24 tommy1104 | | Delenie HDD v Ostatné programy | 10 | 1058 | 27.12.2011 15:15 Ominous |
| 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
|
|