Functional organization of digital computers and programming in machine and assembly language. Internal representation of data, binary arithmetic, machine instructions, addressing modes, subroutine linkage, macros. Introduction to assemblers, linkers, and loaders. Prerequisite: An introductory programming course.
overview of assembly language programming number systems and number representations introduction to computer organization (CPU, ALU, registers. memory, bus system, instruction execution cycle) assembly language instructions, the assembly process allocation of central memory for data debugging addressing modes arrays further discussion of instructions (shift/rotate, etc.) character data and strings input/output stacks subroutines and argument passing representation of floating point numbers multiple precision
Download Zip https://lpoms.com/2A3aMU
This course introduces the fundamental concepts of computer organization and assembly language programming. Instructors guide students on the basic Instruction Set Architecture and hardware of a modern computer processor. The course explores how computer systems execute programs; the representation of characters, integers, and floating point values; and the manipulate data, working from a high level programming language down to the hardware. Topics also include the processor pipeline, memory hierarchy, and calling conventions. Programs emphasize assembly language coding standards and debugging techniques.
*can be taken concurrently
Description
Explaining the state of the art computer systems focusing on major components: CPU,I/O, and memory. In-depth discussion of the instructions set architecture of the MIPS microprocessors. This includes different types of assembly instructions doing basic arithmetic, data movement, decision making, and jumping. Discussing different performance matrices of microprocessors and how to measure and analyze performance and evaluate speedups. Going through basic computer arithmetic covering integer and floating point operations. Discussing I/O ports, I/O devices and controllers, DMA channels, priority interrupts. Also discussing different I/O technologies, such as magnetic disks, flash disks, and optical storage. It also discusses the latest trends in microprocessors design and programming (such as SIMD and MIMD).
Cross-listed
Same as ECNG 3502 .
When Offered
Offered in fall and spring.
CMPS 250 - Machine Organization and Assembly Language Programming3 cr.(Prerequisite: CMPS 144)An introductory study of the organization and architecture of computers through an exploration of various virtual machines. Programming at the assembly-language level and interfacing with software components (primarily written in C). Topics include representation of data and instructions, computer arithmetic, memory hierarchies, instruction sets, addressing modes, digital logic, microprogramming, pipelining, and parallel processing.
Course Outcomes:
At the end of the course, students will be able to:
The Art of 64-bit Assembly, Volume 1 builds on the timeless material of its iconic predecessor, offering a comprehensive masterclass on writing complete applications in low-level programming languages.
Randall Hyde is an embedded software engineer who has worked in the medical, nuclear, consumer electronics, and entertainment industries. He taught assembly language programming at the University level for over 10 years and has written hundreds of thousands of lines of assembly code for embedded and commercial applications over the years.
Catalog Description: Differences and similarities in machine organization; central processors; fundamentals of machine language and addressing; assembly language programming, including macros; operating system interfaces. No credit to students who have completed 410.
This book was written to introduce students to assembly language programming in MIPS. As with all assembly language programming texts, it covers basic operators and instructions, subprogram calling, loading and storing memory, program control, and the conversion of the assembly language program into machine code.
However this book was not written simply as a book on assembly language programming. The larger purpose of this text is to show how concepts in Higher Level Languages (HLL), such as Java or C/C++, are represented in assembly. By showing how program constructs from these HLL map into assembly, the concepts will be easier to understand and use when the programmer implements programs in languages like Java or C/C++. Concepts such as references and variables, registers, binary and Boolean operations, subprogram execution, memory types (heap, stack, and static), and array processing are covered to clarify the decisions made when implementing HLL. Program control is presented using a mapping from structured programs in pseudo code to help students understand structured programming, and why it exists. Memory access in assembly is presented to high light the difference between references (pointers) and values, and how these impact HLL.
This book has numerous code examples, and many problems at the end of each chapter, and it is appropriate for a class in Assembly Language, or as a extra resource for a class in Computer Organization.
The student will be able to:
A. Describe the architectural components of a computer system.
B. Discuss and demonstrate the use of compilers, linkers, and loaders.
C. Describe computer representation of numbers and how computer arithmetic is carried out.
D. Describe the representation of nonnumeric data (character codes, graphical data).
E. Demonstrate the knowledge of MIPS assembly language.
F. Compare and contrast MIPS architecture and assembly language with IA32.
G. Write and debug assembly programs that use load/store, arithmetic, logic, branches, call/return and push/pop instructions.
H. Discuss how variable access, arithmetic, function calls, and pointers are translated from a high level language into assembly.
I. Write programs that interface between a high level language and assembly.
J. Write programs that contain system calls.
K. Demonstrate and evaluate the use of efficient programming techniques.
A. Assembler and compiler installation
1. Install a MIPS assembler/simulator and a C compiler
2. Compile a simple C to demonstrate the proper installation of the compiler
3. Use the assembler to generate the corresponding object code
4. Run the linkage editor and execute the program
B. High level language programming and numeric representations
1. Write a program in a high level language that stores and converts between a variety of numeric representations
2. Compile the program
3. Examine the output of the compiler and correlate the high level language instructions with the generated assembler instructions
4. Discuss the various numeric representations and how they interoperate
C. High level language programming and non-numeric representations
1. Write a program in a high level language the stores and converts between a variety of non-numeric representations
2. Use BCD, EBCDIC, ASCII and Unicode character codes and convert among them
3. Compile the program
4. Examine the output of the compiler and correlate the high level language instructions with the generated assembler instructions
E. Basic assembly language programming
1. Write an assembly language program which demonstrates data transfer instructions, binary arithmetic, and conditional branching
2. Assemble and execute the program
3. Evaluate the output
F. Advanced assembly language programming
1. Write an assembly language program which demonstrates array access and manipulation, String processing, bit-level instruction
2. Assemble and execute the program
3. Evaluate the output
G. Interaction between high level and low level languages
1. Write an high-level language program which calls, passes data to, and receives data from another assembly language program
2. Assemble and execute the program the program
3. Examine the output of the program to ensure that it produces the desired results
H. Interaction between assembly language programs and system calls
1. Write an assembly language program which calls, passes data to, and receives data from operating system calls
2. Assemble and execute the program the program
3. Examine the output of the program to ensure that it produces the desired results
I. Writing efficient high level language programs
1. Compile a sample source program and analyze the resulting assembly language program
2. Modify the source program in order the resulting assembly language program execute faster
3. Analyze and explain why the changes made the assembly language program execute faster
Lectures which include motivation for the architecture of computer systems (CPU, RAM, storage), syntax and use of the ISA 32 assembly language, example programs, and analysis of these programs
Online labs (for all sections, including those meeting face-to-face/on-campus), consisting of:
1. A programming assignment webpage located on a college-hosted course management system or other department-approved internet environment. Here, the students will review the specification of each programming assignment and submit their completed lab work
2. A discussion webpage located on a college-hosted course management system or other department-approved internet environment. Here, students can request assistance from the instructor and interact publicly with other class members
Detailed review of programming assignments which includes model solutions and specific comments on the student submissions
In-person or online discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of designing, implementing and analyzing programs
When course is taught fully online:
1. Instructor-authored lecture materials, handouts, syllabus, assignments, tests, and other relevant course material will be delivered through a college-hosted course management system or other department-approved internet environment
2. Additional instructional guidelines for this course are listed in the attached addendum of CS department online practices