Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

X86 Assembly Write a subroutine named ShiftMultiplication that multiplies any un

ID: 3818443 • Letter: X

Question

X86 Assembly

Write a subroutine named ShiftMultiplication that multiplies any unsigned 32-bit integer byEAX:

-Useonly shifts and addition instructions.

-Pass the integer to the subroutine in the EBX register, and return the product in the EAX register.

-Assume that the product is never larger than 32 bits.

-You are only allowed to use a loop(do-while)to shift the multiplier to the right, keeping track of the number of shifts that occur.

-The resulting shift count can then be applied to the SHL instruction, using the multiplicand as the destination operand.

-Then, the same process must be repeated until you find the last 1 bit in the multiplier.

-You are not allowed to use the loop instruction and are not allowed to use the factoring method.

-Run your program using the debugger to verify your answers.

-The main program that calls the subroutine and displays the product is given to you as shown below:

oSubmit the following:

Lastname3.asm

INCLUDE Irvine32.inc

.data

p1 BYTE "Enter the multiplicand: ",0

p2 BYTE "Enter the multiplier: ",0

p3 BYTE "The product is ",0

.codemain PROC

call Clrscr;

Input the multiplicand

mov edx,OFFSET p1

call WriteString

call ReadDec ;ReadDec stores the first input (multiplicand) in eax

mov ebx,eax ;save eax in ebx so the next ReadDec will not overwrite it

;

Input the multiplier

mov edx, OFFSET p2

call WriteString

call ReadDec ;ReadDec stores the second input (multiplier) in eax

call Crlf

; multiply EBX by EAX, producing EAX

call Multiply

; Display the product in EAX

mov edx,OFFSET p3

call WriteString

call WriteDec

call Crlf

Explanation / Answer

ShiftMultiplication:

Mov ECX,eax;

Mov eax, #0;

l1: Add eax,ebx;

Dcr ECX;

Jnz l1;

Return ;