Question

In: Computer Science

Write an assembly language program that reads move review information from a text file and reports...

Write an assembly language program that reads move review information from a text file and reports the overall scores for each movie as well as identifying the movie with the highest total score. There are four movie reviewers numbered from 1 to 4. They are submitting reviews for five movies, identified by the letters from “A” through “E”. Reviews are reported by using the letter identifying the movie, the review rating, which is a number from 0 to 100, and the reviewer’s identifying number. For example, to report that movie B was rated a score of 87 by reviewer 3, there will be a line in the text file that looks like this:

B,87,3

The fields within each record are separated from each other by a comma.

Your program must store the movie review scores in a two-dimensional array (4 rows by 5 columns). Each row represents a reviewer. Each column represents a movie. Initialize the array to zeroes and read the movie review information from a file. After reading and processing the whole file, display a report that shows the total score for each movie and the movie that had the highest total score.

Section 9.4 of our textbook discusses two-dimensional arrays. Section 9.4.2 discusses Base-Index Operands and even contains an example of how to calculate a row sum for a two-dimensional array.

Chapter 11 contains an example program named ReadFile.asm that will show you how to prompt the user for a file name, open a file, read its contents, and close the file when you are done. Look in section 11.1.8, Testing the File I/O Procedures.

Each record in a text file is terminated by the two characters, Carriage Return (0Dh) and Line Feed (0Ah).

Assume that you wish to process a text file named “reviews.txt” that is stored on the “C:” drive in the “Data” folder. If you are using a Windows computer, you have two ways to identify the path to the file’s location:

C:/Data/reviews.txt        OR C:\\Data\\reviews.txt

Double backslash characters (\) are needed because a single backslash is defined as being the first part of an escape sequence such as newline (\n).

This code can be used to load a reviewer’s score into the array of movie reviews:

; Insert score at reviews[rowIndex][colIndex]

mov      edx,rowSize           ; row size in bytes

    mov      eax,rowIndex         ; row index

    mul      edx                   ; row index * row size

    mov      index,eax             ; save row index * row size

    mov      eax,colIndex         ; load col index

    shl      eax,2                 ; eax = colIndex * 4

    add      eax,index             ; eax contains offset

    mov      edx,score             ; edx = reviewer's score

    mov      ebx,OFFSET reviews   ; array of review scores

    mov      [ebx + eax],edx       ; Store score for movie

Sample Data for Review.txt

D,84,2
A,90,3
A,87,4
B,35,4
B,100,1
C,75,1
D,84,1
B,87,2
A,0,2
C,25,2
D,45,3
E,35,3
A,90,1
B,100,3
C,75,3
E,35,1
C,78,4
E,35,2
D,100,4
E,0,4

Solutions

Expert Solution

;Included the irvine library as stated
INCLUDE Irvine32.
INC .DATA ;size of the array is declared as stated SizeOfMyColumn=5 ;indicates the cloumn size SizeOfMyRow=4 ;indicates size of row
SerialNum DWORD 0 ; serial number is defined
quaNum DWORD 0 ; quantity number is defined
ProductNum DWORD 0 ;product number is defined ask BYTE "Enter Salespersons num, quantity sold, product num(press _ve num to end the LOOP): ",0
My1stMessage BYTE "Required Martix is printed",0 My2ndMessage BYTE "The total sales for salesperson ",0 My3rdMessage BYTE "The total sales for product ",0 ;
The array value is initilized to 0 MySale
DWORD 0,0,0,0,0
DWORD 0,0,0,0,0
DWORD 0,0,0,0,0
DWORD 0,0,0,0,0 .
CODE ;
this marks the code area of program main PROC ;
main program starts here
readUserInput: ;
program will be termnated when negative number is entered MOV ebx,
OFFSET MySale MOV edx,
OFFSET ask CALL writestring CALL
crlf CALL
readInt ;
it will get salesman number as integer MOV [SerialNum],eax ;
it will save salesman number into SerialNum cmp eax,0 ;
if negative number entered jl noMoreInput ;
exit the LOOP and stop input CALL readInt MOV [quaNum],eax CALL readInt MOV [ProductNum],eax ;
this will save the sales into matrix MOV eax,SerialNum dec eax MOV edi,SizeOfMyColumn MUL edi MOV edi,ProductNum dec edi ADD eax,edi MOV edi,TYPE DWORD MUL edi ADD ebx,eax MOV eax,quaNum MOV [ebx],eax ;
it will store the quaNum value into matrix jmp readUserInput ;
it will run the program until negative number entered ;
If input value is entered noMoreInput: ;
output the sales matrix
MOV edx,
OFFSET My1stMessage CALL writestring ;
New line is printed
CALL crlf
MOV ecx,
SizeOfMyRow*SizeOfMyColumn MOV ebx,
OFFSET MySale MOV esi,
0 MygetTheValue: ;
gets every values from the matrix
MOV eax,[ebx+esi] ; value is prined
CALL WriteDec
MOV al,32 ; al= ascii of space character ;
it will print space CALL WriteChar
ADD esi,4 ; it prints only five values th the row cdq
MOV eax,esi
MOV edi,20 DIV edi cmp edx,0 jne next
CALL crlf ;
new line is printed next:
LOOP MygetTheValue
MOV ecx,SizeOfMyRow ;
salesmen's sale is printed
MOV esi,0 MOV edi,1
DisplaySales:
MOV ebx,OFFSET MySale
MOV edx,OFFSET My2ndMessage
CALL writestring
MOV eax,edi
CALL WriteDec MOV al,':' CALL WriteChar CALL crlf ;new line is printed MOV eax,esi CALL sumOfRow CALL WriteDec CALL crlf INC esi INC edi LOOP DisplaySales CALL crlf ; Display sales for each product MOV ecx,SizeOfMyColumn MOV esi,0 MOV edi,1 DisplayProductSales: MOV ebx,OFFSET MySale MOV edx,OFFSET My3rdMessage CALL writestring MOV eax,edi CALL WriteDec MOV al,':' CALL WriteChar CALL crlf MOV eax,esi CALL sumOfColmn CALL WriteDec CALL crlf INC esi INC edi LOOP DisplayProductSales CALL crlf exit main ENDP ;this function will complete the sum of the row sumOfRow PROC USES ebx ecx edx esi edi MOV edi,SizeOfMyRow INC edi MUL edi MOV edi,TYPE DWORD MUL edi ADD ebx,eax ; it will store the starting address of the row MOV eax,0 ; store sum=0 MOV esi,0 ; store index=0 MOV ecx , SizeOfMyColumn ; it is created to count the loop L1: ; LOOP starts here MOV edx,[ebx+esi] ; it will take the row value ADD eax,edx ; row's value is ADDed to the sum ADD esi,4 ; increment of the index up to the point ;here starts the next value of the row LOOP L1 ; continue until ecx is not 0 RET ; it will return ths main sumOfRow ENDP ;it will performs the sum of the column sumOfColmn PROC USES ebx ecx edx esi edi MOV edi,TYPE DWORD MUL edi ADD ebx,eax ; it will store the starting address of the column MOV eax,0 ; store sum=0 MOV esi,0 ; store index=0 MOV ecx , SizeOfMyRow ; it is created to count the LOOP L2: ;LOOP satrts here MOV edx,[ebx+esi] ; it will take the row value ADD eax,edx ; row's value is added to the sum push eax MOV eax,SizeOfMyColumn MOV edi,TYPE DWORD MUL edi ADD esi,eax POP eax LOOP L2 ; LOOP is repeated until ecx value RET ; return to main and is not equal to zero sumOfColmn ENDP END main ;

