MPLab 32bit Multiplication
Revision as of 23:54, 25 September 2023 by Mkwiki (talk | contribs) (→32-bit Binary Multiplication)
32-bit Binary Multiplication
1. Define the model and architecture for the assembly code
.model small .stack 100H .386 ; 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 and DATA2 are 32-bit variables initialized to 0. DATA1 dd 00000000H DATA2 dd 00000000H ; PROD1 and PROD2 32-bit uninitialized variables. PROD1 dd ? PROD2 dd ?
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