Assembler 8086
Kua tak napisem dvom ludom riesenie a uz to tu zacne cele forum sa pytat. Asi si zacnem inkasovat 15€ za kazdu robotu
:D Tak troska opraste mozgove zavity, sak to je jednoduche... nacitas z klavesnice do buffera, buffer najjednoduchsie deklarujes v kodovom segmente niekde medzi deklarovanymi hodnotami (povedzme resb 255). Nasledne sa uzivatela spytas na vstup, co je dos funkcia 0Ah a v ds:dx mas buffer. A potom uz pomocou string funkcii, lods, scans, movs, pozeras stringy a hras sa s nimi, jesusmaria.
Mne sa s tym tez nechce len tak do luftu s tym srat, mam tez svoje povinnosti...
-
dragoon17
Amateur
- Príspevky: 19
- Registrovaný: 02 okt 2008, 22:27
- Bydlisko: Košice, Intrák
- Kontaktovať používateľa:
asm
cavte vedel by mi niekto poradit s tymto zadanim?:Určte početnosť a percentuálne zastúpenie jednotlivých znakov malej latinskej abecedy vo vstupnom reťazci. Údaje vypíšte pre všetky tieto znaky, ktoré sa vo vstupe vyskytli aspoň raz. Za odpoved dakujem.
inflater
Jaj prepac.... x je retazec a xR je opacny retazec retazca x a x je s mnoziny a,b,c kladnych... (s tym by si sa podla mna ani nemusel zaoberat...) Ak by sa ti to podarilo spravit by som ti bol velmi vdacnyJoey_XD napísal:
Sewas inflater... Nevedel by si mi prosimta spravit programik? Z klávesnice načítajte vstupný retazec ukončený znakom konca riadku a rozhodnite, ci patri do jazyka L={xxR |x€{a,b,c}+}.
//autoeditácia príspevku ( 02 May 2009, 0:01 )
Sewas inflater... Nevedel by si mi prosimta spravit programik? Z klávesnice načítajte vstupný retazec ukončený znakom konca riadku a rozhodnite, ci patri do jazyka L={xxR |x€{a,b,c}+}.
Myslis, ze stredoskolak bude vediet co znamena jazyk L={xxR |x€{a,b,c}+}? Very Happy
pls help
caute chalani pls viete mi niekto pomoct so zadanim???
Napiste program, ktory nacita z klavesnice retazec maximalne 85 znakov, spravi kontrolny vypis retazca na obrazovku , a potom vykona ulohu.
Ulohu realizujte ako externu proceduru. Na spracovanie pola znakov pouzite retazcove instrukcie.
vypise pozicie prvych dvoch velkych pismen v retazci
neviem vobec pouzit tie retazove instrukcie...
pls help
Napiste program, ktory nacita z klavesnice retazec maximalne 85 znakov, spravi kontrolny vypis retazca na obrazovku , a potom vykona ulohu.
Ulohu realizujte ako externu proceduru. Na spracovanie pola znakov pouzite retazcove instrukcie.
vypise pozicie prvych dvoch velkych pismen v retazci
neviem vobec pouzit tie retazove instrukcie...
pls help
Program nacita retazec a hlada slovo ktore som definoval v programe. Moze mi niekto poradit ako a kde mam dat slucku, aby nehladalo len jedno slovo ale viac (napr. 10) ?
Kód: Vybrať všetko
; -----------------------------
; Startovacia hlavicka pre TASM
; -----------------------------
.model small
.stack 100h
.data
zadaj_retazec db 'Zadajte retazec : $'
pocet_slov db 'Pocet slov : $'
z1 db 0
z2 db 0
z3 db 0
z4 db 0
z5 db 0
.code
put_char proc
mov ah, 02h
int 21h
ret
put_char endp
put_string proc
mov ah, 09h
int 21h
ret
put_string endp
get_char proc
mov ah, 01h
int 21h
ret
get_char endp
new_line proc
mov dl, 10
call put_char
mov dl, 13
call put_char
ret
new_line endp
start:
mov ax, @data ; inicializacia data segmetu
mov ds, ax
mov ah, 0h
mov al, 7h
int 10h ; vymazanie obrazovky, nastavenie 80x25
mov dx, offset zadaj_retazec
call put_string
call new_line
mov cl, 0h ; cl - pocitadlo spravnych slov
next_word:
mov ch, 0h ; ch - stavove slovo
; 0 - nic nie je nacitane
; 1 - neobsahuje retazec
; 2 - obsahuje retazec
mov z1, ch ; vynulujeme nacitane znaky
mov z2, ch
mov z3, ch
mov z4, ch
mov z5, ch
read_char: ; nacitanie znaku & jeho vyhodnotenie
cmp cl, 255 ; mame uz plny register
je write_result
call get_char
cmp al,13 ; test na koniec riadku 13 = '\n'
je end_of_read
cmp al,32 ; test na koniec slova 32 = ' '
je end_of_word
mov ah, z2 ; prehodime znaky 2 -> 1, 3 -> 2, 4 -> 3, 4 ->4
mov z1, ah
mov ah, z3
mov z2, ah
mov ah, z4
mov z3, ah
mov ah, z5
mov z4, ah
mov z5, al ; nacitany znak -> 5
cmp ch, 0h ; ak sme este nic nenacitali
jne detect_word
mov ch, 1h ; zmenime stav
detect_word:
cmp z1, 'b' ; ak mame nacitane pismena b, r, e ,a, k
jne read_char
cmp z2, 'r'
jne read_char
cmp z3, 'e'
jne read_char
cmp z4, 'a'
jne read_char
cmp z5, 'k'
jne read_char
mov ch, 2h ; zmenime stav
jmp read_char
end_of_word: ; koniec slova
cmp ch, 2 ; je spravne ?
jne next_word ; ak nie, citame dalsie slovo
inc cl ; inak zaratame dalsie dobre slovo
jmp next_word
end_of_read: ; koniec riadku
cmp ch, 2 ; posledne slovo musime tiez ohodnotit na spravnost - bolo spravne ?
jne write_result ; tak nie :)
inc cl ; zaratame dalsie slovo
write_result: ; vypis vysledku
call new_line
mov dx, offset pocet_slov
call put_string
; vypis poctu slov na obrazovku
; musime previest hodnotu na desiatkovu
mov ch, 16 ; ulozime si najvacsi zaklad
convert:
mov ah, 00h ; ulozime si hodnotu do ax
mov al, cl
div ch ; vydelime zakladom
mov cl, ah ; zvysok si ulozime ako pocet slov
mov dl, al
cmp dl, 9 ; ak je hodnota < 9
jg alpha_value
add dl, '0' ; posunieme tak, aby 0 bola ASCII '0'
jmp write_char
alpha_value:
add dl, 'A' - 9 ; inak tak, aby 0 bola ASCII 'A'
write_char:
call put_char ; nasobok vytlacime
cmp ch, 1 ; ak je uz zaklad = 1 => uz sme previedli vsetky cifry
je end_of_write
mov ah, 0h ; teraz musime zmensit zaklad
mov al, ch
mov dl, 16 ; 16x
div dl
mov ch, al ; zvysok si ulozime
jmp convert ; a pokracujeme
end_of_write:
call new_line
mov ax, 4c00h
int 21h
end start