Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Assembly language program with Irvine32 that reads move review information from a text file and reports the overall scores for each movie as well as

Assembly language program with Irvine32 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).

Also Know that Irvine32.inc is put in your C:\\ drive too with reviews to work with.

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\ eviews.txt

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

In a Notepad copy and past the reviews

reviews.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

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

Here is and Example

; 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

image text in transcribed

Section 9.4 of your textbook deals with two-dimensional arrays. There is even an example showing how to calculate a row sum. You may be able to adapt this example to calculate a column sum.

here is the code from chapter 11 .1.8

; Reading a File (ReadFile.asm) ; Opens, reads, and displays a text file using ; procedures from Irvine32.lib. INCLUDE Irvine32.inc INCLUDE macros.inc BUFFER_SIZE = 5000 .data buffer BYTE BUFFER_SIZE DUP(?) filename BYTE 80 DUP(0) fileHandle HANDLE ? .code main PROC ; Let user input a filename. mWrite "Enter an input filename: " mov edx,OFFSET filename mov ecx,SIZEOF filename call ReadString ; Open the file for input. mov edx,OFFSET filename call OpenInputFile mov fileHandle,eax ; Check for errors. cmp eax,INVALID_HANDLE_VALUE ; error opening file? jne file_ok ; no: skip mWrite  jmp quit ; and quit file_ok: ; Read the file into a buffer. mov edx,OFFSET buffer mov ecx,BUFFER_SIZE call ReadFromFile jnc check_buffer_size ; error reading? mWrite "Error reading file. " ; yes: show error message call WriteWindowsMsg jmp close_file check_buffer_size: cmp eax,BUFFER_SIZE ; buffer large enough? jb buf_size_ok ; yes mWrite  jmp quit ; and quit buf_size_ok: mov buffer[eax],0 ; insert null terminator mWrite "File size: " call WriteDec ; display file size call Crlf ; Display the buffer. mWrite  

""""""""""""""please Help"""""""""""""""""""""""""""""""""""""""""""

From 2425 computer organization

Two-Dimensional Array When accessing a two-dimensional array in row-major order, the row offset is held in the base register and the column offset is in the index register. The following table, for example, has three rows and five columns

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Professional Microsoft SQL Server 2012 Administration

Authors: Adam Jorgensen, Steven Wort

1st Edition

1118106881, 9781118106884

More Books

Students also viewed these Databases questions