end of main

and this is the end of the program


Related Solutions

Write a C++ program that reads a string from a text file and determines if the...
Write a C++ program that reads a string from a text file and determines if the string is a palindrome or not using stacks and queue
● Write a program that reads words from a text file and displays all the words...
● Write a program that reads words from a text file and displays all the words (duplicates allowed) in ascending alphabetical order. The words must start with a letter. Must use ArrayList. MY CODE IS INCORRECT PLEASE HELP THE TEXT FILE CONTAINS THESE WORDS IN THIS FORMAT: drunk topography microwave accession impressionist cascade payout schooner relationship reprint drunk impressionist schooner THE WORDS MUST BE PRINTED ON THE ECLIPSE CONSOLE BUT PRINTED OUT ON A TEXT FILE IN ALPHABETICAL ASCENDING ORDER...
Write the programs in JavaScript: Write a program that reads a text file and outputs the...
Write the programs in JavaScript: Write a program that reads a text file and outputs the text file with line numbers at the beginning of each line.
Write a C program that Reads a text file(any file)  and writes it to a binary file....
Write a C program that Reads a text file(any file)  and writes it to a binary file. Reads the binary file and converts it to a text file.
Write a program that reads a file called document.txt which is a text file containing an...
Write a program that reads a file called document.txt which is a text file containing an excerpt from a novel. Your program should print out every word in the file that contains a capital letter on a new line to the stdout. For example: assuming document.txt contains the text C++
Write a simple text-formating.cpp file that reads (asks for then reads) a text file and produces...
Write a simple text-formating.cpp file that reads (asks for then reads) a text file and produces another text file in Which blank lines are removed, multiple blanks are replaced with a single blank, and no lines are longer than some given length (let say 80). Put as many words as possible on the same line (as close as possible to 80 characters). You will have to break some lines of the given file, but do not break any words or...
This is a python file Reads information from a text file into a list of sublists....
This is a python file Reads information from a text file into a list of sublists. Be sure to ask the user to enter the file name and end the program if the file doesn’t exist. Text file format will be as shown, where each item is separated by a comma and a space: ID, firstName, lastName, birthDate, hireDate, salary Store the information into a list of sublists called empRoster. EmpRoster will be a list of sublists, where each sublist...
You are given a text file containing a short text. Write a program that 1. Reads...
You are given a text file containing a short text. Write a program that 1. Reads a given text file : shortText.txt 2. Display the text as it is 3. Prints the number of lines 4. Prints the occurences of each letter that appears in the text. [uppercase and lowercase letter is treated the same]. 5. Prints the total number of special characters appear in the text. 6. Thedisplayofstep3,4and5aboveshouldbesaveinanoutputfile:occurencesText.txt write it in C++ programing Language
**IN AT&T ASSEMBLY LANG** Write an assembly language program which either hardcodes or reads in two...
**IN AT&T ASSEMBLY LANG** Write an assembly language program which either hardcodes or reads in two integers, A and B, and uses them to compute the following expressions. You must use the same values for A and B throughout all three expressions. A * 5 (A + B) - (A / B) (A - B) + (A * B)
Write a MIPS Assembly language program to request a file name from the user, open the...
Write a MIPS Assembly language program to request a file name from the user, open the file, read the contents, and write out the contents to the console. This is what I have so far: .data    fileName:   .space 100    prompt1:   .asciiz "Enter the file name: "    prompt2:    .asciiz ""    prompt3:   .asciiz "\n"    buffer:    .space 4096 .text    main:        #        li $v0, 4        la $a0, prompt1       ...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT