Download INFO 2521 - Metropolitan Community College

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
METROPOLITAN COMMUNITY COLLEGE
COURSE OUTLINE
COURSE TITLE:
Intel® Assembly Language I
COURSE PREFIX AND NO.
INFO 2521
LEC
4.5
LAB
0
CREDIT HOURS 4.5
COURSE DESCRIPTION:
Students develop knowledge and abilities in relation to common cross-platform data representations,
computer architecture, and machine and assembly language principles and techniques. Topics include
assembly language directives, operators, and program structure. Students use Intel x86 Assembly
Language to develop simple applications.
COURSE PREREQUISITE (S):
INFO 1522
RATIONALE:
This course will help you develop an overall understanding of the interaction between the computer
hardware, operating systems, and application programs. Assembly language allows you to apply and
test the theoretical information you are given in computer architecture and operating systems courses.
REQUIRED TEXTBOOK (S) and/or MATERIALS:
Title:
Assembly Language for Intel®-Based Computers
Edition:
Current
Author:
Kip R. Irvine
Publisher:
Prentice Hall
Materials:
removable storage media, assembly language development software (optional)
Attached course outline written by:
Reinarz/Tucker
Revised by:
Date:
Effective Date:
Academic Dean:
Date: 6/06
12/FA
Dr. Thos C. Pensabene
Metro Community College
Date:
Page 1 of 8
Revised: Jun-06
TITLE:
PREFIX/NO.: INFO 2521
Intel® Assembly Language I
COURSE OBJECTIVES:
Upon successful completion of this course, the student will be able to:
1.
Differentiate and compare common cross-platform data representations, computer architecture,
and machine and assembly language principles and techniques.
2.
Describe assembly language directives, operators, and program structure.
3.
Use assembly language to plan, write, assemble, execute, and document application programs.
4.
Demonstrate machine-level debugging skills, including monitoring each of the CPUs actions as
directly as possible.
5.
Explain the relationship between fundamental high-level programming constructs (such as
statements, arithmetic expressions, loops, logical structures, and data structures and arrays) and
lower-level code (assembly language and native and virtual machine language.)
6.
Describe how high-level languages implement their high-level constructs at the lower levels.
7.
Explain how language compilers (such as C++) translate their high-level language into lowerlevel code.
TOPICAL UNIT OUTLINE/UNIT OBJECTIVES:
UNIT I:
A.
B.
C.
INTRODUCTION TO ASSEMBLY LANGUAGE
Miscellaneous Introductory Issues
1.
Course prerequisites
2.
Assembly language in relation to hardware architecture and CPU machine
language
3.
Assembly language in relation to higher-level languages
4.
Why learn assembly language?
Assembly Language Software Development Environment
1.
Components of the assembly language software development environment
(including hardware and software “stack” requirements and options for this
course)
2.
Supplements to the textbook
3.
Installing your software
Virtual Machine Concepts
1.
Virtual machines
2.
Specific machines (and six levels of virtual machines)
3.
Intel IA-32 processor architecture support for multiple virtual machines
4.
Data representation
5.
Numeric
Metro Community College
Page 2 of 8
Revised: Jun-06
D.
UNIT II:
A.
B.
C.
D.
E.
F.
UNIT III:
A.
B.
C.
6.
Character storage
Boolean Operations
1.
Boolean expression
2.
The NOT operation
3.
The AND operation
4.
The OR operation
5.
Operator precedence
6.
Truth tables for Boolean functions
7.
The hardware level—logic gates
ARCHITECTURE
General Concepts and Parts of a Computer System
1.
Basic microcomputer design
2.
Instruction execution cycle
3.
Reading from memory
4.
How programs run
The IA-32 Processor Architecture
1.
Modes of operation
2.
Basic execution environment
3.
Extended execution environment
4.
Intel microcomputer history
IA-32 Memory Management
1.
Real-address mode
2.
Protected mode
3.
Virtual 8086 mode
Components of an IA-32 Microcomputer (IBM PC)
1.
Motherboard
2.
Video output
3.
Memory
4.
Input-output ports
Input-Output System Concepts
1.
How it all works
Intel Run-Time Instruction Encoding
1.
16-bit real-address mode
2.
32-bit protected mode
ASSEMBLY LANGUAGE FUNDAMENTALS AND ELEMENTS
Basic Elements
1.
Constants, expressions, reserved words, and identifiers
2.
Statements: instructions, directives, and macros
Example Program
1.
Program listing
2.
Program output
3.
Program description
4.
Program template
Assembling, Linking, and Running Programs
1.
The assemble-link-execute cycle
Metro Community College
Page 3 of 8
Revised: Jun-06
D.
E.
F.
UNIT IV:
A.
B.
C.
D.
Defining Data at Assembly-Time
1.
Intrinsic data types
2.
Data definition statement
3.
Defining BYTE and SBYTE data
4.
Defining WORD and SWORD data
5.
Defining DWORD and SDWORD data
6.
Defining QWORD data
7.
Defining TBYTE data
8.
Defining real number data
9.
Little endian order
10.
Adding variables to the AddSub program
11.
Declaring uninitialized data
12.
Mixing code and data
Assembly-Time Symbolic Constants
1.
Equal-sign directives
2.
Calculating the sizes of arrays and strings
3.
The EQU directive
4.
The TEXTEQU directive
Real-Address Mode Programming
1.
Basic changes
RUN-TIME INSTRUCTION SET—PART I
Data Transfers and Basic Operand/Addressing Types
1.
Operand types
2.
The MOV instruction
3.
Zero/sign extension of integers
4.
The LAHF and SAHF instruction
5.
The XCHG instruction
6.
Operand types—direct-offset operands
Basic Arithmetic (Addition and Subtraction)
1.
The INC and DEC instructions
2.
The ADD instruction
3.
The SUB instruction
4.
The NEG instruction
5.
Implementing arithmetic expressions
6.
Flags affect5ed by arithmetic
Assembly-Time: Data-Related Operators and Directives
1.
The OFFSET operator
2.
The ALOGN directive
3.
The PTR operator
4.
The TYPE operator
5.
The LENGTHOF operator
6.
The SIZEOF operator
7.
The LABEL directive
Indirect Addressing
1.
Indirect operands
2.
Arrays
3.
Indexed operands
Metro Community College
Page 4 of 8
Revised: Jun-06
E.
UNIT V:
A.
B.
C.
D.
E.
UNIT VI:
A.
B.
C.
4.
Pointers
Basic Jumps and Loops
1.
The JMP instruction
2.
The LOOP instruction
3.
Summing an integer array
4.
Copying a string
CREATING BASIC RUN-TIME PROCEDURES
Linking to an External Library
1.
Background information
Using the Book’s Link Library
1.
Overview
2.
Individual procedure descriptions
3.
The Irvine 32.inc include file
4.
Library test program
Run-Time Stack Operations
A. Runtime stack
B. The PUSH and POP instructions
Defining and Using Procedures (Assembly-Time and Run-Time Elements)
1.
The PROC directive
2.
The CALL and RET instructions
3.
Example: summing an integer array
4.
Flowcharts
5.
Saving and restoring registers
Program Design Using Procedures
1.
Integer summation program (design)
RUN-TIME INSTRUCTION SET—PART II: CONDITIONAL PROCESSING
Boolean and Comparison Instructions
1.
The CPU flags
2.
The AND instruction
3.
The OR instruction
4.
The XOR instruction
5.
The NOT instruction
6.
The TEST instruction
7.
The CMP instruction
8.
Setting and clearing individual CPU flags
Conditional Jumps
1.
Conditional structures
2.
The Jcond instructions
3.
Types of Conditional Jump instructions
4.
Conditional jump applications
5.
Bit testing instructions (optional)
Conditional Loop Instructions
1.
The LOOPZ and LOOPE instructions
2.
The LOOPNZ and LOOPNE instructions
Metro Community College
Page 5 of 8
Revised: Jun-06
D.
E.
F.
UNIT VII:
A.
B.
C.
UNIT VIII:
A.
B.
C.
Conditional Structures
1.
Block-structured IF statements
2.
Compound expressions
3.
The WHILE loop structure
4.
Table-driven selection
Finite-State Machines—From Theory to Application
1.
Validating an input string
2.
Validating a signed integer
Run-Time Conditionals Via Assembly-Time .IF, .REPEAT, and .WHILE Directives
(Macros)
1.
Using the .IF directive
2.
The .REPEAT and .WHILE directives
RUN-TIME INSTRUCTION SET—PART III
Bit Shift and Rotate Instructions
1.
Logical shifts versus arithmetic shifts
2.
The SHL instruction
3.
The SHR instruction
4.
The SAL and SAR instructions
5.
The ROL instruction
6.
The ROR instruction
7.
The RCL and RCR instructions
8.
The SHLD/SHRD instructions
9.
Shift and rotate applications
Multiplication and Division Instructions
1.
The MUL instruction
2.
The IMUL instruction
3.
The DIV instruction
4.
Signed integer division
5.
Implementing arithmetic expressions
Arithmetic Instructions for:
1.
Extended binary
2.
Decimal arithmetic
CREATING ADVANCED RUN-TIME PROCEDURES
Local Variables and the Run-Time Stack
1.
The LOCAL directive
Parameters on the Run-Time Stack
1.
The INVOKE directive
2.
The PROC directive
3.
The PROTO directive
4.
Passing by value or reference
5.
Parameter classifications
6.
Example: exchanging two integers
7.
Trouble-shooting tips
Run-Time Stack Frames
1.
Memory models
Metro Community College
Page 6 of 8
Revised: Jun-06
D.
E.
UNIT IX:
A.
B.
C.
D.
2.
Language specifiers
3.
Explicit access to stack parameters
4.
Passing arguments by reference
5.
Creating local variables
6.
The ENTER and LEAVE Instructions (optional)
Run-Time Recursion
1.
Endless recursion
2.
Recursively calculating a sum
3.
Calculating a factorial
Creating Multimodule Programs
1.
Example: ArraySum program
STRINGS AND ARRAYS
Run-Time String Primitive Instructions
1.
Using a repeat prefix
2.
Direction flag
3.
The MOVSB, MOVSW, and MOVSD instructions
4.
The CMPSB, CMPSW, and CMPSD instructions
5.
The SCASB, SCASW, and SCASD instructions
6.
The STOSB, STOSW, and STOSD instructions
7.
The LODSB, LODSW, and LODSD instructions
8.
Character translations and the XLAT instruction
9.
Converting a 2’s complement integer to an ASCII string
Selected String Procedures from the Book’s Link Library
1.
The Str_compare procedure
2.
The Str_length procedure
3.
The Str_copy procedure
4.
The Str_trim procedure
5.
The Str_ucase procedure
Two-Dimensional Arrays
1.
Base-index operands
2.
Base-index displacement
Searching and Sorting Integer Arrays
1.
Bubble sort
2.
Binary search
COURSE REQUIREMENTS/EVALUATION:
Upon successful completion of the objectives for this course, the student will have acquired an overall
understanding of the interaction between the computer hardware, operating systems, and application
programs.
Metro Community College
Page 7 of 8
Revised: Jun-06
OUTCOME MEASURES
COURSE OBJECTIVES
ASSESSMENT
MEASURES
1.
Differentiate and compare common cross-platform data
representations, computer architecture, and machine and
assembly language principles and techniques.
Written tests
Programming exercises
and assignments
2.
Describe assembly language directives, operators, and program
structure.
Written tests
Programming exercises
and assignments
3.
Use assembly language to plan, write, assemble, execute, and
document application programs.
Programming exercises
and assignments
4.
Demonstrate machine-level debugging skills, including
monitoring each of the CPUs actions as directly as possible.
Written tests
Programming exercises
and assignments
5.
Explain the relationship between fundamental high-level
programming constructs (such as statements, arithmetic
expressions, loops, logical structures, and data structures and
arrays) and lower-level code (assembly language and native and
virtual machine language.)
Written tests
Programming exercises
and assignments
6.
Describe how high-level languages implement their high-level
constructs at the lower levels.
Written tests
Programming exercises
and assignments
7.
Explain how language compilers (such as C++) translate their
high-level language into lower-level code.
Written tests
Programming exercises
and assignments
Metro Community College
Page 8 of 8
Revised: Jun-06