Difference between revisions of "MPLab 32bit Multiplication"

From MKWiki
Jump to navigation Jump to search
(Created page with "==32-bit Binary Addition Step by Step == 1. Specify the memory model for code, data, and stack segments <pre> .model small .stack 100H .386 ; This specifies that th...")
 
Line 1: Line 1:
==32-bit Binary Addition Step by Step ==
+
'''; 32-bit Binary Multiplication'''
 +
 
 
1. Specify the memory model for code, data, and stack segments
 
1. Specify the memory model for code, data, and stack segments
 
<pre>
 
<pre>

Revision as of 23:43, 25 September 2023

; 32-bit Binary Multiplication

1. Specify the memory model for code, data, and stack segments

.model small 
.stack 100H 
.386          ; This specifies that the program will use instructions of the 80386 processor (32-bit instructions).

2. Define your data in the data section ( here you can define various data items: variables, constants, strings, arrays)

.data          ; .data directive indicates the beginning of data section 
data1 dd 00H          ; declares a double-world variable and initializes it to 0. 
num1 db 10,13,"Enter the first number: $" 
num2 db 10,13,"Enter the second number: $" 
sum db 10,13,"The sum is :$" 

3. Define your instruction in the code section (here you write the assembly instructions that perform computations, control program flow, and interact with data variables and memory)

.code        ; .code directive indicates the beginning of code section 
.startup     ;  the entry point of the program
MOV EBX, 00000000        ; Initialize EBX to 0; EBX will be used to store the sum.
; Display the "Enter the first number: " message using DOS interrupt 21h (AH=09h).
MOV AH,09
MOV DX,OFFSET num1
INT 21H
MOV ECX, 8         ; initialize ECX to 8, to read 8 characters
AGAIN: MOV AH, 01     ; Read a character from the input device using DOS interrupt 21h (AH=01h).  AGAIN is label for loop.
INT 21H
CMP AL, 'A'                   ; Check if the character is greater than or equal to 'A' 
JGE P1                          ; If greater than 'A', jump to P1
SUB AL,30H                  ; subtract 30H to convert it to a decimal digit.     
JMP P4
P1: SUB AL, 37H          ; subtract 37H to convert it to a decimal digit.   
P4: SHL EBX, 4            ; Shift the value in EBX left by 4 bits 
MOV AH,00                  
ADD EBX, EAX           
LOOP AGAIN           
MOV data1, EBX