i8086 desiatkova kalkulacka
-
inkognitto
Star
- Príspevky: 653
- Registrovaný: 21 júl 2005, 12:25
- Bydlisko: pjj
i8086 desiatkova kalkulacka
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 ?
Dakujem.
Re: i8086 desiatkova kalkulacka
Cafko posli mi tu kalkulacku v osmickovej a ja ti to prerobim do desiatkovej.. Na [email protected]
-
inkognitto
Star
- Príspevky: 653
- Registrovaný: 21 júl 2005, 12:25
- Bydlisko: pjj
Re: i8086 desiatkova kalkulacka
Dakujem velmi krasne. Potrebujem to do stvrtka, prosim.
prosim mohol by mi niekto pomoct s mojim vytvorom
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
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