• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

Asembler --- kto potrebuje pomoct...

Started by totaluser, 16.02.2010, 01:58:35

« predchdzajce - alie »

Makaveli

najdi slova ktore maju nemej ako 5 znakov
ako spravim aby mi nacitavalo iba pismena a nič ine a ako spravim že ked dam medzeru a zanou dalsiu aby tu dalsiu medzeru nebralo ako znak dik
org 1000

  dcx sp         ; inicializacia zasobnika (0FFFFh)

  lxi h, retazec1      ; vytlac na terminal "Zadajte retazec:"
  call putstr           ; zavolaj funkciu na vytlacenie textu
  lxi d, retazec0
  call getline      ; nacitaj cely riadok

  lxi b, retazec0

  mvi d, 0         ; v tomto registri sa bude ukladat pocet vhodnych slov
  mvi e, 0

hladaj:         ; hlavna slucka

  ldax b
  inx b

  jz spocitaj
  cpi 10         ; znak je novy riadok
  jz spocitaj
  cpi 0          ; znak je koniec retazca
  jz koniec

  inr d         ; zvys pocet znakov v slove
  jmp hladaj

spocitaj:         ; spocita pocet znakov v slove
  mov a, d
  mvi d, 0
  cpi 0
  jc hladaj
  cpi 5
  jnc hladaj

  inr e         ; pocet hladanych slov v retazci
  jmp hladaj

koniec:

  lxi h, retazec2      ; vypis prvu cast informacie
  call putstr

  mov a, e
  adi '0'         ; vypis pocet najdenych slov
  call putchar

  lxi h, retazec3      ; vypis druhu cast informacie
  call putstr

  hlt         ; KONIEC programu

include 'examples\8080\include\getchar.inc'
include 'examples\8080\include\getline.inc'
include 'examples\8080\include\putstr.inc'
include 'examples\8080\include\putchar.inc'

retazec1:       db 'Zadajte retazec:', 10, 13, 0
retazec2:       db 10, 13, 'Slova v dlzke 0 - 5 znakov sa v retazci nachádzaju ', 0
retazec3:       db '-krat', 10, 13, 0
retazec0:       ds 50


Máte pravdu. Jsem blázen. Ale víte co ještě? Je mi to u prdele:P KED NIECO NEVIES TUKE FORUM VYRIESI :)))

mucko

Quote from: sb290up on  24.03.2010, 02:42:19
najdi slova ktore maju nemej ako 5 znakov
ako spravim aby mi nacitavalo iba pismena a nič ine a ako spravim že ked dam medzeru a zanou dalsiu aby tu dalsiu medzeru nebralo ako znak dik
org 1000

  dcx sp         ; inicializacia zasobnika (0FFFFh)

  lxi h, retazec1      ; vytlac na terminal "Zadajte retazec:"
  call putstr           ; zavolaj funkciu na vytlacenie textu
  lxi d, retazec0
  call getline      ; nacitaj cely riadok

  lxi b, retazec0

  mvi d, 0         ; v tomto registri sa bude ukladat pocet vhodnych slov
  mvi e, 0

hladaj:         ; hlavna slucka

  ldax b
  inx b

  jz spocitaj
  cpi 10         ; znak je novy riadok
  jz spocitaj
  cpi 0          ; znak je koniec retazca
  jz koniec

  inr d         ; zvys pocet znakov v slove
  jmp hladaj

spocitaj:         ; spocita pocet znakov v slove
  mov a, d
  mvi d, 0
  cpi 0
  jc hladaj
  cpi 5
  jnc hladaj

  inr e         ; pocet hladanych slov v retazci
  jmp hladaj

koniec:

  lxi h, retazec2      ; vypis prvu cast informacie
  call putstr

  mov a, e
  adi '0'         ; vypis pocet najdenych slov
  call putchar

  lxi h, retazec3      ; vypis druhu cast informacie
  call putstr

  hlt         ; KONIEC programu

include 'examples\8080\include\getchar.inc'
include 'examples\8080\include\getline.inc'
include 'examples\8080\include\putstr.inc'
include 'examples\8080\include\putchar.inc'

retazec1:       db 'Zadajte retazec:', 10, 13, 0
retazec2:       db 10, 13, 'Slova v dlzke 0 - 5 znakov sa v retazci nachádzaju ', 0
retazec3:       db '-krat', 10, 13, 0
retazec0:       ds 50




no neviem ci ti niekto pomoze :P ja som sem tiez dal kod a nikto sa asi nato ani nepozrel .. vies, vsetci vravia ved sadni si pred to(a to aj robime) a studuj .. a, ze potom aj pomozu ... no ale vidim, ze len kvákat o pomoci vedia :P

sulo

Quote from: sb290up on  24.03.2010, 02:42:19
najdi slova ktore maju nemej ako 5 znakov
ako spravim aby mi nacitavalo iba pismena a nič ine a ako spravim že ked dam medzeru a zanou dalsiu aby tu dalsiu medzeru nebralo ako znak dik

Quote
...
hladaj:         ; hlavna slucka

  ldax b
  inx b

  cpi ' ' ; <------- tu chybalo porovnanie
  jz spocitaj
