Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 4 ] 
AutorSpráva
Offline

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

Registrovaný: 20.03.09
Prihlásený: 01.05.09
Príspevky: 4
Témy: 3
Príspevok NapísalOffline : 28.03.2009 10:50

cawte, potreboval by som pomoct s binarnym vypisom programu. Ulohou programu je pocitat slova, ktore obsahuju len velke pismena abecedy a tento pocet ma byt vypisany v dvojkovej sustave. Program, aspon myslim, ze je kompletny (nejako som ho pozliepal), len mam pocit, ze je tam problem s registrami (asi som ich pomiesal), proste ocekujte to pls niekto, diky.

Kód:


org 1000         

dcx sp         ; inicializacia zasobnika (0FFFFh)

lxi h,text1      ; skopiruj text1 do h
call putstr      ; vypis uvodny text

mvi b,0         ; pocitadlo vyhovujucich slov
mvi c,0         ; pocitadlo vyhovujucich znakov v slove
mvi d,0         ; pocitadlo vsetkych znakov v slove


char_loop:
   call getchar   ; nacita sa zadany znak do registra "a"
   cpi 10      ; porovna sa register "a" s backspacom 
   jz char_end   ; skoci sa na char_end, ak sa rovna
   cpi 13      ; porovna sa register "a" s enterom
   jz char_end   ; skoci sa na char_end, ak sa rovna
   cpi 32      ; porovna sa register "a" s medzerou
   jz char_space   ; skoci sa na char_space, ak sa rovna
   cpi 65       ; nacitany znak sa porovna s 'A'
   jz char_add   ; skoci sa na char_add, ak sa rovna
   cpi 66       ; dalej sa nacitavaju a porovnavaju vsetky ASCII     
   jz char_add   ;   kody znakov velkej abecedy, az po 'Z'
   cpi 67           
   jz char_add
   cpi 68    
   jz char_add
   cpi 69    
   jz char_add
   cpi 70    
   jz char_add
   cpi 71    
   jz char_add
   cpi 72    
   jz char_add
   cpi 73    
   jz char_add
   cpi 74    
   jz char_add
   cpi 75    
   jz char_add
   cpi 76    
   jz char_add
   cpi 77    
   jz char_add
   cpi 78    
   jz char_add
   cpi 79    
   jz char_add
   cpi 80    
   jz char_add
   cpi 81    
   jz char_add
   cpi 82    
   jz char_add
   cpi 83    
   jz char_add
   cpi 84    
   jz char_add
   cpi 85    
   jz char_add
   cpi 86    
   jz char_add
   cpi 87    
   jz char_add
   cpi 88    
   jz char_add
   cpi 89    
   jz char_add
   cpi 90      ; nacitany znak sa porovna so 'Z'
   jz char_add   ; skonci sa na char_add, ak sa rovna
   inr d      ; inkrementuje sa pocitadlo vsetkych znakov v slove
   jmp char_loop   ; nacita sa dalsi znak

char_add:
   inr c      ; inkrementuje sa pocitadlo vyhovujucich znakov v slove
   inr d      ; inkrementuje sa pocitadlo vsetkych znakov v slove
   jmp char_loop   ; nacita sa dalsi znak

char_space:
   mov a,d      ; pocitadlo vsetkych znakov v slove sa skopiruje do registra "a"
   cpi 0      ; nebola prvy znak medzera?
   jz char_loop    ; ak ano, nacita sa dalsi znak
   cmp c      ; porovna sa, ci vsetky znaky boli vyhovujuce
   mvi d,0      ; vynuluje sa pocitadlo vsetkych znakov v slove
   mvi c,0      ; vynuluje sa pocitadlo vyhovujucich znakov v slove
   jnz char_loop   ; nacita sa dalsi znak
   inr b      ; inkrementuje sa pocitadlo vyhovujucich slov
   jmp char_loop   ; nacita sa dalsi znak

char_end:
   mov a,d      ; skopiruje sa pocitadlo vsetkych znakov v slove do registra "a"
   cpi 1      ; ak nie su ziadne dalsie znaky,
   jc print      ;    pokracuje sa vo vypise
   cmp c      ; inak sa kontroluje, ci posledne slovo bolo spravne
   jnz print      ; ak nie, pokracuje sa vo vypise
   inr b      ; ak ano, inkrementuje sa pocitadlo vyhovujucich slov

