Asembelr 8086 ciferny sucet

Programovacie jazyky, rady, poradňa...
enuwa
Novice
Novice
Príspevky: 2
Registrovaný: 02 apr 2009, 18:40

Asembelr 8086 ciferny sucet

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

Zdravim vsetkych, potreboval by som pomoc.
Mam problem s tymto programom.

Program nacita retazec ukonceny znakom konca riadku, zisti a vypise
slovo reprezentujuce cislo s najvacsim cifernym suctom.


Pre vstup napriklad: 123 456 789
program funguje tak ako ma , vypise sa 24 (7+8+9 = 24)

ale...

Pre vstup napriklad: 123a
program zastavi vykonavanie a nic nevypise. Spravny vysledok by mal byt 0
kedze na vstupe nebolo slovo reprezentujuce 10 cislo.

Myslim si, aspon myslim ,ze problem je z instrukciou

jc cislica

v navesti znak. Nerozumiem preco. Prosim o korekciu alebo vysvetlenie.


Program kompilujem pomocou NASM.


Vsetky potrebne subory k prekladu, zdrojovy kod, ... su v tomto zipku.

Dakujem.
Prílohy
cifsuc.rar
vsetko ku programu
(21.08 KiB) 32 stiahnutí
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

Naštartuj debuger a budeš vedieť, čo sa tam deje.

Inak problém je v tom, že keď sa načíta znak, ktorý nie je číslo, tak sa zvýši ecx a skočí sa na citanie. Načíta sa ďalší znak, a nastane problém. Tým je test, či je ecx rovnaké ako edx. Ak nie je, tak sa skočí na nulovanie a potom zase na citanie (načíta sa znak, porovná ecx s edx, skočí na nulovanie...).

PS: Vždy som si myslel, že píšem neprehľadný kód, ale tomu tvojmu ani ja nedokážem konkurovať. :)
Napísať odpoveď