Description
Objectives
-
Introduction to MASM assembly language
-
Defining variables (integer and string)
-
Using library procedures for I/O
-
Integer arithmetic
Description
Write a MASM program to perform the tasks listed below. Test your program to ensure that it functions correctly.
1. Display your name and program title on the output screen.
2. Display instructions for the user.
3. Prompt the user to enter two numbers.
4. Calculate the sum, difference, product, (integer) quotient and remainder of the numbers.
5. Display a terminating message.
Requirements
-
The main procedure must be divided into sections:
introduction
get the data
calculate the required values
display the results
say goodbye
-
The results of calculations must be stored in named variables before being displayed.
-
The program must be fully documented. This includes a complete header block for identification, description, etc., and a comment outline to explain each section of code.
-
Submit your text code file (.asm) to Canvas by the due date.
Notes
-
A program shell (template) is available on the course website. See the Week 1 Basics page in Modules.
-
You are not required to handle negative input or negative results.
-
You have a limited number of late days. Try not to use these on the first program.
-
To create, assemble, run, debug, and modify your program, follow the setup instructions available within Canvas on the Syllabus –> Tools page.
-
Find the assembly language instruction syntax in the textbook.
-
Documentation for the Irvine library procedures is provided in the textbook.
Example Program Operation
Elementary Arithmetic by Wile E. Coyote
Enter 2 numbers, and I’ll show you the sum, difference, product, quotient, and remainder.
First number: 37
Second number: 5
37+5=42
37-5=32
37 x 5 = 185
37 / 5 = 7 remainder 2
Impressed? Bye!
Extra Credit Options (original definition must be fulfilled)
-
(1 pt) Validate the second number to be less than the first.
-
(1 pt) Display the square of each number. Recall that the square of a number is obtained by mutiplying a number by itself. For example:
Square of 37 = 1369
Square of 5 = 25
**EC: DESCRIPTION
–Program prompts, etc—
For example, for extra credit option #1:
Elementary Arithmetic by Wile E. Coyote
**EC: Program verifies second number less than first.
Enter 2 numbers, and I’ll show you the sum, difference, product, quotient, and remainder.
First number: 7
Second number: 9
The second number must be less than the first!
Impressed? Bye!
Program 1 Rubric
Criteria |
Ratings |
Pts |
||
Preliminaries – Files Correctly Submitted |
1 pts |
0 pts |
||
Submitted file is correct assignment and is an individual .asm file. |
||||
Full Marks |
No Marks |
1 pts |
||
Preliminaries – Program assembles, links |
2 pts |
0 pts |
Submitted program assembles and links without need for clarifying |
||
Full Marks |
No Marks |
|
work for TA and/or messages to the student. This assumes the |
||
program is actually an attempt at the assignment. Non-attempts |
||
which compile/link earn no points. |
2 pts |
|
Documentation – Identification Block – Header |
2 pts |
0 pts |
|
Name, OSU Email, Course number, Program number, Date, etc as |
|||
Full Marks |
No Marks |
||
per |
syllabus are included in Identification Block |
2 pts |
|
Documentation – Identification Block – Program Description |
2 pts |
1 pts |
0 pts |
|
Description of functionality and purpose of program is included in |
||||
Full |
Lacking detail |
No |
||
identification block. |
Marks |
Description is present but is lacking in detail with |
Marks |
2 pts |
regard to functionality. |
||||
Criteria |
Ratings |
Pts |
||
Verification – Program Executes |
5 pts |
2 pts |
0 pts |
|
Program executes and makes some attempt at the assigned |
||||
Full |
Failed attempt |
Wrong Program |
||
functionality. |
Marks |
Program is an |
Program executes but is either the |
|
attempt at the correct |
incorrect program or some quickly |
5 pts |
||
assignment but |
mashed together nonsense, submitted |
|||
simply does not run. |
only to ‘get a few points’ |
|||
Completeness – Displays programmer name |
1 pts |
0 pts |
Program prints out the programmer’s name. |
||
Full Marks |
No Marks |
1 pts
Completeness – Displays Introduction |
2 pts |
0 pts |
Program displays the program introduction. |
||
Full Marks |
No Marks |
2 pts
Completeness – Prompts user to input data |
1 pts |
0 pts |
|
Program outputs a data request to user e.g. “Enter a number” twice. |
|||
Full Marks |
No Marks |
1 pts
Completeness – Gets data from user |
2 pts |
0 pts |
Utilizes ReadDec or ReadInt, gets user-input data, and saves data |
||
Full Marks |
No Marks |
|
to some memory variable (non-register). |
2 pts |
|
Criteria |
Ratings |
|||
Completeness – Displays Results |
2 pts |
0 pts |
||
Program displays results in the form of |
||||
Full Marks |
No Marks |
|||
(X+Y=M| |
||||
X-Y=N| |
||||
X*Y=O| |
||||
X / Y = Q remainder R) |
||||
Correctness – Calculations are correct |
5 pts |
0 pts |
Calculations are all correct. Lose 1 point per incorrect calculation |
||
Full Marks |
No Marks |
|
(Sum | Difference | Product | Quotient | Remainder) |
||
Correctness – Original User Data Unchanged |
2 pts |
0 pts |
|
Original variables holding user-entered data (num1, num2) remain |
|||
Full Marks |
No Marks |
||
unchanged by all calculations and still hold original user-entered |
|||
data |
at end of execution. |
||
Pts
2 pts
5 pts
2 pts
Criteria |
Ratings |
Pts |
||||||||
Requirements – Modularized Code Blocks |
5 pts |
3 pts |
3 pts |
0 pts |
||||||
Main procedure is separated into functional sections, each of which |
||||||||||
Blocks |
Blocks without |
Headers without Blocks |
No |
|||||||
is described by comments. |
with |
Headers |
Program is not visibly |
Marks |
||||||
Headers |
Program is |
separated into logical blocks |
||||||||
separated into |
with whitespace, but limited |
5 pts |
||||||||
logical blocks but |
headers do indicate some |
|||||||||
those blocks are |
organizational effort. |
|||||||||
poorly commented |
||||||||||
Requirements – Results stored in named variables |
5 pts |
0 pts |
||||||||
Results of calculations are stored in memory in discrete variables. |
||||||||||
Full Marks |
No Marks |
|||||||||
Lose 1 point per missing variable usage (Sum | Difference | Product |
||||||||||
| Quotient | Remainder) |
5 pts |
|||||||||
Coding |
Style – In-line Comments |
5 pts |
0 pts |
|||||||
In-line comments and block headers describe functionality of |
||||||||||
Full Marks |
No Marks |
|||||||||
program flow. Should mirror the style guide image. |
5 pts |
|||||||||
Criteria |
Ratings |
Pts |
|||||||
Coding Style – Appropriately Named Identifiers |
3 pts |
1 pts |
0 pts |
||||||
Identifiers named so that a person reading the code can intuit the |
|||||||||
Full |
Partial |
No |
|||||||
purpose of a variable, constant, or label just by reading its name. |
Marks |
Some identifiers are named well, with others having no |
Marks |
3 pts |
|||||
relevance to their functionality. |
|||||||||
Coding Style – Readability |
5 pts |
3 pts |
0 pts |
||||||
Program uses readable white-space, indentation, and spacing as |
|||||||||
Full |
Marginally Readable |
No |
|||||||
per the Indentation Style Guide. Logical sections are separated by |
Marks |
Program is marginally readable but lacks proper |
Marks |
5 pts |
|||||
white space. |
alignment and white space. |
||||||||
Late Penalty |
0 pts |
0 pts |
|||||||
Remove points here for late assignments. (Enter negative point |
|||||||||
Full Marks |
No Marks |
0 pts |
|||||||
value) |
|||||||||
No |
prohibited macros (see lecture 6) REJECT ASSIGNMENT |
0 pts |
0 pts |
||||||
None of the assignments are allowed to use .IF, .IFELSE, or related |
|||||||||
Full Marks |
No Marks |
||||||||
macros. Only actual assembly code. |
0 pts |
||||||||
Criteria |
Ratings |
Pts |
|||
Extra Credit (1pt) – validate that num2 is less than num1 |
0 pts |
0 pts |
|||
Assuming that num1 and num2 are non-zero positive integers, the |
|||||
Full Marks |
No Marks |
||||
code must generate an error if num2 is greater than or equal to |
0 pts |
||||
num1. |
|||||
Extra Credit (1pt) – display mathematical square of the user’s |
0 pts |
0 pts |
|||
numbers |
|||||
Full Marks |
No Marks |
||||
The code displays the square value of the numbers that the user |
|||||
entered (see assignment for explanation). |
0 pts |
||||
Total Points: 50 |
|||||