ASEMBLER:Určte počet slov obsahujúcich reťazec ASM alebo asm

Programovacie jazyky, rady, poradňa...
7764803
Novice
Novice
Príspevky: 8
Registrovaný: 14 mar 2011, 17:01

ASEMBLER:Určte počet slov obsahujúcich reťazec ASM alebo asm

Príspevok od používateľa 7764803 »

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: Vybrať všetko

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.
redge
Light Star
Light Star
Príspevky: 287
Registrovaný: 09 feb 2011, 11:16

Re: ASEMBLER:Určte počet slov obsahujúcich reťazec ASM alebo asm

Príspevok od používateľa redge »

čo je to vlastne soj? úloha od 80 po 90?
není to nejaká úloha
Niečo zo skúškami, že???
7764803
Novice
Novice
Príspevky: 8
Registrovaný: 14 mar 2011, 17:01

Re: ASEMBLER:Určte počet slov obsahujúcich reťazec ASM alebo asm

Príspevok od používateľa 7764803 »

Je to zadanie z predmetu ASEMBLER. Vedel by si to spraviť?
paralen
Light Star
Light Star
Príspevky: 267
Registrovaný: 02 máj 2006, 15:15

Re: ASEMBLER:Určte počet slov obsahujúcich reťazec ASM alebo asm

Príspevok od používateľa paralen »

len si to pekne sprav, lebo ujo simonak ti neda skusku :D
7764803
Novice
Novice
Príspevky: 8
Registrovaný: 14 mar 2011, 17:01

Re: ASEMBLER:Určte počet slov obsahujúcich reťazec ASM alebo asm

Príspevok od používateľa 7764803 »

Ale no tak, z toho ani skúška nie je.
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Re: ASEMBLER:Určte počet slov obsahujúcich reťazec ASM alebo asm

Príspevok od používateľa juho »

az retazec obsahuje postupnost znakov asm Asm tak pricitas 1 az prijde medzera abo bodka abo koniec vstupu co je natom zloziteho
7764803
Novice
Novice
Príspevky: 8
Registrovaný: 14 mar 2011, 17:01

Re: ASEMBLER:Určte počet slov obsahujúcich reťazec ASM alebo asm

Príspevok od používateľa 7764803 »

Ja tomu rozumiem, ale neviem ako to napísať. Mohol by si mi to napísať, bol by som ti veľmi vďačný. Náš cvičiaci na asembleri to vysvetľuje jak mongól, respektíve to nevysvetľuje vôbec.

//autoeditácia príspevku (15 Mar 2011, 19:33)
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: Vybrať všetko

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ť?
Napísať odpoveď