[ Príspevkov: 2 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.03.10
Prihlásený: 18.04.10
Príspevky: 3
Témy: 3 | 3

Ahojte potrebujem pomôcť .

potrebuje aby vystup bol desiatkovo.

ak niekto vie pls pomôžte potrebujem surne

Kód:
org 1000         

start:   dcx sp         ; inicializacia zasobnika (0FFFFh)
   lxi h,text1      ; do HL adresa textu text1-uvodny
   call print         ; vypis text1
   
st1:   lxi h,txt2         ; do HL adresa textu txt2-Vloz text...
   call print         ; vypis txt2
   lxi d,text       ; nacita adresu navestia text do DE - buffer
   call getline       ; nacita riadok z klavesnice na adresu DE
   call tstline      ; test vstupu, ci bol vobec zadany
   mov a,b         ; do A uloz B pocet znakov bez SPACE
   cpi 0         ; Nula zadaych znakov?
   jnz pokr         ; nie, mozem pokracovat v programe
   lxi h,chyba      ; ano, zle zadany vstup
   call print       ; vypise CHYBU na obrazovku
   jmp st1         ; opakuj nacitavanie

pokr:   call osem         ; volaj podprogram osem
   lxi h,text4       ; do HL adresa textu4-Pocet osmickovych...
   call print       ; vypise text4 na obrazovku
   call vypis      ; volaj vypis  / vstup je v reg.B-pocet
end:   hlt          ; zastavi CPU

tstline:   lxi d,text         ; do DE adresa buffra
   mvi b,0         ; nuluj pocitadlo B
cykl2:   ldax d         ; do A uloz ASCII kod znaku
   cpi 32         ; SPACE?   
   jz preskoc         ; ano, preskoc
   cpi 10         ; LF?
   jz konci         ; ano, koniec
   cpi 13         ; CR?
   jz konci         ; ano, koniec
   inr b         ; zvys B+1, bol to znak

preskoc:   inx d         ; zvys DE+1, dalsi znak
   jmp cykl2         ; opakuj testovanie, kym nie je LF+CR
konci:   ret         ; navrat

vypis:    mov a,b
          adi '0'         ; hodnota a jej ASCII tvar ...
          call putchar
          call newline
          hlt
         
   
osem:   lxi d,text         ; uloz do DE adresu nacitaneho textu
   mvi b,0         ; vynuluj pocitadlo B, pocet osmickovych cisiel
   mvi c,0         ; vynuluj pocitadlo pozicie znaku C
citam:   ldax d         ; do A uloz ASCII kod znaku z adresy v DE
   inr c         ; zvys pocitadlo pozicie znaku
   cpi 10         ; LF?
   jz koniec         ; ano, koniec nacitaneho riadku
   cpi 13         ; CR?
   jz koniec         ; ano, koniec nacitaneho riadku
   cpi 38h         ; >7 ?
   jnc dalsi         ; ano, dalsi znak
   cpi 20h         ; MEDZERA ?
   jz space         ; ano, skok na podmienky medzery
            ; ak nie, pokracuj navestim nula:
nula:   cpi 30h         ; porovnaj, ci je znakom nula
   jnz dalsi         ; ak nie je, skoc na dalsi znak
   mov a,c         ; ak je nula, porovnaj s poziciou   
   cpi 1         ; ci je na prvej
   jnz dalsi         ; ak nie j prva nula, skoc na dalsi znak
opakuj:   inx d         ; zvys DE+1 - dalsi znak
   inr c         ; zvys poziciu znaku
   ldax d         ; do A uloz ASCII kod znaku
   cpi 38h         ; >7 ? (v ASCII kode)
   jnc dalsi         ; ano, dalsi znak, ak nie, pokracuj testovanim
   cpi 58h         ; je dalsim znakom X? (hex cislo v ASCII vstupe)
   jz dalsi         ; ak je, skoc na nacitanie dalsieho znaku
   cpi 'x'         ; je dalsim znakom x? (hex cislo v ASCII vstupe)
   jz dalsi         ; ak je, skoc na nacitanie dalsieho znaku
   cpi 10         ; LF?
   jz pocet1         ; skok na pocet, B+1
   cpi 13         ; CR ?
   jz pocet1         ; skok na pocet, B+1
   cpi 30h         ; dalsia 0?
   jz dalsi         ; Ano, je to potom binary cislo, skoc na dalsi
   cpi 20h         ; SPACE ?
   jz pocet         ; ano, skok na pocet, B+1
   jmp opakuj         ; ak nie, cyklus opakuj kym nie je medzera
pocet:   inr b         ; predpoklad osmickoveho cisla, b+1
   jmp space         ; skok na nacitanie dalsieho znaku po SPACE
pocet1:   inr b         ; predpoklad osmickoveho cisla, b+1
   jmp koniec         ; skok na koniec
dalsi:   inx d         ; zvys DE
   jmp citam         ; skok na nacitanie znaku z HL
space:   mvi c,0         ; ak bola znakom medzera, nuluj
   jmp dalsi         ; citaj dalsi znak
koniec:   ret

print:    mov a, m       ; nacitanie znaku z pamate
   inx h       ; posunutie ukazovatela
   cpi 0       ; je znak 0 ?
   rz       ; ak ano, navrat z podprogramu
   out 11h       ; inak vypis znaku
   jmp print       ; a opakovanie cinnosti
text1:    db 'Pocet osmickovych cislic vo vstupe.',10,13,0
text:    ds 255   ; tu sa ulozi nacitany text (buffer)
txt2:   db 'Vloz text (max.255 znakov vratane medzier): ',10,13,0
text4:    db 10,13,'Pocet osmickovych cisel je: ',0
text5:    db 10,13,'Bolo zadanych prave 255 znakov! ',10,13,0   ; chybova hlaska1
chyba:    db 10,13,'Bol zadany prazdny vstup alebo len medzery! ',10,13,0 ; chybova hlaska2

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


Offline

Skúsený užívateľ
Skúsený užívateľ
Asembler- vystup desiatkovo---pls surne

Registrovaný: 11.01.09
Prihlásený: 02.02.25
Príspevky: 1397
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 20.03.2010 20:42 | Asembler- vystup desiatkovo---pls surne

1.) Výstup desiatkovo je, takže buď nevieš, čo je desiatková sústava, alebo nevieš, že ten, kto ti zadanie spravil, predpokladá prvú cifru 0 (napr 0236, 012, ...)
2.) Silne pochybujem, že toto zadanie dokážeš obhájiť. Ak o tom začínaš pochybovať aj ty, dal som ti ľahšie riešenie --> http://www.pcforum.sk/asm-pocet-slov-reprezentujucich-zapis-osmickoveho-cisla-vt87586.html


 [ Príspevkov: 2 ] 


