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

Zobrazi prspevky

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Zobrazi prspevky Menu

Messages - erik701

#1
2. ročník / Re: FJAP
29.10.2011, 05:04:36
Ak niekto robí zadania tak PM prosím a nejako sa dohodneme.
#2
Úvod do programovania a sietí (Valéria Novitzká, Marek Paralič, Branislav Sobota 2008) - 3 €
Základy inžinierstva materiálov (Alena Pietriková, Juraj Banský 2007) - 5  €
Základy elektrotechnického inžinierstva (Marek Orendáč, Iveta Tomčíková 2005) - presvietené 2 €

PM alebo 0911 448 041
#3
Ja by som potreboval poradiť s mojím zadaním: Určte počet slov obsahujúcich reťazec ASM alebo asm.
Niečo už mám po preróbke iného zadanie, ale hľadá to len slová ktoré obsahujú iba A,S,M,a,s,m alebo ich kombináciu.
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ť?