Szám kiírása

Módszer

Elrejtés

A számok kiírása végső soron karakteresen történik. A számot először 10-es számrendszerben számjegyek sorozatává konvertáljuk, majd a számjegyeket kiírjuk a képernyőre.

A konvertálásban ugyanazt a módszert használhatjuk, mint amit a kettes számrendszerbe való konvertálásnál.

  • A számot iteratívan leosztjuk 10-el,
  • A számjegyeket rögzítjük,
  • Majd a számjegyeket fordított sorrendben kiírjuk a képernyőre.

Az megoldás egy eljárásba szervezve lentebb látható. Az eljárás a kiírandó számot az EAX regiszteren keresztül kapja.

Programkód

Elrejtés

; Itt az eljaras kezdete
kiiro PROC

    MOV     EBX, 10         ; EDX-ben lesz a szamrendszer alapja
    MOV     ECX, 0          ; ECX-ben szamoljuk a karaktereket

    ; Elso ciklus ami kiszamolja a szamjegyeket
konverter:
    XOR     EDX, EDX        ; Az EDX-et ki kell nullazni osztas elott (posztando EDX:EAX)
    DIV     EBX             ; Osztunk
    PUSH    EDX             ; Az utolso szamjegy a maradek EDX-ben. Eltesszuk a verembe.
    INC     ECX             ; Szamoljuk a szamjegyeket
    CMP     EAX, 0          ; Ha meg van a szambol,
    JNE     konverter       ;   akkor megyunk a kovetkezo ciklusra.

    ; Masodik ciklus, ami a szamjegyeket forditott sorrendben kiveszi a verembol.
    ;   Es kiirja azokat.
kiiras:
    POP     EAX             ; Elem kivetele
    ADD     EAX, '0'        ; A szamjegybol karakterkodot kell csinalni.
    CALL    WriteChar       ; Es kiirni

    LOOP    kiiras          ; Vissza akezdethez. ECX-ben megvan a szamjegyek szama.

    RET                     ; Visszateres!!!
kiiro ENDP

Feladatok

Elrejtés

  1. Egészítsük ki a kódrészletet, hogy kezelje az előjeles számokat is!
  2. Írjuk át a kódreszletet, hogy kettes számrendszerben írja ki aszámot!
  3. Írjuk át a kódot, hogy 16-os számrendszerben írjon ki!
  4. Írjuk át a kódrészletet, hogy az EBX-ben kapja meg a számrendszer alapját amiben kiír!