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.
Asembelr 8086 ciferny sucet
Asembelr 8086 ciferny sucet
- Prílohy
-
- cifsuc.rar
- vsetko ku programu
- (21.08 KiB) 32 stiahnutí
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ť.
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ť.