1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Lecture Microcomputer principles and applications - Chapter 3: Assembly language programming

15 52 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 50,88 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Contents: Introduction to Assembly, Instruction Cycle, Addressing Modes

Trang 1

Chapter 3

Assembly language

programming

Trang 2

3.1 Introduction to Assembly

High level vs Assembly

High level languages Assembly language

• More programmer friendly • Lower level, closer to ISA

• More ISA independent • Very ISA-dependent

• Each high-level statement

translates to several instructions

in the ISA of the computer

• Each instruction specifies a single ISA instruction

• Makes low level programming more user friendly

• More efficient code

Trang 3

3.1 Introduction to Assembly

Assembler syntax

{label[:]} mnemonic {operand list} {;comment}

Symbols:

⋄ Used as labels, constants, and substitution values and

stored in a symbol table

⋄ A symbol name is a string of up to 200 alphanumeric

characters (A-Z, a-z, 0-9, $, and _), cannot contain embedded blanks, is case sensitive

⋄ The first character cannot be a number

Labels:

⋄ Labels are symbols

Trang 4

3.1 Introduction to Assembly

Assembler syntax

{label[:]} mnemonic {operand list} {;comment}

Labels:

⋄ Begined in column 1 and is optionally followed by a colon

⋄ The value of a label is the current value of the Location

Counter (address within program)

⋄ A label on a line by itself is a valid statement

⋄ Labels used locally within a file must be unique

Mnemonics:

⋄ Cannot start in column 1 If it does, it is interpreted as a label

Trang 5

3.1 Introduction to Assembly

Assembler syntax

{label[:]} mnemonic {operand list} {;comment}

Mnemonics:

⋄ Contains one of the following items: Instruction, Assembler

directive, Macro directive, Macro invocation

⋄ A label on a line by itself is a valid statement

⋄ Labels used locally within a file must be unique

Operands:

⋄ Contains one or more operands

⋄ An operand may consist of: symbols, constants,

expressions

⋄ Operands are separated with commas

Trang 6

3.2 Instruction Cycle

• Instruction Fetch (Get what you need to do)

• Instruction Decode (Understand what you need to do)

• First Operand Fetch (Not enough information, get some more)

• Second Operand Fetch (Still not enough information, get some

more)

• Execute (Do it !)

• Write back (Write result of the operation)

Trang 7

3.3 Addressing Modes

Source Addressing Modes

• Register

• Indexed

• Symbolic (PC Relative)

• Absolute Address

• Indirect Register

• Indirect Auto-increment

• Immediate

Trang 8

3.3 Addressing Modes

Destination Addressing Modes

• Register

• Symbolic (PC Relative)

• Absolute Address

• Indexed

Trang 9

3.3 Addressing Modes

3.3.1 Register Mode

Example:

mov R5, R6

Explanation:

Moves the content or the register R5 into R6 without altering R5

Usefulness

Save a register to another

Trang 10

3.3 Addressing Modes

3.3.2 Indexed Mode

Example

mov 4(R5), R6

Explanation

• Add 4 to the content of R5 inside the CPU

• Fetch the memory address from the forementionned

computation

• Store the value into R6

Usefulness

Access an item in memory (eg an array) with a constant offset

Trang 11

3.3 Addressing Modes

3.3.3 Symbolic Mode

Example

mov 0x1234, R6

explanation

• Add 0x1234 to the PC to generate the address

• Fetch the memory from the address of the forementionned

computation

• Store the value into R6

Usefulness

Access an array of data stored in the program memory

Trang 12

3.3 Addressing Modes

3.3.4 Absolute Mode

Example

mov &0xDEAD, R6

Explanation

• Fetch the memory from the address 0xDEAD

• Store the value into R6

Usefulness

Access memory at a known address (eg Peripheral)

Trang 13

3.3 Addressing Modes

3.3.5 Indirect Register Mode

Example

mov @R8, R6

Explanation

• Fetch the memory at the address contained in R8

• Store the value into R6

Usefulness

Use a register as a pointer to memory

Trang 14

3.3 Addressing Modes

3.3.6 Indirect Autoincrement Mode

Example

mov @R8+, R6

Explanation

• Fetch the memory at the address contained in R8

• Store the value into R6

• Increment R8

Usefulness

• Copy a data to somewhere else in 1 instruction

• Stack Popping

Trang 15

3.3 Addressing Modes

3.3.7 Immediate Mode

Example

mov #0xBEEF, R6

Explanation

Load R6 with 0xBEEF

Usefulness

Initialize a register with a value

Ngày đăng: 12/02/2020, 21:23

TỪ KHÓA LIÊN QUAN