Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Autor | Správa |
---|
Registrovaný: 14.03.11 Prihlásený: 20.03.11 Príspevky: 4 Témy: 1 | 1 |
Vedel by mi niekto pomôcť s prerobením tohto zadania:
Určte počet slov obsahujúcich len aritmetické operátory (+,-,*,/).
na Určte počet slov obsahujúcich reťazec ASM alebo asm.
Kód: org 1000
dcx sp ;inicializacia zasobnika (0FFFFh)
lxi h,text ;vypis text call putstr
lxi h,text1 ;vypis text1 call putstr
lxi d,vlozeny ;adresa pre vstup retazca call getline
lxi b,vlozeny
mvi d,0 ;pocet malych pismen mvi e,0 ;pocet cislic push psw ;vlozime si nulu do zasobnika, pocet vyhovujucich slov jmp char_loop
char: mvi d,0 ;vynulovanie pocitadla mvi e,0 ;vynulovanie pocitadla char_loop: ;citanie znakov a pocitanie cislic v slove ldax b ;nacitanie znaku z retazca 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 '/' ;vacsie alebo rovne ako 0 jz increment cpi '*' ;mensie alebo rovne ako 9 jz increment cpi '-' ;vacsie alebo rovne ako 0 jz increment cpi '+' ;mensie alebo rovne ako 9 jz increment inr e ;zvysenie poctu cislic o 1 jmp char_loop
increment: inr e inr d ;zvysenie poctu pismen o 1 jmp char_loop
pocet_slov: ;pocitanie vyhovujucich slov mov a,d ;presun hodnoty z registra D do akumulatora cmp e ;porovnanie akumulatora a registra E jc 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,d cmp e ;porovnanie ci slovo obsahuje aspon 2 cislice jc prevod pop psw inr a ;zvysenie poctu vyhovujucich slov push psw jmp prevod
prevod: ;prevod 4b binarneho cisla na sestnastkove [jednotky] pop psw mov h,a ani 15 ;logicky sucin push psw cpi 10 ;porovnananie ci je cislo mensie ako 10 jc prevod1 pop psw ;ak je mensie skoci na koniec1 mov b,a mvi a,7 add b ;pripocitanie 7, lebo su to pismena, vacsie ako 10 push psw
prevod1: ;prevod 4b binarneho cisla na sestnastkove [desiatky] mov a,h rrc ;posun o 1b doprava rrc rrc rrc ani 15 ;logicky sucin push psw cpi 10 ;porovnananie ci je cislo mensie ako 10 jc vypis ;ak je mensie skoci na koniec1 pop psw mov b,a mvi a,7 add b ;pripocitanie 7 push psw
vypis: ;vypis poctu slov sestnastkovo lxi h,text2 call putstr
pop psw adi '0' call putchar ;vypisanie sestanstkovej cislice [desiatky]
pop psw adi '0' call putchar ;vypisanie sestanstkovej cislice[jednotky]
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 zistuje pocet slov obsahujucich len aritmeticke operatory',10,13 text1: db 'Zadaj retazec, ukonci stlacenim enter ',0,10,13 text2: db 10,13,'Pocet slov, v hexa tvare: 0x',0 vlozeny: ds 50
ĎAKUJEM za každú pomoc.
|
|
Registrovaný: 14.03.11 Prihlásený: 20.03.11 Príspevky: 4 Témy: 1 | 1 |
Už mám niečo, ale hľadá to len slová ktoré obsahujú iba A,S,M,a,s,m alebo ich kombináciu
Kód: org 1000
dcx sp ;inicializacia zasobnika (0FFFFh)
lxi h,text ;vypis text call putstr
lxi h,text1 ;vypis text1 call putstr
lxi d,vlozeny ;adresa pre vstup retazca call getline
lxi b,vlozeny
mvi d,0 ;pocet malych pismen mvi e,0 ;pocet cislic push psw ;vlozime si nulu do zasobnika, pocet vyhovujucich slov jmp char_loop
char: mvi d,0 ;vynulovanie pocitadla mvi e,0 ;vynulovanie pocitadla char_loop: ;citanie znakov a pocitanie cislic v slove ldax b ;nacitanie znaku z retazca 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 0 jz increment cpi 'S' ;mensie alebo rovne ako 9 jz increment cpi 'M' ;vacsie alebo rovne ako 0 jz increment cpi 'a' ;mensie alebo rovne ako 9 jz increment cpi 's' ;mensie alebo rovne ako 9 jz increment cpi 'm' ;mensie alebo rovne ako 9 jz increment inr e ;zvysenie poctu cislic o 1 jmp char_loop
increment: inr e inr d ;zvysenie poctu pismen o 1 jmp char_loop
pocet_slov: ;pocitanie vyhovujucich slov mov a,d ;presun hodnoty z registra D do akumulatora cmp e ;porovnanie akumulatora a registra E jc 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,d cmp e ;porovnanie ci slovo obsahuje aspon 2 cislice jc prevod pop psw inr a ;zvysenie poctu vyhovujucich slov push psw jmp prevod
prevod: ;prevod 4b binarneho cisla na sestnastkove [jednotky] pop psw mov h,a ani 15 ;logicky sucin push psw cpi 10 ;porovnananie ci je cislo mensie ako 10 jc prevod1 pop psw ;ak je mensie skoci na koniec1 mov b,a mvi a,7 add b ;pripocitanie 7, lebo su to pismena, vacsie ako 10 push psw
prevod1: ;prevod 4b binarneho cisla na sestnastkove [desiatky] mov a,h rrc ;posun o 1b doprava rrc rrc rrc ani 15 ;logicky sucin push psw cpi 10 ;porovnananie ci je cislo mensie ako 10 jc vypis ;ak je mensie skoci na koniec1 pop psw mov b,a mvi a,7 add b ;pripocitanie 7 push psw
vypis: ;vypis poctu slov sestnastkovo lxi h,text2 call putstr
pop psw adi '0' call putchar ;vypisanie sestanstkovej cislice [desiatky]
pop psw adi '0' call putchar ;vypisanie sestanstkovej cislice[jednotky]
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 zistuje pocet slov obsahujucich retazec ASM alebo asm',10,13 text1: db 'Zadaj retazec, ukonci stlacenim enter ',0,10,13 text2: db 10,13,'Pocet slov, v hexa tvare: 0x',0 vlozeny: ds 50
Vie niekto poradiť?
|
|
Registrovaný: 11.08.10 Prihlásený: 15.01.13 Príspevky: 25 Témy: 3 | 3 |
nazdar, aky mas vstup? pole znakov (text) alebo z klavesnice niekto napise? vsetky mozne kombinacie (case insensitive) asm AsM asM ... my sme robili podobne zadanie, akurat v C, ale tak toto tvoje by som riesil vytvorenim si vzorovych poli charov ASM a asm.. a cyklus
nacitaj znak.. porovnaj s nultym znakom zo vzoru (asm /ASM)
ak zhoda, porovnaj dalsi zo vzoru s dalsim nacitanym.... )
pri zhode inkrementuj nejaky pomocy register napr BL, ak sa hodnota toho registra dostane na 3 vies ze je tam to slovo a inkrementujes celkovy pocet slov.. napr AX
vynuluj BL.. nacitaj dalsi znak ( zaciatok cyklu).. nieco na tento sposob..
ak to este nemas tak sa ozvi
|
|
Registrovaný: 14.03.11 Prihlásený: 20.03.11 Príspevky: 4 Témy: 1 | 1 |
Vďaka za ochotu, ale už by som to mal mať vyriešené. Ak ešte budem mať problém, tak sa určite ozvem.
|
|
Registrovaný: 11.08.10 Prihlásený: 15.01.13 Príspevky: 25 Témy: 3 | 3 |
kam chodis na skolu inac ?
|
|
Registrovaný: 14.03.11 Prihlásený: 20.03.11 Príspevky: 4 Témy: 1 | 1 |
Technická Univerzita v Košiciach odbor INFORMATIKA
|
|
Registrovaný: 31.10.09 Prihlásený: 06.09.23 Príspevky: 124 Témy: 15 | 15 Bydlisko: Košice - Te... |
Zdravím. Pozerám, že Assembler vedie
Skúsim popýtať o radu aj ja (nechcel som zakladať osobitnú tému, preto píšem sem)... dostal som zadanie:
Určte počet slov dlhších ako 5 znakov a výsledok vypíšte v desiatkovej sústave,
Myslel som si, že to zvládnem sám (a že náš profák nám to poriadne vysvetlí), ale nakoniec nič z toho.
Btw, TU v Košiciach, FEI, Informatika (Inf5_Bc_D)...
Nakoniec som si našiel hotové zadanie... s detailom: výsledok prevádza do 16-kovej sústavy
Kód: org 1000
dcx sp ;inicializacia zasobnika (0FFFFh)
lxi h,text ;vypis text call putstr
lxi h,text1 ;vypis text1 call putstr
lxi d,vlozeny ;adresa pre vstup retazca call getline
lxi b,vlozeny
mvi d,5 ;pocet malych pismen mvi e,0 ;pocet cislic push psw ;vlozime si nulu do zasobnika, pocet vyhovujucich slov jmp char_loop
char: mvi d,5 ;vynulovanie pocitadla mvi e,0 ;vynulovanie pocitadla char_loop: ;citanie znakov a pocitanie cislic v slove ldax b ;nacitanie znaku z retazca 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 inr e ;zvysenie poctu cislic o 1 jmp char_loop
pocet_slov: ;pocitanie vyhovujucich slov mov a,d ;presun hodnoty z registra D do akumulatora cmp e ;porovnanie akumulatora a registra E jnc 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,d cmp e ;porovnanie ci slovo obsahuje aspon 2 cislice jnc prevod pop psw inr a ;zvysenie poctu vyhovujucich slov push psw jmp prevod
prevod: ;prevod 4b binarneho cisla na sestnastkove [jednotky] pop psw mov h,a ani 15 ;logicky sucin push psw cpi 10 ;porovnananie ci je cislo mensie ako 10 jc prevod1 pop psw ;ak je mensie skoci na koniec1 mov b,a mvi a,7 add b ;pripocitanie 7, lebo su to pismena, vacsie ako 10 push psw
prevod1: ;prevod 4b binarneho cisla na sestnastkove [desiatky] mov a,h rrc ;posun o 1b doprava rrc rrc rrc ani 15 ;logicky sucin push psw cpi 10 ;porovnananie ci je cislo mensie ako 10 jc vypis ;ak je mensie skoci na koniec1 pop psw mov b,a mvi a,7 add b ;pripocitanie 7 push psw
vypis: ;vypis poctu slov sestnastkovo lxi h,text2 call putstr
pop psw adi '0' call putchar ;vypisanie sestanstkovej cislice [desiatky]
pop psw adi '0' call putchar ;vypisanie sestanstkovej cislice[jednotky]
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 zistuje pocet slov dlhsich ako 5 znakov',10,13 text1: db 'Zadaj retazec, ukonci stlacenim enter ',0,10,13 text2: db 10,13,'Pocet slov, v hexa tvare: 0x',0 vlozeny: ds 50
Ja som sa snažil, ako sa len dalo... ale s týmto proste nepohnem, pričom tu asi len treba zmazať nejaké kusy kódu... pomôžete mi ? THX.
|
|
Registrovaný: 11.08.10 Prihlásený: 15.01.13 Príspevky: 25 Témy: 3 | 3 |
potrebujes iba zmenit cislo z binarnej do desiatkovej cez asmebler? alebo komplet kod?
|
|
Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 1 | 843 | 18.03.2010 20:28 Fico | | v Assembler, C, C++, Pascal, Java | 26 | 4047 | 15.03.2011 13:47 katiMIR | | v Assembler, C, C++, Pascal, Java | 2 | 650 | 23.03.2010 15:55 crazy | | v Assembler, C, C++, Pascal, Java | 5 | 538 | 13.04.2015 20:31 TieSTiK | | v PHP, ASP | 2 | 307 | 23.02.2012 11:18 w3r0 | | v Internetový marketing, SEO, reklama | 1 | 1393 | 06.12.2007 11:05 mondzo | | v PHP, ASP | 6 | 735 | 02.11.2012 14:20 hackerwoody | | v Assembler, C, C++, Pascal, Java | 4 | 2171 | 21.04.2010 9:45 dadesk8 | | v Assembler, C, C++, Pascal, Java | 2 | 939 | 25.08.2007 15:01 cinges | | v Assembler, C, C++, Pascal, Java | 6 | 486 | 05.03.2013 19:25 n0sf3ratus | | v Assembler, C, C++, Pascal, Java | 1 | 1600 | 14.11.2005 22:01 JanoF | | v Assembler, C, C++, Pascal, Java | 1 | 882 | 20.03.2010 20:42 Fico | | v Technológia .NET | 2 | 1572 | 23.08.2009 13:19 piton55 | | v Assembler, C, C++, Pascal, Java | 19 | 833 | 30.01.2012 9:55 Fico | | v Assembler, C, C++, Pascal, Java | 9 | 673 | 09.01.2011 14:16 ethi1ca4l | | v Assembler, C, C++, Pascal, Java | 0 | 508 | 03.05.2010 20:47 Balzer1 |
|