Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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