TITLE CALLS ASSUME CS:CODE,DS:DATA,SS:SOROS CODE SEGMENT main proc MOV AX,DATA MOV DS,AX ;PROGRAM STARTS HERE ;------------------------------------------------------- ;A.Call By Value (cbv) ;A1.Call By Value (USING: register) mov al,data1 call cbv_register_print ;A2.Call By Value (USING: stack) mov al,data1 mov ah,0 push ax call cbv_stack_print add sp,2 ;B.Call By Rererence (cbr) ;B1.Call By Reference (USING: register) lea dx,data1 ; OR mov dx,offset data1 call cbr_register_print ;B2.Call By Reference (USING: stack) lea dx,data1 push dx call cbr_stack_print add sp,2 ;------------------------------------------------------- ;PROGRAM ENDS HERE MOV AH,4CH INT 21H main endp cbv_register_print proc mov dl,al mov ah,02h int 21h ret cbv_register_print endp cbv_stack_print proc mov bp,sp mov dx,[bp+2] mov ah,02h int 21h ret cbv_stack_print endp cbr_register_print proc mov bx,dx mov dl,[bx] mov ah,02h int 21h ret cbr_register_print endp cbr_stack_print proc mov bp,sp mov bx,[bp+2] mov dl,[bx] mov ah,02h int 21h ret cbr_stack_print endp CODE ENDS DATA SEGMENT data1 db 30h DATA ENDS SOROS SEGMENT STACK DB 256 DUP(0) SOROS ENDS END main