celociselny_zvisok_po_deleni:
sub b            ; odcita b od a
cmp b            ; porovna b s a
jnc celociselny_zvisok_po_deleni   ; ak je a < b skonci
ret            ; vrati sa spet

delenie_celeho_cisla:
mvi h,0;
_delenie:
sub b            ; odcita b od a
inr h            ; zvisi h
cmp b            ; porovna b s a
jnc _delenie         ; ak je a < b skonci
mov a, h            
ret            ; vrati sa spet

binarny_prevod:
mvi a,0            ; do registra a da 0
sta 20            ; zapise obsah registra a do pamete 20
sta 21            ; zapise obsah registra a do pamete 21
sta 22            ; zapise obsah registra a do pamete 22
sta 23            ; zapise obsah registra a do pamete 23
sta 24            ; zapise obsah registra a do pamete 24
sta 25            ; zapise obsah registra a do pamete 25
sta 26            ; zapise obsah registra a do pamete 26
sta 27            ; zapise obsah registra a do pamete 27
sta 28            ; zapise obsah registra a do pamete 28
sta 29            ; zapise obsah registra a do pamete 29

mov a, c            ; do registra a da obsah registra c
sta 20            ; zapise obsah registra a do pamete 20
mvi b,2            ; do registra b da 2

call celociselny_zvisok_po_deleni   ; zavola celociselny_zvisok_po_deleni
sta 22            ; zapise obsah registra a do pamete 22
lda 20            ; obsah pamete 20 da do registra a

call delenie_celeho_cisla      ; zavola delenie_celeho_cisla
sta 21            ; zapise obsah registra a do pamete 21
call celociselny_zvisok_po_deleni   ; zavola celociselny_zvisok_po_deleni
sta 23            ; zapise obsah registra a do pamete 23
lda 21            ; obsah pamete 21 da do registra a
call delenie_celeho_cisla      ; zavola delenie_celeho_cisla
sta 21            ; zapise obsah registra a do pamete 21
call celociselny_zvisok_po_deleni   ; zavola celociselny_zvisok_po_deleni
sta 24            ; zapise obsah registra a do pamete 24
lda 21            ; obsah pamete 21 da do registra a
call delenie_celeho_cisla      ; zavola delenie_celeho_cisla
sta 21            ; zapise obsah registra a do pamete 21
call celociselny_zvisok_po_deleni   ; zavola celociselny_zvisok_po_deleni
sta 25            ; zapise obsah registra a do pamete 25
lda 21            ; obsah pamete 21 da do registra a
call delenie_celeho_cisla      ; zavola delenie_celeho_cisla
sta 21            ; zapise obsah registra a do pamete 21
call celociselny_zvisok_po_deleni   ; zavola celociselny_zvisok_po_deleni
sta 26            ; zapise obsah registra a do pamete 26
lda 21            ; obsah pamete 21 da do registra a
call delenie_celeho_cisla      ; zavola delenie_celeho_cisla
sta 21            ; zapise obsah registra a do pamete 21
call celociselny_zvisok_po_deleni   ; zavola celociselny_zvisok_po_deleni
sta 27            ; zapise obsah registra a do pamete 27
lda 21             ; obsah pamete 21 da do registra a
call delenie_celeho_cisla      ; zavola delenie_celeho_cisla
sta 21            ; zapise obsah registra a do pamete 21
call celociselny_zvisok_po_deleni   ; zavola celociselny_zvisok_po_deleni
sta 28            ; zapise obsah registra a do pamete 28
lda 21            ; obsah pamete 21 da do registra a
call delenie_celeho_cisla      ; zavola delenie_celeho_cisla
sta 21            ; zapise obsah registra a do pamete 21
call celociselny_zvisok_po_deleni   ; zavola celociselny_zvisok_po_deleni
sta 29            ; zapise obsah registra a do pamete 29
lda 29            ; obsah pamete 29 da do registra a

