汇编代写

Assessed Coursework

Course Name

Systems and Networks

Coursework Number

1

Deadline Time:

4:30pm

Date:

23rd Nov 2018

% Contribution to final course mark

20

This should take this many hours:

<10

Solo or Group 

Solo

Group

Submission Instructions

See “What to Hand in” on Page 4.

Who Will Mark This?

Lecturer 

Tutor

Other

Feedback Type?

Written 

Oral

Both

Individual or Generic?

Generic

Individual 

Both

Other Feedback Notes

Discussion in Class?

Yes

No

Please Note: This Coursework cannot be Re-Done

Code of Assessment Rules for Coursework Submission

Deadlines for the submission of coursework which is to be formally assessed will be published in course documentation, and work which is submitted later than the deadline will be subject to penalty as set out below. The primary grade and secondary band awarded for coursework which is submitted after the published deadline will be calculated as follows:

  1. (i)  in respect of work submitted not more than five working days after the deadline
    1. the work will be assessed in the usual way;
    2. the primary grade and secondary band so determined will then be reduced by two secondary bands for each working day (or part of a

      working day) the work was submitted late.

  2. (ii)  work submitted more than five working days after the deadline will be awarded Grade H.

Penalties for late submission of coursework will not be imposed if good cause is established for the late submission. You should submit documents supporting good cause via MyCampus.

Penalty for non-adherence to Submission Instructions is 2 bands

You must complete an “Own Work” form via https://webapps.dcs.gla.ac.uk/ETHICS for all coursework UNLESS submitted via Moodle

Marking Criteria

The exercise is worth 20%

Marks will be awarded for:

commenting;
correct code;
efficient code;
accurate status report;
accurate assessment of limitations.

Marks will be lost for:

inadequate or inaccurate commenting;
commenting that does not add value (see below);
code errors;
code inefficiency (unnecessary instructions, clumsy program flow etc.); inaccurate or missing status report;
inaccurate or missing assessment of limitations (as part of status report); code that is badly laid out (e.g. lines overflowing page width).

Commenting should include:
a title and brief description in words;
a high-level description of your algorithm (e.g. in Java or pseudo-code); a register assignment table (what will each register be used for?);
an introductory comment for each logical block of code;
a comment on most lines.

Note that comments on lines should relate the code back to the high-level and not just describe the instruction. E.g.

ADD R1,R2,R3 ; R1 = R2 + R3 is a poor value comment, whereas ADD R1,R2,R3 ; z = x + y

is much better.

Assessed Exercise: Sigma 16 Assembly Language Programming

Handout: 5th November 2018

Introduction

This exercise will give you some experience in developing and testing an assembly language program. You will begin by writing an algorithm in a high-level language to solve the problem; then you will translate the algorithm to Sigma16 assembly language and test it using the Sigma16-0.1.7 assembler and emulator.

The problem

Suppose there is an array of integers in memory. The array is named x, and the elements are defined by a sequence of data statements. There is an integer variable n, also defined by a data statement, and the array X contains n elements X[0], X[1], …, X[n-1]. There are three other variables named possum, negcount and oddcount. Write a program that will:

  • Calculate the sum of all the elements of x that are nonnegative (>=0) and store this sum in the variable possum, and
  • Count the number of elements of X that are negative and store this count in the variable negcount.
  • Count the number of positive elements of X that are odd numbers and store this count in the variable oddcount. Note that an odd number is one that does not divide exactly by 2 and so has a least significant bit of 1.

    As an “acceptance test” use DATA statements to give n the initial value 12, and define the following values for x: 3, -6, 27, 101, 50, 0, -20, -21, 19, 6, 4, -10. Thus, the final value of possum should be 3 + 27 + 101 + 50 + 0 + 19 + 6 + 4 = 210 ($00d2), the final value of negcount should be 4 and the final value of oddcount should also be 4.

    Now test your program out with other arrays and explore any limitations it may have. Summarise your findings in the Status Report (see What to hand in, Item 2)

    How to proceed

    See Moodle for instructions on how to launch the software. Before entering your own program, start by working through an example program (e.g. File: Open, click examples, then open Add.asm.txt.) Develop your program using the approach illustrated in lectures:

    (1) write the algorithm in high level notation (using assignments, ifs, for loops etc.), (2) check that your high-level algorithm is correct,
    (3) translate your algorithm to assembly language,
    (4) enter the assembly language into a file, and

    (5) test it with the assembler and emulator.

    You should use your high-level algorithm as comments at the beginning of the program, and each line of assembly language code should have a comment explaining what the instruction does in the context of the program. Look at the examples given to see what comments should look like.

What to hand in

Hand in a report 2-3 pages in length, printed on paper, at the IT Systems & Networks pigeonhole outside the Teaching Office. Please staple the pages in the upper left-hand corner, and don’t put the report in a folder of any kind.

  1. Title (on first page). State that this is Systems & Networks 2018 Assessed Exercise, give your name and matriculation number, and the date.
  2. A short status report (on first page). This is not documentation about your program; it is merely a statement of the status of your hand-in. Did you finish the assignment? If not, which parts did you do? Does your program work correctly? If so, what evidence do you have that it works? What are your program’s limitations and why? Does it work for all arrays and all numbers?

    Are there known bugs in the program? If so, what is the evidence for these bugs, and do you have any ideas about how to fix them? Just as in the “real world”, it is better to say that you have a bug in a program than to claim falsely that it works correctly.

    Note that a bug is different from a limitation. A limitation is a planned out-of-range scenario where your program will never produce correct answers (e.g. due to code limitations, overflows etc); a bug is an unplanned scenario where your program should work but does not (i.e. a coding error).

    The status report should be no more than a half page long. The last part of the first page should be left blank for feedback.

  3. On second (and third page if necessary) The assembly language source file with acceptance test data (the DATA statements describing the array mentioned above) included.
    • Do not use inter-line spacing (e.g. 1.5× or 2× spacing) on consecutive lines of code.
    • Do use blank lines and full-line comments to separate sections of code.
    • Format code for readability: use a smaller font if necessary to prevent lines overflowing the page width.
  4. In addition, email your source file (item 3 above) as a plaintext attachment that can be assembled by the Sigma16 system to Lewis.Mackenzie@glasgow.ac.uk. This should not be a Word or PDF file. The Subject field of your email should read “Systems and Networks 2018 Assessed Exercise”. This will allow your program to be tested to verify that it works. You must do this before the exercise deadline.
  5. Please adhere to submission guidelines exactly as outlined above. Bands will be lost for failing to do so.