i8086 desiatkova kalkulacka

Programovacie jazyky, rady, poradňa...
inkognitto
Star
Star
Príspevky: 653
Registrovaný: 21 júl 2005, 12:25
Bydlisko: pjj

i8086 desiatkova kalkulacka

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

Prosim vas, som zufaly. Mam zadanie - urobit v ASM kalkulacku, co bude ratat s desiatkovymi cislami (+,-,*,/). Mam taku, co pracuje s osmickovymi cislami, keby to nekomu pomohlo, ze prerobi. Prosim, je tu niekto kto to uz ma spravene, alebo by bol ochotny to spravit ? :cry: Dakujem.
Nioxo
Novice
Novice
Príspevky: 1
Registrovaný: 04 máj 2010, 10:01

Re: i8086 desiatkova kalkulacka

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

Cafko posli mi tu kalkulacku v osmickovej a ja ti to prerobim do desiatkovej.. Na [email protected]
inkognitto
Star
Star
Príspevky: 653
Registrovaný: 21 júl 2005, 12:25
Bydlisko: pjj

Re: i8086 desiatkova kalkulacka

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

Dakujem velmi krasne. Potrebujem to do stvrtka, prosim.
JR55
Novice
Novice
Príspevky: 5
Registrovaný: 21 apr 2010, 9:44

prosim mohol by mi niekto pomoct s mojim vytvorom

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

mohol by mi niekto pomoct. Stale mi to hlasi chybu.
Zadanie:
Načítajte z klávesnice reťazec znakov ukončených znakom konca riadku. Slová vo vstupe sú oddelené najmenej jedným znakom medzera. Uvažujte aj prvé, resp. posledné slovo vstupu. Určte počet čísel menších ako 1. uvedené číslo reprezentovaných slovami. Počet vytlačte dvojkovo.

zdrojak:
%include "asm_io.inc"

segment .data

no1 times 2048 db 0

segment .bss
no2 resb 80

segment .text
global _asm_main

_asm_main:
enter 0,0
pusha
mov ebx,no1
mov edx,no2

mov ebx,0
mov ecx,0
mov edx,0

prve_pismeno:
call read_char
cmp al,20h
jz prve_pismeno
cmp al,0ah
jz koniec1
cmp al,30h
jc znak1
cmp al,40h
jnc znak1

prva_cislica1:
mov byte[edx],al
inc edx
call read_char
cmp al,0ah
jz koniec1
cmp al,20h
jnz dalsia_cislica1
jmp cele_cislo

cele_cislo:
inc cl
call read_char
cmp al,20h
jz cele_cislo
cmp al,0ah
jz koniec2
cmp al,30h
jc znak2
cmp al,40h
jnc znak2
jmp prva_cislica2

prva_cislica2:
mov byte[ebx],al
inc ebx
call read_char
cmp al,0ah
jz koniec2
cmp al,20h
jnz dalsia_cislica2
cmp ebx,edx
jnc nulovanie
inc cl
jmp nulovanie

koniec1:
add cl,'0'
mov eax,ecx
call print_string
popa
mov eax,0
leave
ret

koniec2:
cmp ebx,edx
jnc koniec1
inc cl
jmp koniec1

znak1:
call read_char
cmp al,0ah
jz koniec1
cmp al,20h
jz prve_pismeno
jmp znak1

dalsia_cislica1:
cmp al,30h
jz znak1
cmp al,40h
jnc znak1
jmp prva_cislica1

znak2:
call read_char
cmp al,0ah
jz koniec2
cmp al,20h
jz cele_cislo
jmp znak2

dalsia_cislica2:
cmp al,30h
jz znak2
cmp al,40h
jnc znak2
jmp prva_cislica2


nulovanie:
mov ebx,0
jmp cele_cislo


pls potreboval by som najst chybu a popripade pomoct s tym vytlacenim dvojkovo
Napísať odpoveď