adi 48            ; k obsahu registra a pripocita 48
out 11h            ; vypise obsah registra a na obrazovku
lda 28            ; obsah pamete 28 da do registra a
adi 48            ; k obsahu registra a pripocita 48
out 11h            ; vypise obsah registra a na obrazovku
lda 27            ; obsah pamete 27 da do registra a
adi 48            ; k obsahu registra a pripocita 48
out 11h            ; vypise obsah registra a na obrazovku
lda 26            ; obsah pamete 26 da do registra a
adi 48            ; k obsahu registra a pripocita 48
out 11h            ; vypise obsah registra a na obrazovku
mvi a,' '            ; do registra a da ' '
out 11h            ; vypise obsah registra a na obrazovku
lda 25            ; obsah pamete 25 da do registra a
adi 48            ; k obsahu registra a pripocita 48
out 11h            ; vypise obsah registra a na obrazovku
lda 24            ; obsah pamete 24 da do registra a
adi 48            ; k obsahu registra a pripocita 48
out 11h            ; vypise obsah registra a na obrazovku
lda 23            ; obsah pamete 23 da do registra a
adi 48            ; k obsahu registra a pripocita 48
out 11h            ; vypise obsah registra a na obrazovku
lda 22            ; obsah pamete 22 da do registra a
adi 48            ; k obsahu registra a pripocita 48
out 11h            ; vypise obsah registra a na obrazovku
ret            ; vrati sa spet

print:
   lxi h,text2   ; skopiruje sa text2 do h
   call putstr   ; vypise sa text2
   mov a,b      ; skopiruje sa pocitadlo vyhovujucich slov do registra "a"   
   adi '0'      ; hodnota a jej ASCII tvar ...
   call putchar   ; vypise sa znak
   call newline   ; vypise sa novy riadok
   




hlt      ; ukonci sa program

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'

text1: db 'Pocet slov obsahujucich len velke pismena ...',10,13,'Vloz text: ',0
text2: db 10,13,'Slov je: ',0
vlozeny: ds 30


Offline

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

Registrovaný: 14.03.09
Prihlásený: 16.10.13
Príspevky: 25
Témy: 10
Príspevok NapísalOffline : 28.03.2009 17:58

čo tak v 10 tkovej sústave


Offline

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

Registrovaný: 20.03.09
Prihlásený: 01.05.09
Príspevky: 4
Témy: 3
Príspevok Napísal autor témyOffline : 28.03.2009 19:24

bbeni píše:
čo tak v 10 tkovej sústave


musi to byt v dvojkovej


Offline

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

Registrovaný: 14.03.09
Prihlásený: 16.10.13
Príspevky: 25
Témy: 10
Príspevok NapísalOffline : 29.03.2009 13:12

ako by to bolo 10 tkovej sústave


Odpovedať na tému [ Príspevkov: 4 ] 


Podobné témy

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

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

1

297

24.03.2013 22:07

walther Zobrazenie posledných príspevkov

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

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

1

436

12.04.2010 21:20

dEVIANT Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. assembler i8080 - jedna mala chyba, pls help

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

10

945

21.04.2010 17:20

JR55 Zobrazenie posledných príspevkov

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

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

0

405

13.04.2015 19:22

Matadot Zobrazenie posledných príspevkov

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

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

2

842

28.05.2008 15:25

HT Zobrazenie posledných príspevkov

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

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

3

926

07.12.2007 11:17

sento Zobrazenie posledných príspevkov

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

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

2

699

27.03.2010 19:10

blw90 Zobrazenie posledných príspevkov

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

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

1

606

28.03.2009 17:39

bbeni Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. i8080 pretečenie akumulátora - problém

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

0

247

12.04.2013 2:23

AM-JP Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Asm i8080: vypisat pocet slov s dlzkou 2 az 5 znakov

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

26

3984

15.03.2011 13:47

katiMIR Zobrazenie posledných príspevkov

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

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

1

1493

10.11.2006 18:14

Marco Zobrazenie posledných príspevkov

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

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

0

709

01.04.2009 21:02

bbeni Zobrazenie posledných príspevkov

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

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

8

1723

13.03.2007 20:39

My-reC Zobrazenie posledných príspevkov

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

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

0

792

31.03.2009 20:10

bbeni Zobrazenie posledných príspevkov

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

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

4

760

21.11.2007 9:49

euthanan Zobrazenie posledných príspevkov

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

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

2

610

27.03.2009 20:33

Ivan11114 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra