Informatică, întrebare adresată de vasicretu28p4gd39, 8 ani în urmă

IN TASM:
Citiți 2 cifre și efectuați scăderea (cifra1 - cifra2). Afișați rezultatul în zecimal, incluzând un „+” dacă rezultatul este pozitiv sau un „-” dacă este negativ.
Se presupune că inputul este corect (la rulare, userul apasă doar taste conținând cifre).
Nu se acceptă varianta în care se inversează scăderea (făcând cifra2-cifra1).

Exemple de execuție:

Introdu prima cifra: 7
Introdu a doua cifra: 5
Rezultat: +2

Introdu prima cifra: 2
Introdu a doua cifra: 9
Rezultat: -7

Răspunsuri la întrebare

Răspuns de lucaciucandrei
1

.model small

.stack 100h

.data

   result db ?

.code

   mov ax, @data

   mov ds, ax

   ; Citim cifra1

   mov ah, 0

   mov dx, offset cifra1_prompt

   int 21h

   mov ah, 1

   int 21h

   sub al, '0'

   mov bl, al

   ; Citim cifra2

   mov ah, 0

   mov dx, offset cifra2_prompt

   int 21h

   mov ah, 1

   int 21h

   sub al, '0'

   mov cl, al

   ; Facem scaderea

   sub bl, cl

   mov result, bl

   ; Verificam daca rezultatul este pozitiv sau negativ

   cmp result, 0

   jge afisare_pozitiva

   ; Daca rezultatul este negativ, afisam semnul "-"

   mov dl, '-'

   mov ah, 2

   int 21h

   jmp afisare_finala

afisare_pozitiva:

   ; Daca rezultatul este pozitiv, afisam semnul "+"

   mov dl, '+'

   mov ah, 2

   int 21h

afisare_finala:

   ; Afisam rezultatul

   add result, '0'

   mov dl, result

   mov ah, 2

   int 21h

   ; Sfarsitul programului

   mov ah, 0

   int 21h

.data

   cifra1_prompt db "Introdu prima cifra: ", 0

   cifra2_prompt db "Introdu a doua cifra: ", 0

Alte întrebări interesante