[ Kukilo @ 16.03.2009. 12:21 ] @
E momci moze mala pomoc oko mnozenja i deljenja u asembleru, nesto ne toliko komplikovano jer sam pocetnik.
Mi smo radili mnozenje preko sabiranja a deljenje preko oduzimanja ali mi bas nesto nije jasno. Hvala.


[Ovu poruku je menjao Kukilo dana 16.03.2009. u 14:55 GMT+1]

[Ovu poruku je menjao Kukilo dana 16.03.2009. u 15:49 GMT+1]
[ J4k1 @ 16.03.2009. 17:16 ] @
Reci Zoki sta te muci? Bolje uzmi i citaj praktikum :P
Inace imas u temi ispod tvoje neke radove od prosle godine pa pogledaj to


Nemanja :)
[ Stojan Trifunovic @ 16.03.2009. 22:32 ] @
Kazete da ste radili mnozenje i deljenje preko sabiranja i oduzimanja. To je bar najlakse za objasnjavanje.

Setite se kako ste nekada igrali zmurke. Brojali ste do 100 po 5. Znaci 5, 10, 15...
To je jedan (prilicno los) nacin mnozenja brojeva. Kazem los zato sto je spor, a ne sto daje netacne rezultate.

Da bi se tako realizovalo mnozenje A i B brojeva (A * B = C) potrebno je inicijalizovati C na nultu vrednost, a zatim sabitari A svih B puta. To je sve.
Na primer, ako je A==5 i B == 3 onda bi algoritam programa bio ovakav:
Code:

C == 0
C = C+5
C = C+5
C = C+5

Sabiranje tacno 3 puta moze se lako realizovati dekrementacijom broja B i testiranjem da li je dosao do 0.

Deljenje je isto to, samo sa obrnutim postupkom. Broj A oduzimao bi se B puta.
[ EArthquake @ 17.03.2009. 09:32 ] @
hehehe ovaj deo foruma uvek zazivi cim e2 dobije arhitekturu racunara :)

pogledajte stare teme , i prosle godine je bilo slicnih pitanja

pogledajte one kodove koje sam ostavio u drugom postu

mnozenje
Code:


.section .data
.section .text

.globl main

main:

movl $3, %eax
movl $5, %ebx
xorl %edx, %edx
cmpl %eax, %ebx
ja mnozi
xchgl %eax, %ebx
mnozi:
addl %ebx, %edx
decl %eax
cmpl $0, %eax
jnz mnozi

kraj: nop




ili u duploj preciznosti
Code:

.section .data

a: .long 0,4
b: .long 0,4
r: .quad 0

.section .text

.globl main

main:

mnozi:
    movl b+4, %ebx
    cmpl $0, %ebx
    jz smanji
    jmp *0x1
    decl %ebx
    movl %ebx, b+4
    movl a+4, %eax
    movl r+4, %ebx
    addl %eax, %ebx
    movl %ebx, r+4
    movl a, %eax
    movl r, %ebx
    adc %eax, %ebx
    jc greska
    movl %ebx, r
    jmp mnozi
    
smanji: 
    movl b, %ebx
    cmpl $0, %ebx
    jz kraj
    decl %ebx
    movl %ebx, b
    jmp mnozi
    

kraj:
    movl r+4, %eax
    movl r, %ebx
    nop
    
greska:
     jmp greska



kao sto vec rekoh , nemojte ovo da smatrate kao non plus ultra , mozda , i verovatno, ima neka greska
a i potrudite se da razumete kako ovo radi , nemojte napamet da ucite

ajd pozdrav