Difference between revisions of "MPLab 32bit Multiplication"
Jump to navigation
Jump to search
| Line 39: | Line 39: | ||
; Read the First Number and store it into DATA1 | ; Read the First Number and store it into DATA1 | ||
MOV EBX, 0 ;sets the value of the EBX register to zero | MOV EBX, 0 ;sets the value of the EBX register to zero | ||
| − | MOV CX, 8 | + | MOV CX, 8 ;sets the value of the CX register to 8 |
| − | AGAIN: MOV AH, 01 | + | AGAIN: |
| − | INT 21H | + | ; Loop body |
| − | CMP AL,'A' | + | MOV AH, 01 |
| − | JGE L5 | + | INT 21H |
| − | SUB AL,30H | + | CMP AL,'A' |
| − | JMP L6 | + | JGE L5 |
| − | L5: SUB AL,37H | + | SUB AL,30H |
| − | L6: SHL EBX,4 | + | JMP L6 |
| − | ADD BL,AL | + | L5: SUB AL,37H |
| − | LOOP AGAIN | + | L6: SHL EBX,4 |
| + | ADD BL,AL | ||
| + | LOOP AGAIN | ||
MOV DATA1, EBX | MOV DATA1, EBX | ||
</pre> | </pre> | ||
Revision as of 00:24, 26 September 2023
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 ? ;define strings that will be displayed as messages to the user while executing the program. msg db 10,13,"Enter the First Number: $" msg1 db 10,13,"Enter the Second Number: $" msg2 db 10,13,"The Product (in Hexadecimal) 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
; Using DOS interrupt 21H to display the message. MOV AH,09 MOV DX,OFFSET msg INT 21H
; Read the First Number and store it into DATA1
MOV EBX, 0 ;sets the value of the EBX register to zero
MOV CX, 8 ;sets the value of the CX register to 8
AGAIN:
; Loop body
MOV AH, 01
INT 21H
CMP AL,'A'
JGE L5
SUB AL,30H
JMP L6
L5: SUB AL,37H
L6: SHL EBX,4
ADD BL,AL
LOOP AGAIN
MOV DATA1, EBX