Asembler- vystup desiatkovo---pls surne



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Plis,asembler help:(surne

v Assembler, C, C++, Pascal, Java

2

943

25.08.2007 15:01

cinges

V tomto fóre nie sú ďalšie neprečítané témy.

vystup na sluchadla Výstup pro sluchátka (1xS/PDIF)

v Notebooky a netbooky

1

634

29.06.2011 19:20

rhonin37

V tomto fóre nie sú ďalšie neprečítané témy.

ext USB zvukovka 5.1 vystup a SPDIF vstup/vystup

v Zvuk

5

1551

20.01.2010 15:39

kolacek

V tomto fóre nie sú ďalšie neprečítané témy.

Asembler prevod

v Assembler, C, C++, Pascal, Java

4

2181

21.04.2010 9:45

dadesk8

V tomto fóre nie sú ďalšie neprečítané témy.

Asembler zrychlenie vykonavania cyklu

v Assembler, C, C++, Pascal, Java

6

489

05.03.2013 19:25

n0sf3ratus

V tomto fóre nie sú ďalšie neprečítané témy.

Pascal,Asembler a Win XP

v Assembler, C, C++, Pascal, Java

1

1604

14.11.2005 22:01

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

[Asembler] pocet malych a velkych pismen

v Assembler, C, C++, Pascal, Java

5

545

13.04.2015 20:31

TieSTiK

V tomto fóre nie sú ďalšie neprečítané témy.

SURNE! Potrebujem pomoct s vylepsenim internetu SURNE!

v Siete

15

550

01.03.2013 14:43

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

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

v Assembler, C, C++, Pascal, Java

7

1470

25.03.2011 10:07

dury26

V tomto fóre nie sú ďalšie neprečítané témy.

double vystup

v Zvuk

3

528

21.01.2010 14:29

Tech

V tomto fóre nie sú ďalšie neprečítané témy.

optický výstup

v Zvuk

5

1297

01.11.2007 17:18

apet

V tomto fóre nie sú ďalšie neprečítané témy.

Coaxial vystup

v Ostatné

13

1646

18.09.2011 15:27

BIO

V tomto fóre nie sú ďalšie neprečítané témy.

hdmi vystup

v nVidia čipové sady

1

1477

26.12.2010 13:18

brmbo

V tomto fóre nie sú ďalšie neprečítané témy.

Mŕtvy výstup

v Audio programy

2

520

08.05.2010 22:12

Victorious_

V tomto fóre nie sú ďalšie neprečítané témy.

xml vystup

v PHP, ASP

6

622

21.08.2008 16:07

MKI-Miro

V tomto fóre nie sú ďalšie neprečítané témy.

Formulár - PHP výstup

v PHP, ASP

7

983

04.10.2007 13:04

imcold



© 2005 - 2025 PCforum, edited by JanoF