Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .MODEL SMALL
- .STACK 100H
- .DATA
- .CODE
- PROC MAIN
- MOV AX, @DATA
- MOV DS, AX
- PUSH 1 ; SS:BP+6 (a)
- PUSH 2 ; SS:BP+4 (b)
- CALL ADD_NUMBERS
- MOV DX, AX ; SS:BP+2 (return address)
- ADD DX, 48
- MOV AH, 2
- INT 21H
- MOV AH, 4CH
- INT 21H
- ENDP
- PROC ADD_NUMBERS
- ;PROLOGUE
- PUSH BP ; SS:BP (local stack frame)
- MOV BP, SP
- ;SAVE REGISTERS
- PUSH SI ; SS:BP-2
- PUSH DI ; SS:BP-4
- PUSH BX ; SS:BP-6
- ; LOCAL VARIABLE
- SUB SP, 2 ; SS:BP-8 (c)
- ; CALCULATE ; a = b+c
- MOV BX, SS:BP+6 ; (mov a to bx)
- ADD BX, SS:BP+4 ; (add b to bx)
- MOV SS:BP-8, BX ; (mov bx to c)
- ; RETURN
- MOV AX, SS:BP-8 ; (save return value c to ax)
- ; CLEAN VARIABLES
- ADD SP, 2 ; (delete local variable)
- ;RESTORE REGISTERS
- POP BX
- POP DI
- POP SI
- ;EPILOGUE
- MOV SP, BP ; (reset base frame)
- POP BP
- RET
- END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement