Új hozzászólás Aktív témák
-
Forest_roby
őstag
válasz
Forest_roby #147 üzenetére
up!
-
Forest_roby
őstag
Hi!
Nemsokára itt az assembly vizsgám és a gyak jegyet is ott kell megszereznem . úgy hogy viszek egy 40-50 soros ( gyakorlatban nem feltétlenűl működő ) programot, ami vmi logikai dolgot végez hatékonyan. pl.: buborékrendezés, prím szám keresés, prímtényezős felbontás, legnagyobb közös osztó, stb....
csak maga az algoritmus kell, ami elvégzi ezt a feladatot - maga a dolgot ( számokat ) amivel dolgoznia kell azt úgy kapja meg híváskor...
Az is lényeges, hogy egyes buktatókra nézve - többféleképpen meglegyen a program ( pl.: helyben számolás v. külön memóriahelyen számolás.... )
Tudna vki ebben nekem segíteni? Nagyon konkrétan - ha van vmi ilyen jellegű programotok, azt megosztanátok velem vagy álljak neki és ha elakadok, akkor jöjjek vissza?
8086 -os kompatibilis progi kellene
Előre is köszi!
Forest -
Forest_roby
őstag
hi!
P.H. ez nagyon rendes volt tőled, bár szerencsére csak most vettem észre, hogy megcsináltad. A cél az, hogy megtanuljak assembly nyelven programozni és nem az, hogy más munkáját lemásoljam, de tényleg rendes vagy!
én ezt dobtam össze, a vége már nagyon hanyag és rossza, de nem érdekelt, már nagyon fáradt voltam!
Feladat vmi olyasmi volt, hogy csináljunk szitát a prímek kiszámolására, al -be kapunk egy számot 1-256 között és annyiadik primet meg kell tudni mondani, amennyi az al értéke.
Az si rámutat egy megfelelően nagy mem terület elejére, a tömbnek 2 bytes-nek kell lennie és a feladat végén az si-be bele kell tölteni az első al prímet 0-ák nélkül.... ( 80x86 os proci )
házi:
kezd:
..mov bx, 2
..di,si
feltolt:
..mov [si],bx
..add si,2
..inc bx
..cmp bx,4000h
..jb feltolt
-------------------
..mov cx,[di+8000h]
..dec cx
..mov dx,cx
..shr dx,1
..mov si,di
fel:
..mov bx,[si]
..shl bx,1
ide:
..add si,bx
..mov [si],0
..cmp cx,[si]
..jnb ide
---
..mov si,di
..sub bx,4
..add si,bx
ell:
..add si,2
..cmp [si],0
..je ell
---
..cmp [si],dx
..j?? fel
---------
//ha idáig eljut, akkor megvannak a prímek
---------
..mov cx,1
..mov si,di
..cmp al,1
..je bubble_sort
_add_:
..add si,2
..inc cx
..cmp si,0
..je _add_
..dec al
..cmp al,0
..jne _add_
-----
bubble_sort: //már nincs időm, úgyhogy nem buborék
rendezést csinálok, valószínüleg nem is lesz jó.
..mov si,di-2
vvvv:
..add si,2
..dec cx
..cmp [si], 0
..je vvvv
..mov di,[si]
..add di,2
..cmp cx,0
..jne vvvv
END
A végén az si-be vissza kellett volna tölteni az első ( al értéke ) x darab prímet, de mint látható én a di-be próbáltam ezt megcselekedni rosszul....
Várok a kritikákat!
[Szerkesztve] -
Forest_roby
őstag
ujabb:
az si-t cipelem szépen a vége felé ( 2 -ével, 3-asával ..... ), hogy tudok, úgy egy cmp-t belerekni, hogy ha a köv lépés kilépne a tömbből, akkor egyik ág..., ha nem akkor másik ág....
mov bx,[si] //bx eggyenlő lesz 2-vel
nulláz:
add si,bx
mov [si],0
cmp ???
j??? nullaz
felfuto:
...
..
.
[Szerkesztve]
[Szerkesztve] -
Forest_roby
őstag
Hi!
Nem igazán tudom, hogy hogyan néz ki egy tömb assembly -be. Ebben kellene segítség.
Az si rámutat egy elegendően nagy memóraterületre, feltételezem a tömb első elemére és ezt a tömböt kellene feltölteni 2 -től pl 10000 -ig ( 2 byte os számokkal ). Nem tudom megcsinálni, mert ló****-t se tudok a tömbök kezeléséről assembliben.
Ha pl incrementálom si -t akkor a tömb következő ellemére fog mutatni?
Na mindegy, vki tudna ebben segíteni, rövid leítást, hogy mit hogyan kell a tömbökkel kapcsilatban....?
Előre is köszi!