![]() |
Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Assembler
Last Updated: May 18 2021 15:44, Started by
raspberry
, May 29 2016 12:26
·
0

#1
Posted 29 May 2016 - 12:26

Salutare.
Sunt cam afon la assembler si trebuie sa fac un proiect in C++ si altauri de el trebuie sa fie si un cod echivalent in assembler. Va roog sa puna cineva codul care sa adune 2 numere si sa le afiseze in fereastra de dos. Compilatorul folosit este Turbo assembler , am reusit sa adun 2 numere dar cand vreau sa afisez , imi afiseaza niste simboluri. |
#2
Posted 29 May 2016 - 13:32

Scrie aplicatia in C apoi genereaza ASM-ul pt. inspiratie.
|
#3
Posted 29 May 2016 - 13:41

#4
Posted 29 May 2016 - 13:50

Pai nu te uita la tot codul ci doar la partea care te intereseaza. Pe de alta parte, asta-i ASM-ul.
|
#5
Posted 29 May 2016 - 21:24

E f. simplu sa afisezi ceva in MS-DOS. MS-DOS defineste un interrupt care are mai multe functii, printre care si cea de a afisa ceva. Daca nu ma insel este vorba de int 21h. Cauta pe google, sigur o sa gasesti.
Mai problematica decat afisarea o sa fie conversia numarului in text, dar nu e dificil. |
#6
Posted 30 May 2016 - 08:26

Salutare. Sunt cam afon la assembler si trebuie sa fac un proiect in C++ si altauri de el trebuie sa fie si un cod echivalent in assembler. Va roog sa puna cineva codul care sa adune 2 numere si sa le afiseze in fereastra de dos. Compilatorul folosit este Turbo assembler , am reusit sa adun 2 numere dar cand vreau sa afisez , imi afiseaza niste simboluri. |
#7
Posted 30 May 2016 - 08:39

Probabil s-a preferat API-ul MS-DOS cu intreruperi pt. intelegerea unor aspecte fundamentale din arhitectura, nu acest API in sine avand importanta, el fiind doar un instrument didactic. Cert e ca poti invata ASM facand apel si la un API actual dar unele aspecte nu le mai controlezi ca altadata, informatii necesare in cazul proiectarii "de la zero". Asta daca nu cumva e o confuzie a initiatorului intre fereastra cu mediul pe 16-bit sau consola actuala !
Edited by neagu_laurentiu, 30 May 2016 - 08:47. |
#8
Posted 06 June 2016 - 10:26

Confirm, eu am facut o materie similara acum 2 ani, si tot in MS-DOS am lucrat. Mi s-a parut o idee proasta, e foarte greu de interactionat cu emulatoarele dintr-un mediu modern.
|
#9
Posted 06 June 2016 - 16:24

#10
Posted 15 May 2021 - 13:25

Ca sa nu mai deschid alt topic, daca v-ati bagat nasul prin assembly si stiti ceva simplu.
Instructiunea DIV. mov eax, 0ffff ffffh mov edx, 0ffff ffffh mov ebx, 02h div ebx Daca am inteles bine, numarul din care se imparte e pastrat implicit in EDX:EAX (high order double word in EDX), numarul la care se imparte este pus explicit in EBX. Rezultatul partea intreaga poposeste in EAX iar restul (un nr mai mic decat numarul din EBX) poposeste in EDX. Toate bune si frumoase numai ca daca fac impartirea cu numerele din codul prezentat, numarul intreg ce trebuie sa mearga in EAX e mai mare de 32 de biti. Ce imi scapa? E aiurea daca trebuie sa am EU grija sa imi incapa rezultatul in EAX adica sa fac calculul inainte sa pun calculatorul sa-l faca. ![]() |
|
#12
Posted 15 May 2021 - 13:45

Primesti exceptie daca rezultatul e prea mare: https://c9x.me/x86/h..._x86_id_72.html
De ce ai vrea insa sa imparti numere asa mari (264 - 1) in cazul de fata daca rezultatul incape doar pe 32-biti? |
#13
Posted 17 May 2021 - 13:03

Ia vezi, DIV ăla nu cumva setează și niște biti/flaguri? Cica DIV nu afecteaza niciun flag
Primesti exceptie daca rezultatul e prea mare: https://c9x.me/x86/h..._x86_id_72.html De ce ai vrea insa sa imparti numere asa mari (264 - 1) in cazul de fata daca rezultatul incape doar pe 32-biti? Pai de ce n-as vrea sa impart numere asa mari? Nu despre asta e vorba? Adica uite iti punem la dispozitie doi registri de 32 biti alaturati ca sa poti imparti din numere mari pe 64 biti (facem abstractie aici de rax & co, MMX sau SSE). In cazul de fata rezultatul nu incape in 32 biti. Si nu e o exceptie, se poate intampla ori de cate ori numarul la care se face impartirea e prea mic. Uite alt exemplu: 4 FFFF FFFF / 2 Boom, are doar 36 de biti, il imparti la 2 si rezultatul e pe 34 de biti: 2 7FFF FFFF sau imi scapa mie ceva ca daca e asa e cam aiurea. Edited by wolfenste, 17 May 2021 - 13:05. |
#14
Posted 17 May 2021 - 13:10

Adica uite iti punem la dispozitie doi registri de 32 biti alaturati ca sa poti imparti din numere mari pe 64 biti (facem abstractie aici de rax & co, MMX sau SSE). Nu chiar... Iti punem la dispozitie doi registrii de 32 biti pentru a putea efectua mai repede unele impartiri atunci cand scrii cod pentru lucru cu numere mari. Mai multe detalii: https://stackoverflo...in-x86-assembly |
#15
Posted 17 May 2021 - 13:24

Pai asta e partea funny, "unele impartiri" si ca sa stii care impartire se preteaza, trebuie sa calculezi tu inainte
![]() |
|
#16
Posted 17 May 2021 - 16:31

https://opensource.a...di3.S.auto.html exemplu comentat de impartire pe 64bit
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users