Advertisement
Bobita

tema5

Nov 21st, 2023
813
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. data SEGMENT
  2.  
  3. new_print DB 0Ah,0Dh,"$"
  4. data ENDS
  5.  
  6. code SEGMENT
  7. ASSUME CS:code, DS:data
  8.  
  9.  
  10. rec PROC
  11.     CMP BX, 0             ;verifica daca a ajuns cu contorul la 0
  12.     JE GOBACK
  13.     PUSH BX               ;face push la valoarea curenta a contorului
  14.     DEC BX                ;decrementeaza contorul
  15.     CALL rec              ;apeleaza functia recursiv
  16.     POP BX                ; in cazul in care contorul ajunge la 0 se scot valorile salvate pe stiva
  17.     INC DX                ; aduna alt contor pe masura sunt scoase val din stiva
  18.     ADD AX, DX            ;face efectiv adunarea
  19.     GOBACK: MOV BX, AX    ;se copiaza rezultatul in bx
  20.    
  21.     RET
  22. rec ENDP
  23.  
  24. ; print in hexa
  25. afis PROC
  26.     MOV AL, BL
  27.     MOV AH, 00h
  28.     MOV CX, 2
  29.  
  30. CONVERSIE:
  31.     ROL AL, 4 ;primele 4 caractere se muta la stanga
  32.     PUSH AX
  33.     AND AL, 0Fh; procura primele 4(acum ultimele 4) caractere  
  34.     ADD AL, '0' ;converteste in ascii
  35.     CMP AL, '9' ;compara cu 9
  36.     JBE CIFRA  ; verif daca e<10 si daca da, sare
  37.     ADD AL, 7;daca nu trateaza cazul A-F
  38. CIFRA:
  39.     MOV DL, AL ;da store la ASCII in buffer
  40.     MOV AH, 02h
  41.     INT 21h
  42.     POP AX
  43.     DEC CX ; DECREMENTEAZA
  44.     LOOP CONVERSIE
  45.  
  46.     MOV DL, 0Ah
  47.     MOV AH, 02h ;serviciu de afișare asociat întreruperii INT 21H – Display output
  48.     INT 21h
  49.  
  50.     RET
  51. afis ENDP
  52.  
  53. start:
  54. MOV AX, data
  55. MOV DS, AX
  56.  
  57. MOV AX, 0
  58. MOV BX, 06h
  59. MOV DX, 0
  60. call rec
  61. call afis
  62.  
  63. MOV AH, 4Ch
  64. INT 21h
  65.  
  66. code ENDS
  67. END start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement