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

You will write a simple assembly language program that performs a few arithmetic

ID: 2247915 • Letter: Y

Question

You will write a simple assembly language program that performs a few arithmetic operations. This will require you to establish your programming environment and create the capability to assemble and execute the assembly programs that are part of this course.

Your North Lake College student ID number is a 7-digit number. Begin by splitting your student ID into two different values. Assign the three most significant digits to a variable called 'left' and the four least significant digits to a variable called 'right'.

You must choose the data type that is appropriate for the range of decimal values each variable can store. You will choose a data type when you define each of the variables in your program. Try to make efficient use of memory.

Calculate the sum of the two variables 'left' and 'right'. Store this result in a variable called 'total'.

Calculate the positive difference between the variables 'left' and 'right'. Store this result in a variable called 'diff'.

Define a character string called 'message' that contains the characters, "Hello world!".

Define an array of data type WORD called 'Array' that is initialized to the following values: 1, 2, 4, 8, 16, 32, and 64.

Write assembly language code using what you know so far (do not look ahead in the book just yet) to determine the length of 'Array'. Store this value in a variable called 'ArrayLength'.

Move the contents of the variable 'left' into the EAX register.

Move the contents of the variable 'right' into the EBX register.

Move the contents of the variable 'total' into the ECX register.

Move the contents of the variable 'diff' into the EDX register.

Move the contents of the variable 'ArrayLength' into the ESI register.

Call the author's DumpReg routine to display the contents of the registers.

Submit your assembly language source code and a screen shot of the output packaged as a single file in ".ZIP" format. Call your file <First Initial><Last Initial>Project1.zip where "First Initial" is the first letter in your first name and "Last Initial" is the first letter in your last name. If your name were John L. Smith, the file would be called, "JSProject1.zip".

Explanation / Answer

C program :
#include <stdio.h>

int main()
{
int id = 2634181 ;
int reversed = 0, left=0, right=0, num, i,total,diff ;
String message = "Hello world!" ;
int WORD = [1,2,4,8,16,32,64] ;
for(i=0;i<4;i++)
   {
       num = id % 10 ;
       reversed = (reversed*10) + num ;
       id = id /10;
   }
while (reversed != 0)
{
right = right * 10;
right = right + reversed%10;
reversed = reversed/10;
}
left = id;
total = left +right ;
diff = right - left ;

   return 0;
}

Now the following assembly language code will be merged with the C program in Visual Studio -:

MOV AL left
MOV BL right
MOV AX AL
MOV EAX BL
MOV ECX EAX
MOV EAX AL
CMP BL
JZ EQV
JC GRT

EQU   :    SUB EAX BL
       MOV EDX EAX
      
GRT   :   MOV EAX BL
       SUB EAX AL
       MOV EDX EAX

MOV EBX BL
MOV EAX AL
MOV ESI ArrayLength

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote