Advertisement
Guest User

Untitled

a guest
May 27th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. .MODEL SMALL
  2. .STACK 100H
  3. .DATA
  4. .CODE
  5.  
  6. PROC MAIN
  7.  
  8. MOV AX, @DATA
  9. MOV DS, AX
  10.  
  11. PUSH 1 ; SS:BP+6 (a)
  12. PUSH 2 ; SS:BP+4 (b)
  13.  
  14. CALL ADD_NUMBERS
  15.  
  16. MOV DX, AX ; SS:BP+2 (return address)
  17. ADD DX, 48
  18. MOV AH, 2
  19. INT 21H
  20.  
  21. MOV AH, 4CH
  22. INT 21H
  23.  
  24. ENDP
  25.  
  26. PROC ADD_NUMBERS
  27. ;PROLOGUE
  28. PUSH BP ; SS:BP (local stack frame)
  29. MOV BP, SP
  30.  
  31. ;SAVE REGISTERS
  32. PUSH SI ; SS:BP-2
  33. PUSH DI ; SS:BP-4
  34. PUSH BX ; SS:BP-6
  35.  
  36. ; LOCAL VARIABLE
  37. SUB SP, 2 ; SS:BP-8 (c)
  38.  
  39. ; CALCULATE ; a = b+c
  40. MOV BX, SS:BP+6 ; (mov a to bx)
  41. ADD BX, SS:BP+4 ; (add b to bx)
  42. MOV SS:BP-8, BX ; (mov bx to c)
  43.  
  44. ; RETURN
  45. MOV AX, SS:BP-8 ; (save return value c to ax)
  46.  
  47. ; CLEAN VARIABLES
  48. ADD SP, 2 ; (delete local variable)
  49.  
  50. ;RESTORE REGISTERS
  51. POP BX
  52. POP DI
  53. POP SI
  54.  
  55. ;EPILOGUE
  56. MOV SP, BP ; (reset base frame)
  57. POP BP
  58. RET
  59.  
  60. END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement