联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2020-11-26 11:27

Project 6 - String Primitives and Macros

Due Dec 6 by 11:59pm Points 50 Submitting a file upload File Types asm

Available after Nov 22 at 12am

Submit Assignment

Introduction

This program, the portfolio project for the class, is the final step up in difficulty. Once

again the Rubric (see below) now has a number of point deductions for not meeting

requirements. It it not uncommon for a student to generate a program that meets the Program

Description but violates several Program Requirements, causing a significant loss in points.

Please carefully review the Rubric to avoid this circumstance.

The purpose of this assignment is to reinforce concepts related to string primitive instructions and

macros (CLO 3, 4, 5).

1. Designing, implementing, and calling low-level I/O procedures

2. Implementing and using macros

What you must do

Program Description

Write and test a MASM program to perform the following tasks (check the Requirements section for

specifics on program modularization):

Implement and test two macros for string processing. These macros may use Irvine’s

ReadString to get input from the user, and WriteString procedures to display output.

mGetSring : Display a prompt (input parameter, by reference), then get the user’s keyboard

input into a memory location (output parameter, by reference)

mDisplayString : Print the string which is stored in a specified memory location (input

parameter, by reference).

Implement and test two procedures for signed integers which use string primitive instructions

ReadVal :

1. Invoke the mGetSring macro (see parameter requirements above) to get user input in the

form of a string of digits.

2. Convert (using string primitives) the string of ascii digits to its numeric value

representation (SDWORD), validating the user’s input is a valid number (no letters,

symbols, etc).

3. Store this value in a memory variable (output parameter, by reference).

WriteVal :

1. Convert a numeric DWORD value (input parameter, by value) to a string of ascii digits

11/23/2020 Project 6 - String Primitives and Macros

https://canvas.oregonstate.edu/courses/1784177/assignments/8084707 2/8

2. Invoke the mDisplayString macro to print the ascii representation of the SDWORD value

to the output.

Write a test program (in main ) which uses the ReadVal and WriteVal procedures above to:

1. Get 10 valid integers from the user.

2. Stores these numeric values in an array.

3. Display the integers, their sum, and their average.

Program Requirements

1. User’s numeric input must be validated the hard way:

a. Read the user's input as a string and convert the string to numeric form.

b. If the user enters non-digits other than something which will indicate sign (e.g. ‘+’ or ‘-‘), or

the number is too large for 32-bit registers, an error message should be displayed and the

number should be discarded.

c. If the user enters nothing (empty input), display an error and re-prompt.

2. ReadInt , ReadDec , WriteInt , and WriteDec are not allowed in this program.

3. Conversion routines must appropriately use the LODSB and/or STOSB operators.

4. All procedure parameters must be passed on the runtime stack. Strings must be passed by

reference

5. Prompts, identifying strings, and other memory locations must be passed by address to the

macros.

6. Used registers must be saved and restored by the called procedures and macros.

7. The stack frame must be cleaned up by the called procedure.

8. Procedures (except main ) must not reference data segment variables or constants by name.

9. The program must use Register Indirect addressing for array elements, and Base+Offset

addressing for accessing parameters on the runtime stack.

10. Procedures may use local variables when appropriate.

11. The program must be fully documented and laid out according to the CS271 Style Guide. This

includes a complete header block for identification, description, etc., a comment outline to

explain each section of code, and proper procedure headers/documentation.

Notes

1. For this assignment you are allowed to assume that the total sum of the numbers will fit inside a

32 bit register.

2. We will be testing this program with positive and negative values.

3. When displaying the average, you may round down (floor) to the nearest integer. For example if

the sum of the 10 numbers is 3568 you may display the average as 356.

4. Check the Course Syllabus for late submission guidelines.

5. Find the assembly language instruction syntax and help in the CS271 Instructions Guide.

6. To create, assemble, run, and modify your program, follow the instructions on the course

Syllabus Page’s "Tools" tab.

Resources

Additional resources for this assignment

11/23/2020 Project 6 - String Primitives and Macros

https://canvas.oregonstate.edu/courses/1784177/assignments/8084707 3/8

Project Shell with Template.asm

CS271 Style Guide

CS271 Instructions Reference

CS271 Irvine Procedure Reference

What to turn in

Turn in a single .asm file (the actual Assembly Language Program file, not the Visual Studio

solution file). File must be named "Proj5_ONID.asm" where ONID is your ONID username. Failure

to name files according to this convention may result in reduced scores (or ungraded work). When

you resubmit a file in Canvas, Canvas can attach a suffix to the file, e.g., the file name may

become Proj5_ONID-1.asm. Don't worry about this name change as no points will be deducted

because of this.

Example Execution

User input in this example is shown in boldface italics.

PROGRAMMING ASSIGNMENT 6: Designing low-level I/O procedures

Written by: Sheperd Cooper

Please provide 10 signed decimal integers.

Each number needs to be small enough to fit inside a 32 bit register. After you have finished inputting

the raw numbers I will display a list of the integers, their sum, and their average value.

Please enter an signed number: 156

Please enter an signed number: 51d6fd

ERROR: You did not enter a signed number or your number was too big.

Please try again: 34

Please enter a signed number: -186

Please enter a signed number: 115616148561615630

ERROR: You did not enter an signed number or your number was too big.

Please try again: -145

Please enter a signed number: 5

Please enter a signed number: +23

Please enter a signed number: 51

Please enter a signed number: 0

Please enter a signed number: 56

Please enter a signed number: 11

You entered the following numbers:

156, 34, -186, -145, 5, 23, 51, 0, 56, 11

The sum of these numbers is: 5

The rounded average is: 1

Thanks for playing!

Extra Credit (Original Project Definition must be Fulfilled)

To receive points for any extra credit options, you must add one print statement to your program

output per extra credit which describes the extra credit you chose to work on. You will not


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp