Điện, điện tử - Chapter 3: Assembly language programming
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
15 trang |
Chia sẻ: huyhoang44 | Lượt xem: 660 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Điện, điện tử - Chapter 3: Assembly language programming, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chapter 3
Assembly language
programming
3.1 Introduction to Assembly
Microcomputer principles and applications
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.
3.1 Introduction to Assembly
Microcomputer principles and applications
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.
3.1 Introduction to Assembly
Microcomputer principles and applications
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.
3.1 Introduction to Assembly
Microcomputer principles and applications
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.
3.2 Instruction Cycle
Microcomputer principles and applications
• 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).
3.3 Addressing Modes
Microcomputer principles and applications
Source Addressing Modes
• Register.
• Indexed.
• Symbolic (PC Relative).
• Absolute Address.
• Indirect Register.
• Indirect Auto-increment.
• Immediate.
3.3 Addressing Modes
Microcomputer principles and applications
Destination Addressing Modes
• Register.
• Symbolic (PC Relative).
• Absolute Address.
• Indexed.
3.3 Addressing Modes
Microcomputer principles and applications
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
3.3 Addressing Modes
Microcomputer principles and applications
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
3.3 Addressing Modes
Microcomputer principles and applications
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.
3.3 Addressing Modes
Microcomputer principles and applications
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).
3.3 Addressing Modes
Microcomputer principles and applications
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.
3.3 Addressing Modes
Microcomputer principles and applications
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.
3.3 Addressing Modes
Microcomputer principles and applications
3.3.7 Immediate Mode
Example
mov #0xBEEF, R6
Explanation
Load R6 with 0xBEEF
Usefulness
Initialize a register with a value
Các file đính kèm theo tài liệu này:
- assembly_language_programming_01_3105.pdf