COLLIN COLLEGE

COURSE SYLLABUS

Course Number: COSC 2325

Course Title: Computer Organization and Machine Language

Course Description: Study of the architecture of the computer through the use of assembly language programming. Includes study of registers, instruction sets, addressing techniques, machine execution traces, table searching/sorting, file I/O, program linking, and macros. This lab is taught with Intel assembly language.

Course Credit Hours: 3

Lecture Hours: 3

Prerequisites: COSC 1436 or consent of Department Chair

Student Learning Outcomes: After successful completion of this course, the student should be able to:

1. Demonstrate Competency in Computer Hardware, Firmware, and Software Concepts.
1.1 Discuss the I- and E-phases of the instruction cycle and the importance of the instruction address counter.
1.2 Discuss how one machine differs from another with regard to speed and possible breadth of capabilities.
1.3 Delineate the different roles played by the hardware and software.
1.4 Be able to outline how functions may be implemented by hardware, firmware, or with software.
1.5 Identify and use MASM options.
1.6 Explain the various memory models.
1.7 Explain and use simplified segment definitions.

2. Demonstrate Competency in Fundamental Computer Concepts.
2.1 State when assembly language is used in place of a high level language.

2.2 Discuss the relationship of high level languages and the hardware.

2.3 Explain how data is represented in high level languages, assembler language, and at the hardware level.

2.4 Contrast data representation between high level languages, assembler language and the hardware.

2.5 Use correct terminology utilized in assembler level programming.

2.6 Name and describe the various parts of a computer system.

2.7 Explain the purpose and functions of the processor.

2.8 Explain segment/offset addressing.

2.9 Describe typical input/output devices.

2.10 Explain the difference between a relocatable value and an absolute value.

2.11 Describe the way to include comments within the source code.

2.12 List the problem-solving steps that must be used to create an acceptable programming solution.

2.13 Discuss why it is important to document, in writing, the input and output specifications for a programming product.

2.14 Explain what pseudo code is and know how to express a problem solution in pseudo code.

2.15 Use the top-down design technique and structured walk through to develop a logical solution to a problem

3. Demonstrate Competency In Operating Systems, Utility, Language, and Application Software Knowledge and Use in Preparation of Programming Assignments.

3.1 Explain the function of the operating system.

3.2 Use CodeView to enter data into storage, examine storage and registers, and execute instructions.

3.3 Explain the difference between DOS interrupts and BIOS interrupts.

3.4 Use CodeView to examine and trace EXE programs.

3.5 Define interrupts.

3.6 Describe how interrupt numbers refer to the position of the interrupts in main storage.

3.7 Discuss the use of file handles and the extended DOS services for handling disk files.

3.8 To examine basic programming requirements for using the BIOS functions to read, write, format, and verify disks.

3.9 Describe the requirements for printing using DOS and BIOS interrupts.

4. Demonstrate the Various Ways that Data can be Represented.

4.1 Identify where the responsibility lays in representing data of various types.

4.2 Discuss how data is converted between high level languages and assembler languages.

4.3 Use ASCII codes to represent character data.

4.4 State how BOOLEAN logic is utilized as data representation.

5. Demonstrate Competency in the Various Ways that Data may be Manipulated in Assembler Language.

5.1 Perform arithmetic on binary and hexadecimal numbers.

5.2 Explain how negative numbers are formed and processed.

5.3 Perform addition and subtraction on 8-bit and 16-bit numbers.

5.4 Increment and decrement registers and values in main storage.

5.5 Perform multiplication and division on 8-bit and 16-bit numbers.

5.6 Explain logical operations on binary numbers and describe how they are used in programming.

5.7 Describe the various shifting and rotating operations.

5.8 Input characters and convert them to numeric form.

5.9 Convert numbers in main storage into printable form.

5.10 Describe how to perform arithmetic operations on numbers longer than one word.

5.11 Describe how to compare long strings of bytes or words.

5.12 Display long hexadecimal numbers in decimal or hex form.

