Skip to main content

Mix (C++ and Assembly)

Mix (C++ and Assembly) Program to Add Two 16 bit Numbers (With DAA)

While high-level programming languages like C++ make arithmetic operations incredibly simple, delving into inline assembly offers valuable insights into how the CPU processes instructions under the hood. Hence in this post, we’ll walk through a simple program that uses both C++ and inline assembly to add two integer values. Additionally, we will carry out decimal adjust after addition.

Mix (C++ and Assembly) Program to Subtract Two 16-bit Numbers (With DAS)

While modern high-level languages like C++ abstract away many low-level operations, sometimes it's useful to dive into assembly-level instructions for greater control and understanding. This example demonstrates subtraction using inline assembly in C++, with the addition of the DAS instruction to adjust the result for Binary Coded Decimal (BCD) operations. #include<iostream.h> #include<conio.h> #include<stdio.h> void main() { clrscr(); int a, b, c; cout << "Enter First Number:"; cin >> a; cout << "Enter Second Number:"; cin >> b; asm mov ax, a // Move 'a' into AX asm mov bx, b // Move 'b' into BX asm sub ax, bx // Subtract BX from AX asm das // Adjust AX for BCD subtraction asm mov c, ax // Store result in 'c' cout << "Result:"; cout << c; getch(); }

Mix (C++ and Assembly) Program to Subtract Two 16 bit Numbers

While modern high-level languages like C++ abstract away many low-level operations, sometimes it's useful to get closer to the hardware to understand how things work under the hood. This example demonstrates how to subtract two 16-bit numbers using inline assembly in a simple C++ program. #include<iostream.h> #include<conio.h> #include<stdio.h> void main() { clrscr(); int a, b, c; cout << "Enter First Number:"; cin >> a; cout << "Enter Second Number:"; cin >> b; asm mov ax, a // Move 'a' into AX asm mov bx, b // Move 'b' into BX asm sub ax, bx // Subtract BX from AX asm mov c, ax // Store result in 'c' cout << "Result:"; cout << c; getch(); }

Mix (C++ and Assembly) Program to Add Two 8 bit Numbers

This blog post will guide you through a C++ program that performs the addition of two numbers using inline assembly. While modern compilers provide high-level arithmetic operations, understanding inline assembly can help in optimizing performance and understanding low-level interactions with the CPU. Let's explore this step-by-step! #include<iostream.h> #include<conio.h> #include<stdio.h> void main() { clrscr(); short int a, b, c; cout << "Enter First Number: "; cin >> a; cout << "Enter Second Number: "; cin >> b; asm mov ax, a asm mov ah, 00h asm mov bx, b asm mov bh, 00h asm add al, bl asm mov c, ax cout << "Result: "; cout << c; getch(); }

Mix (C++ and Assembly) Program to Find Whether Number is Odd or Even

This C++ program determines whether a given number is even or odd using 8086-style inline assembly. It utilizes the div instruction to divide the number by 2 and then checks the remainder stored in the dx register. #include<iostream.h> #include<conio.h> void main() { clrscr(); int a, res; cout << "\n Enter a number"; cin >> a; asm mov ax, a // Move input number into AX asm mov bx, 02h // Move divisor 2 into BX asm div bx // Divide AX by BX, quotient in AX, remainder in DX asm mov res, dx // Store remainder in res if(res == 0) { cout << "\n Even"; } else { cout << "\n Odd"; } getch(); }

Mix (C++ and Assembly) Program to Find Whether Number is Positive or Negative

This program demonstrates how to use inline 8086 assembly in C++ to determine whether a given number is positive or negative. It's a great way to understand how conditional branching works at the assembly level. #include<iostream.h> #include<conio.h> void main() { clrscr(); int a; cout << "\n Enter a number:"; cin >> a; asm mov ax, 0000h // Clear AX asm mov ax, a // Move user input into AX asm cmp ax, 0000h // Compare AX with 0 asm jl less // Jump to 'less' if AX < 0 asm jge greater // Jump to 'greater' if AX >= 0 less: cout << "\n Number is negative"; asm jmp end greater: cout << "\n Number is positive"; end: getch(); }

Mix (C++ and Assembly) Program to Subtract Two 8 bit Numbers

While modern high-level languages like C++ abstract away many low-level operations, sometimes it's useful to get closer to the hardware to understand how things work under the hood. This example demonstrates how to subtract two 8-bit numbers using inline assembly in a simple C++ program. #include<iostream.h> #include<conio.h> #include<stdio.h> void main() { clrscr(); short int a, b, c; cout << "Enter First Number:"; cin >> a; cout << "Enter Second Number:"; cin >> b; asm mov ax, a // Move 'a' into AX asm mov ah, 00h // Ensure AH is cleared asm mov bx, b // Move 'b' into BX asm mov bh, 00h // Ensure BH is cleared asm sub al, bl // Subtract BL from AL asm mov c, ax // Store result in 'c' cout << "Result:"; cout << c; getch(); }

Mix (Assembly and C++) Program to Find Greatest of Two Numbers

This program demonstrates how to compare two integers using 8086 inline assembly in C++. By leveraging assembly instructions like sub and conditional jump js, the program determines which number is greater. #include<iostream.h> #include<conio.h> void main() { clrscr(); short a; short b; cout << "\n Enter First Number:"; cin >> a; cout << "\n Enter Second Number:"; cin >> b; asm mov ax, 0000h // Clear AX asm mov bx, 0000h // Clear BX asm mov ax, a // Load first number into AX asm mov bx, b // Load second number into BX asm sub ax, bx // Subtract BX from AX asm js true // Jump if result is negative (AX < BX) cout << "\n " << a << " is greater than " << b; asm jmp end // Skip 'true' block true: cout << "\n " << b << " is greater than " << a; end: getch(); }