Assembler 8080 prosííííím pomôžte

Programovacie jazyky, rady, poradňa...
andrealovasova
Novice
Novice
Príspevky: 4
Registrovaný: 29 apr 2009, 16:52
Bydlisko: Košice

Assembler 8080 prosííííím pomôžte

Príspevok od používateľa andrealovasova »

Ahojte. Chcem pomôct kamarátovi so zadaním na assembler, prosiiiim pomôžte.
Zadanie je na procesor 8080:

Načítajte z klávesnice reťazec znakov ukončený znakom „nového riadku“. Slová vo vstupe sú oddelené najmenej jedným znakom „medzera“. Uvažujte aj prvé, resp. posledné slovo vstupu. Určte počet slov reprezentujúcich zápis osmičkového čísla (začína znakom 0, napr. 015) podľa syntaxu jazyka C. Počet (0-255)vytlačte osmičkovo.

Prosiiiiiiiim :(
bbeni
Novice
Novice
Príspevky: 3
Registrovaný: 29 apr 2009, 20:47

Assembler 8080

Príspevok od používateľa bbeni »

tu je niečo podobne

Kód: Vybrať všetko

rg 1000			; povod

dcx sp			; inicializacia zasobnika (0FFFFh)

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

mvi h,0			; pocitadlo vsetkych znakov v slove
mvi d,0			; pocitadlo spravnych znakov v slove
mvi b,0			; pocitadlo spravnych slov

citaj:
	call getchar	; nacitame znak
	cpi 10		; enter ? 
	jz kontrola	; skoc na vystupnu kontrolu
	cpi 13		; enter ?
	jz kontrola	; skoc na vystupnu kontrolu
	cpi 32		; medzera ?
	jz medzera		; skoc na navestie medzera
	cpi '0' 		; porovname s 0
	jz pridajznak	; skoc na navestie pridajznak
	cpi '1'		; porovname s 1
	jz pridajznak	; skonc na navestie pridajznak
	inr h		; inkrementuj pocitadlo vsetkych znakov
	jmp citaj		; nacitaj dalsi znak

pridajznak:
	inr d		; inkrementuj pocitadlo vsetkych znakov
	inr h		; inkrementuj pocitadlo spravnych znakov
	jmp citaj		; nacitaj dalsi znak

medzera:
	mov a,h		; skopiruj pocitadlo vsetkych znakov do akumulatora
	cpi 0		; nebola prvy znak medzera?
	jz citaj 		; ak ano nacitaj dalsi znak
	cmp d		; porovnaj ci vsetky znaky boli spravne
	mvi h,0		; vynuluj pocitadlo vsetkych znakov
	mvi d,0		; vynuluj pocitadlo spravnych znakov
	jnz citaj		; nacitaj dalsi znak
	inr b		; inkrementuj pocitadlo spravnych slov
	jmp citaj		; nacitaj dalsi znak

kontrola:
	mov a,h		; skopiruj pocitadlo vsetkych znakov do akumulatora
	cpi 1		; nemame ziadne dalsie znaky?
	jc vypis		; ak nie pokracuj vo vypise
	cmp d		; inak skontroluj ci posledne slovo bolo spravne
	jnz vypis		; ak nie pokracuj vo vypise
	inr b		; ak ano tak inkrementuj poslednykrat pocitadlo spravnych slov

vypis:
	lxi h,text2	; skopiruj text2 do h
	call putstr	; vypis text2
	mov a,b		; skopiruj pocitadlo spravnych slov do akumulatora	
	adi '0'		; hodnota a jej ASCII tvar ...
	call putchar	; vypis znak
	call newline	; vypis novy riadok
	hlt		; ukonci 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 reprezentujucich binarny zapis cisla ...',10,13,'Vloz text: ',0
text2: db 10,13,'Spravnych slov: ',0
vlozeny: ds 30iadok
	hlt		; ukonci 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 reprezentujucich binarny zapis cisla ...',10,13,'Vloz text: ',0
text2: db 10,13,'Spravnych slov: ',0
vlozeny: ds 30
// Zdrojove kody umiestnujeme do

Kód: Vybrať všetko

. Upravil Tomasito [/color][/size]
Napísať odpoveď