...

Bol tam podmienený skok, ale pred ním žiadne porovnanie, čiže nemal byť ako správne nastavený zero flag.

Quote
...
spocitaj:         ; spocita pocet znakov v slove
  mov a, d
  mvi d, 0
  cpi 1 ; <------ tu bola 0
  jc hladaj
...

Čo sa týka nezarátavania medzier ako slov, stačí, že budeme rátať slová s dĺžkou aspoň 1.

ursus

So this router walks into the doctor's office...
- Doctor, it hurts when IP.

sulo

Ešte niečo ohľadom komentárov, toto nie je pravda:

Quote from: sb290up on  24.03.2010, 02:42:19
...
  mvi d, 0         ; v tomto registri sa bude ukladat pocet vhodnych slov
  mvi e, 0
...

Skôr to malo byť takto:


...
  mvi d, 0         ; pocet znakov v slove
  mvi e, 0         ; pocet vhodnych slov
...

jardo

#105
trocha som to upravil, ale stale to nieje ono, npocita to co to ma. Co tomu chyba?
org 1000

dcx sp         ;inicializacia zasobnika (0FFFFh)

lxi h,text      ;vypis text
call putstr


lxi d,vlozeny      ;adresa pre vstup retazca
call getline

lxi b,vlozeny
mvi d,0 ;pocet vsetkych znakov v slove
mvi e,0         ;pocet malych pismen v slove
push psw      ;vlozime si nulu do zasobnika, pocet vyhovujucich slov


char:
mvi e,0
mvi d,0        ;vynulovanie pocitadla
char_loop:         ;citanie znakov a pocitanie pismen
ldax b         ;nacitanie znaku z retazca
inr d
inx b         ;posun v retazci doprava
cpi 10         ;porovnanie pre koniec nacitavania, enter
jz koniec_nacitania      ;
cpi 32          ;porovnanie na koniec slova, space=medzera
jz pocet_slov      
cpi 'a'         ;vacsie alebo rovne ako a
jc char_loop      
cpi 'z' + 1      ;mensie alebo rovne ako z
jnc char_loop
inr e         ;zvysenie poctu pismen o 1
jmp char_loop


pocet_slov:   ;pocitanie vyhovujucich slov
mov a,e      ;presun hodnoty z registra D do akumulatora
cmp d      ;porovnanie akumulatora a registra E
jc char      ;ak je pismen malej abecedy menej skoc na char
pop psw      ;vyber zo zasobnika do akumulatora
inr a         ;zvysenie poctu vyhovujucich slov
push psw          ;vlozenie z akumulatora do zasobnika
jmp char

koniec_nacitania:    ;osetrenie ak sme spracovali posledne slovo
mov a,e
cmp d        
jc vypis
pop psw
inr a         ;zvysenie poctu vyhovujucich slov
push psw
jmp vypis

vypis:
lxi h, text2
call putstr
pop psw
adi '0'
call putchar
call newline

hlt

include 'examples\8080\include\getline.inc'
include 'examples\8080\include\putstr.inc'
include 'examples\8080\include\putchar.inc'
include 'examples\8080\include\newline.inc'
text: db 'Program vypise pocet slov(v dekadickom tvare) , ktore obshuju pismena malej abecedy', 10,13,10, 'Zadaj retazec: ',0
text2: db 10,13,'Vysledny pocet: ',0
vlozeny: ds 30

sulo

Treba v tom zadaní mať aj nejakú používateľskú príručku? Nám na cvikách nikto nič také nevravel.

Petrinho

Mam urobeny program aj vyvojak.....nevie niekto ako to ma vyzerat....Uvodna strana a co dalej???

vojto

Fellas, potreboval by som kus pomoct.

Podarilo sa mi uz dostat normalne cislo, v tom emuStudiu mi to uz aj pekne vypise, len este ho nejak potrebujem vypisat. No a ja ked vypisem priamo obsah registra, tak ono to asi sa snazi vypisat znak s tym kodom. A ja chcem cislo.

Neviete jak na to?

Raleon

Quote from: vojto on  25.03.2010, 21:46:35
Fellas, potreboval by som kus pomoct.

Podarilo sa mi uz dostat normalne cislo, v tom emuStudiu mi to uz aj pekne vypise, len este ho nejak potrebujem vypisat. No a ja ked vypisem priamo obsah registra, tak ono to asi sa snazi vypisat znak s tym kodom. A ja chcem cislo.

Neviete jak na to?

prelistuj tento thread, zistis


There is no such bad temper that can not be fixed with some good wine.

Makaveli

viem mi niekto poradit ako spravim ze ked dam dva krat za sebou medzeru mi tu druhu medzeru nebralo ako znak dik
Máte pravdu. Jsem blázen. Ale víte co ještě? Je mi to u prdele:P KED NIECO NEVIES TUKE FORUM VYRIESI :)))

dEVIANT

Quote from: sb290up on  26.03.2010, 02:09:03
viem mi niekto poradit ako spravim ze ked dam dva krat za sebou medzeru mi tu druhu medzeru nebralo ako znak dik