5.13 Convert between ASCII and binary.

5.14 Perform arithmetic and adjustment on ASCII format.

5.15 Utilize BOOLEAN logic within a program segment.

5.16 Explain use of the direction flag in instructions that handle strings.

5.17 Explain and illustrate the use of the REP prefixes with string handling instructions.

5.18 Explain the uses of specific registers with the string handling instructions.

5.19 Explain the use of the LODS instruction with bytes or words of a string.

5.20 Describe the use of the PTR instruction to clarify the size of the string operand.

5.21 Explain operation of the STOS instruction.

5.22 Describe use of the SCAS instruction in searching strings for specific values.

5.23 Describe operation of the MOVS instruction and explain how it differs from other string handling instructions.

5.24  Describe operation of the CMPS instruction in comparing two strings.

6. Demonstrate Competency in Assembly Language Programming Concepts.

6.1 Describe the steps in the overall assembly process.

6.2 Name and describe the types of statements used in assembler language.

6.3 Identify the segments of a program.

6.4 Define the beginning and end of programs, segments, and procedures.

6.5 Explain the difference between data constants and storage definitions.

6.6 Explain the difference between COM and EXE programs.

6.7 Name and describe the inputs and outputs of the assembler.

6.8 Explain the function of the linker and its inputs and outputs.

6.9 Describe requirements for the most common keyboard input functions.

6.10 Set up data in the proper form for screen output functions.

6.11 Explain differences between output to the screen and to the printer.

6.12 Name and describe the three basic logical structures.

6.13 Write pseudo code ad flowchart symbols to represent the three basic logical structures.

6.14 Describe various forms of comparison.

6.15 Explain how flags are set by comparison and certain other instructions.

6.16 Differentiate between conditional and unconditional jumps.

6.17 Name and use special instructions for control loops.

6.18 Describe the operation of the stack and its purpose.

6.19 Distinguish between near and far subroutines.

6.20  Explain the difference between internal and external subroutines.

6.21  Explain the relationship between EXTRN and PUBLIC statements.

6.22 Explain the use of registers, flags, memory locations, and the stack for passing parameters to and from subroutines.

6.23 Describe techniques for removing parameters from the stack upon return from a subroutine.

6.24 Explain the difference between constant and variable operands.

6.25 Describe six different addressing modes and give examples of each.

6.26 Explain the use of the PTR instruction to eliminate ambiguity.

6.27 Describe and give examples of segment overrides.

6.28 Use address modifications to process strings and arrays of bytes or words.

6.29 Create libraries of external subroutines.

6.30 Describe byte strings and word strings.

6.31 Identify the parts of a macro definition.

6.32 Distinguish between defining and invoking a macro.

6.33 Explain ways of supplying parameters to macros.

6.34 Explain the form and use of LOCAL parameters.

6.35 Concatenate parameters with strings and other parameters.

6.36 Create a library of macro definitions and include the library with a source module.

6.37 Use control statements to cause listing or suppression of macro expansions.

6.38 Use the repeat commands both within and outside of macro definitions.

6.39 Use conditional statements both within and outside of macro definitions.

6.40 Describe conventions used by Microsoft compilers to call procedures written in assembler language.

6.41 Use the stack for passing near and far parameters.

6.42 Use the stack to provide a work space for data needed by an assembler subroutine.

6.43 Explain the difference between functions and procedures in high level languages.

6.44 Adapt assembler subroutines to specific requirements of different compilers.

Withdrawal Policy: See the current Collin Registration Guide for last day to withdraw.

Collin College Academic Policies: See the current Collin Student Handbook.

Americans with Disabilities Act Statement: Collin College will adhere to all applicable federal, state and local laws, regulations and guidelines with respect to providing reasonable accommodations as required to afford equal educational opportunity. It is the student’s responsibility to contact the ACCESS office, SCC-G200 or 972.881.5898 (V/TTD: 972.881.5950) to arrange for appropriate accommodations. See the current Collin Student Handbook for additional information.

3