Assembly-Sprache, die wie das Inkrementieren des multi-stellige dezimale ASCII-strings?

so, ich habe diesen Teil des Codes

    mov SI, 0002
    mov ah, INPUT[SI]
    INC SI
    mov al, INPUT[SI]
    sub AX, 3030h
    aad
    inc al
    cmp byte ptr INPUT[0002], 39h
    jne OTHER



OTHER: aam
       add ax, 3030h
       mov INPUT[0003], al
       mov INPUT[0002], ah

wobei die Eingabe die Eingabe des Benutzers.
Was dieser code macht ist die Schrittweite eine 2-stellige Zahl,
mein problem, wenn einer dreistelligen Zahl wird erhöht werden.

Beispiel:
Eingang: 98
Ausgabe: 99

Eingang: 99
Ausgang: 110

Gewünschten Ergebnisse:
Input: 99
Leistung: 100

  • Ist dies umm, Hausaufgaben?
  • aam? aad? Heilige 8086, Batman!
  • Nach der Umwandlung sowohl als Eingabe-Ziffern 0-9 ganze zahlen in AX, nur Inkrement, das niedrige, ohne tragen von AL nach AH. So würde der code tun 39 -> 30 statt 40. Umgang mit 3-stelligen Ergebnissen in einem separaten und schwieriger problem. Auch jne OTHER ist nutzlos, weil beide Seiten der Branche (fall-through-oder getroffen) sind am gleichen Ort. Auch, die ersten 4 Anweisungen konnten nur mov ax, [INPUT+2] / xchg al,ah. (Oder effizienter rol ax, 8, es sei denn, Sie müssen rückwärts compat mit 8086, die nicht sofort dreht mit count > 1)
  • Wenn der input ist garantiert nur 2 Ziffern (oder noch einfacher, genau 2 Ziffern), dann '99' ist das nur der spezielle Fall und man konnte nur überprüfen.
InformationsquelleAutor user1512632 | 2012-07-09
Schreibe einen Kommentar