Ošetrené a poslané PM! ...spokojnosť klientov je mojou prioritou !!! :D
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

Makaveli

Dik ešte raz  :puf: odkial sa tak dobre vyznáš do asm?
Máte pravdu. Jsem blázen. Ale víte co ještě? Je mi to u prdele:P KED NIECO NEVIES TUKE FORUM VYRIESI :)))

dEVIANT

V tom neni žiadna veda...ja by som len skôr povedal, že nemenovaný prednášajúci to nevie tak ľudsky povedať a tak z toho robí španielsku dedinu, ktorú vám potom ani cvičiaci asi nepreložia  :D

Ale minulý rok som to tiež nevedel :/
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

Makaveli

prednasajuci tak to snim bieda bieli plastika poviem slovo a hmmm kuka do stropu a cvika pride a povie dacoa každy si robi co chce parada :((
Máte pravdu. Jsem blázen. Ale víte co ještě? Je mi to u prdele:P KED NIECO NEVIES TUKE FORUM VYRIESI :)))

vojto

Quote from: vojto on  25.03.2010, 21:46:35
Fellas, potreboval by som kus pomoct.

Podarilo sa mi uz dostat normalne cislo, v tom emuStudiu mi to uz aj pekne vypise, len este ho nejak potrebujem vypisat. No a ja ked vypisem priamo obsah registra, tak ono to asi sa snazi vypisat znak s tym kodom. A ja chcem cislo.

Neviete jak na to?

No pre ostatnych. Urobil som to tak, ze sa pred vypisanim pozrie, ci je cislo mensie ako 10, ak nie, do registra E bude pocitat desiatky a robi to vlastne kym je vacsie ako 10. Potom uz iba vypise pocet desiatok a jedniciek. Funguje to iba do 99, ale hovoril ujo, ze je to ok ;)

totaluser

Quote from: vojto on  26.03.2010, 16:23:42
Quote from: vojto on  25.03.2010, 21:46:35
Fellas, potreboval by som kus pomoct.

Podarilo sa mi uz dostat normalne cislo, v tom emuStudiu mi to uz aj pekne vypise, len este ho nejak potrebujem vypisat. No a ja ked vypisem priamo obsah registra, tak ono to asi sa snazi vypisat znak s tym kodom. A ja chcem cislo.

Neviete jak na to?

No pre ostatnych. Urobil som to tak, ze sa pred vypisanim pozrie, ci je cislo mensie ako 10, ak nie, do registra E bude pocitat desiatky a robi to vlastne kym je vacsie ako 10. Potom uz iba vypise pocet desiatok a jedniciek. Funguje to iba do 99, ale hovoril ujo, ze je to ok ;)

ved jasne ze je to ok
preto bolo zadane ze bin/oct/hex cisla max 255 dekadicky a dec cislo max 99 dekadicky
tak to ma byt

kazdopadne ujo v bilom plasti je fakt :baaa:
tie prednasky su uplne odveci, lebo len si precita slajdy svoje a nic ine
na cviku tiez nic, napise na tabulu priklad ale vobec ho nevysvetli (ale zas sa da pochopit)

ursus

informatika je 90% samostudium, skola ti ma dat len podnet :trestac:
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

revelc

Quote from: ursus on  26.03.2010, 20:49:48
informatika je 90% samostudium, skola ti ma dat len podnet :trestac:
To si z akej mudrej knizky vycital ?  :D ;D
Čo môžeš urobiť dnes odlož na pozajtra a ziskaš deň voľna.

"I'm a man of simple tastes. I enjoy dynamite...and gunpowder...and gasoline! "

felipe

zdravim potreboval by som helpnut so zadanim, 31. urcte pocet slov obsahujucich len nerovnake znaky... viem ze je uz neskoro tak ma zato teraz neukamenujte ale skor som sa k tomu nevedel dostat...  ah: neviem ako to mam riesit, maju sa tie slova zacinat jednym nejakym znakom? mam tie znaky porovnavat kazdy s kazdym? alebo sa to da nejak inac? prosim len hlavny princip ako nato ist by som potreboval...  :)

Ali N

prva moznost - definovat v pamati nejake pole priznakov ktore by reprezentovalo priznak pre kazdy znak ASCII kodu. Potom by si len prechadzal znaky slova a zistoval, ci uz je nastaveny priznak. Ak nie tak ho nastavis, ak ano, tak slovo nevyhovuje

druha moznost - tak ako si pisal, porovnavat kazdy s kazdym

co z toho je jednoduchsie ti s istotou povedat neviem, ale myslim si ze skor ta prva moznost

GayLordYebal

 :baaa:
Heslá:

I. fei tuke
II.tuke fei
III. kpi fei tuke
IV. kpi fei
V. fei kpi
VI. <neznam nebol som na prednáške>

doplňte prosím pre VI. prednášku heslo, dík.  :angel:

tommy-sv

"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

totaluser


ursus

na secky aspon doposial funguje: ief

8)
So this router walks into the doctor's office...
- Doctor, it hurts when IP.