World's most popular travel blog for travel bloggers.

Object-oriented programming (OOP) is a programming language model organized around objects rather than "actions" and data rather than logic. Historically, a program has been viewed as a logical procedure that takes input data, processes it, and produces output data.
The programming challenge was seen as how to write the logic, not how to define the data. Object-oriented programming takes the view that what we really care about are the objects we want to manipulate rather than the logic required to manipulate them. Examples of objects range from human beings (described by name, address, and so forth) to buildings and floors (whose properties can be described and managed) down to the little widgets on a computer desktop (such as buttons and scroll bars).
The first step in OOP is to identify all the objects the programmer wants to manipulate and how they relate to each other, an exercise often known as data modeling. Once an object has been identified,  it is generalized as a class of objects (think of Plato's concept of the "ideal" chair that stands for all chairs) which defines the kind of data it contains and any logic sequences that can manipulate it.
Object-Oriented Programming has the following advantages over conventional approaches:
  • OOP provides a clear modular structure for programs which makes it good for defining abstract datatypes where implementation details are hidden and the unit has a clearly defined interface.
  • OOP makes it easy to maintain and modify existing code as new objects can be created with small differences to existing ones.
  • OOP provides a good framework for code libraries where supplied software components can be easily adapted and modified by the programmer. This is particularly useful for developing graphical user interfaces.


SYS_EXIT  equ 1
SYS_READ  equ 3
SYS_WRITE equ 4
STDIN     equ 0
STDOUT    equ 1

segment .data

   msg1 db "Enter a digit ", 0xA,0xD
   len1 equ $- msg1

   msg2 db "Please enter a second digit", 0xA,0xD
   len2 equ $- msg2

   msg3 db "The sum is: "
   len3 equ $- msg3

segment .bss

   num1 resb 2
   num2 resb 2
   res resb 1   

section  .text
   global _start    ;must be declared for using gcc
        
_start:             ;tell linker entry point
   mov eax, SYS_WRITE        
   mov ebx, STDOUT        
   mov ecx, msg1        
   mov edx, len1
   int 0x80               

   mov eax, SYS_READ
   mov ebx, STDIN 
   mov ecx, num1
   mov edx, 2
   int 0x80           

   mov eax, SYS_WRITE       
   mov ebx, STDOUT        
   mov ecx, msg2         
   mov edx, len2        
   int 0x80

   mov eax, SYS_READ 
   mov ebx, STDIN 
   mov ecx, num2
   mov edx, 2
   int 0x80       

   mov eax, SYS_WRITE        
   mov ebx, STDOUT        
   mov ecx, msg3         
   mov edx, len3        
   int 0x80

   ; moving the first number to eax register and second number to ebx
   ; and subtracting ascii '0' to convert it into a decimal number
        
   mov eax, [num1]
   sub eax, '0'
        
   mov ebx, [num2]
   sub ebx, '0'

   ; add eax and ebx
   add eax, ebx
   ; add '0' to to convert the sum from decimal to ASCII
   add eax, '0'

   ; storing the sum in memory location res
   mov [res], eax

   ; print the sum
   mov eax, SYS_WRITE       
   mov ebx, STDOUT
   mov ecx, res        
   mov edx, 1       
   int 0x80

exit:   
  
   mov eax, SYS_EXIT  
   xor ebx, ebx
   int 0x80
When the above code is compiled and executed, it produces the following result −
Enter a digit:
3
Please enter a second digit:
4
The sum is:
7
The program with hardcoded variables −
section  .text
   global _start    ;must be declared for using gcc
        
_start:             ;tell linker entry point
   mov   eax,'3'
   sub     eax, '0'
        
   mov   ebx, '4'
   sub     ebx, '0'
   add   eax, ebx
   add   eax, '0'
        
   mov   [sum], eax
   mov   ecx,msg 
   mov   edx, len
   mov   ebx,1    ;file descriptor (stdout)
   mov   eax,4    ;system call number (sys_write)
   int   0x80     ;call kernel
        
   mov   ecx,sum
   mov   edx, 1
   mov   ebx,1    ;file descriptor (stdout)
   mov   eax,4    ;system call number (sys_write)
   int   0x80     ;call kernel
        
   mov   eax,1    ;system call number (sys_exit)
   int   0x80     ;call kernel
        
section .data
   msg db "The sum is:", 0xA,0xD
   len equ $ - msg  
   segment .bss
   sum resb 1