Implementation of Distance Vector Routing (DVR) Algorithm in C++

Distance Vector Routing (DVR) is a fundamental algorithm in computer networking used for finding the shortest path between nodes in a network. This blog post explores a C++ implementation of the DVR algorithm, demonstrating how it calculates and updates routing tables dynamically.

What is Distance Vector Routing?

DVR is a decentralized routing protocol where each router maintains a table containing the shortest distance to every other router in the network. Periodically, routers exchange this information with their neighbors, updating their tables accordingly.

C++ Implementation

The following C++ code demonstrates the DVR algorithm by:

  1. Initializing a network graph with user-defined distances.
  2. Sharing distance vectors between nodes.
  3. Iteratively updating routing tables until convergence.
Continue reading Implementation of Distance Vector Routing (DVR) Algorithm in C++

8086 MASM Assembly Program for Addition of Two 8-bit Numbers

This blog post will guide you through a MASM (Microsoft Macro Assembler) program that performs the addition of two 8-bit numbers. While this is a fundamental operation, it demonstrates crucial assembly programming concepts such as data handling, register usage, and memory storage. Let’s dive in!

Assembly Code

    .model small
    .data
    a db 09h
    b db 02h
    c dw ?
    
    .code
    main proc
        mov ax, @data
        mov ds, ax
        
        mov al, a
        mov bl, b
        add al, bl
        
        mov ah, 0
        mov c, ax
        
        int 3  ; Breakpoint interrupt
        
        mov ax, 4C00h  ; Exit program
        int 21h
    main endp
    
    end main
Continue reading 8086 MASM Assembly Program for Addition of Two 8-bit Numbers

Understanding INT 3h vs INT 21h in 8086 Assembly

In 8086 assembly programming, interrupts play a crucial role in handling various operations, from debugging to system calls. Two commonly used interrupts are INT 3h (Breakpoint Interrupt) and INT 21h (DOS Interrupt). While both involve interrupt handling, their functionalities and use cases are completely different.

In this blog post, we will explore the differences between INT 3h and INT 21h, their respective use cases, and practical examples to understand their behavior.

TL;DR

  • INT 3h is used for debugging; it stops execution and hands control to the debugger.
  • INT 21h is used for system services like displaying messages, reading input, and terminating the program.
  • Key Difference: INT 3h is a 1-byte instruction (CC), while INT 21h requires function numbers in AH to specify system calls.
Continue reading Understanding INT 3h vs INT 21h in 8086 Assembly

8086 Assembly Program to Add Two 16-bit Numbers with Carry Handling

In this blog post, we’ll explore an 8086 assembly language program that adds two 16-bit numbers while also checking for a carry flag.

; Data Segment

data segment
    a dw 0FFFFh      ; Example value that will cause a carry
    b dw 0001h       ; Example value
    c dw ?           ; To store result
    carry_flag db 0  ; To store carry (0 or 1)
data ends

; Code Segment

code segment
assume cs:code, ds:data
start:
    mov ax, data
    mov ds, ax      ; Initialize data segment

    mov ax, a       ; Load first number
    mov bx, b       ; Load second number
    add ax, bx      ; Perform addition

    mov c, ax       ; Store result in 'c'

    jc carry_occurred  ; Jump if carry flag is set
    mov carry_flag, 0  ; No carry, store 0
    jmp end_program    

carry_occurred:
    mov carry_flag, 1  ; Store carry flag as 1

end_program:
    int 3             ; Halt program

code ends
end start
Continue reading 8086 Assembly Program to Add Two 16-bit Numbers with Carry Handling

🔗Angular directives: *ngIf, *ngSwitch, and *ngFor

Angular’s structural directives are essential tools for dynamically shaping your templates. They control the very structure of the DOM by adding or removing elements based on conditions. Angular 17 provides three fundamental structural directives: *ngIf for conditional rendering, *ngSwitch for displaying elements based on multiple cases, and *ngFor for efficiently iterating and displaying lists of data. Understanding these directives is crucial for building dynamic and data-driven Angular applications. Let’s explore each of these powerful tools and see how they can transform your templates!

Continue reading 🔗Angular directives: *ngIf, *ngSwitch, and *ngFor

🔗Data binding in Angular: Property binding, and event binding

Beyond interpolation, Angular offers more powerful data binding techniques: property binding and event bindingProperty binding enables one-way flow of data from your component to the template, dynamically setting HTML element properties like srcvaluedisabled, and more. Conversely, event binding handles user interactions and events in the template, flowing data back to your component to trigger actions. Together, property and event binding form the backbone of interactive Angular applications, allowing seamless communication between your component logic and the user interface, creating truly dynamic experiences. Let’s dive into each of them!

Continue reading 🔗Data binding in Angular: Property binding, and event binding

🔗Data binding in Angular: String Interpolation

Angular makes dynamic web pages a breeze with data binding, a powerful mechanism that connects your component’s data to the HTML template. Interpolation is the simplest form of one-way data binding in Angular. Using the “moustache” syntax {{ }} in your HTML, you can effortlessly display component properties directly in the view. Angular will automatically update the template whenever the component data changes, creating dynamic and interactive user interfaces. Interpolation is perfect for displaying text, numbers, and other simple values, bringing your component’s data to life in the template. Let’s explore how this works!

Continue reading 🔗Data binding in Angular: String Interpolation