Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevok: 1 ] 
AutorSpráva
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 : 31.03.2009 20:10

skontrolujte prosím nasledujúci program,
je tam nejaká chyba s prevodom do 2 sústavy , keďže vypisuje v 10 tkovej
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 43       ; nacitany znak sa porovna s '+'
   jz char_add   ; skoci sa na char_add, ak sa rovna
   cpi 42       ;  nacitany znak sa porovna s '*' 
   jz char_add   ;   skoci sa na char_add, ak sa rovna
   cpi 47         ;  nacitany znak sa porovna s '/'
   jz char_add;skoci sa na char_add, ak sa rovna
   cpi 45    ; nacitany znak sa porovna s '-'
   jz char_add;skoci 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 neobsahujucich aritmeticke operatory ...',10,13,'Vloz text: ',0
text2: db 10,13,'Slov je: ',0
vlozeny: ds 30


Odpovedať na tému [ Príspevok: 1 ] 


Podobné témy

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

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

0

708

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

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

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. 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. Kniha : Assembler

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

1

508

16.04.2013 22:34

XOLOO Zobrazenie posledných príspevkov

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. assembler zadanie

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

1

1011

09.03.2010 20:27

ac.milan Zobrazenie posledných príspevkov

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

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

15

1107

16.12.2011 23:24

Ďuri Zobrazenie posledných príspevkov

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

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

0

792

02.02.2008 7:37

HT Zobrazenie posledných príspevkov

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

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

0

677

10.11.2011 18:54

Reverser 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

11

1288

19.05.2010 22:38

JR55 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

3

605

21.04.2009 20:05

Fico Zobrazenie posledných príspevkov

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

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

2

905

22.10.2007 15:04

programator 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

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

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

5

1291

02.04.2010 20:44

Fico Zobrazenie posledných príspevkov

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

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

23

1205

18.04.2012 7:17

Fico Zobrazenie posledných príspevkov

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

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

5

1158

17.10.2009 17:13

Logik 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