Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
154 views

Assembly Language Programming 01 PDF

The document discusses assembly language programming and addressing modes. It introduces assembly language as being lower-level and closer to the instruction set architecture (ISA) than high-level languages. Key points about assembly syntax and common addressing modes like register, indexed, symbolic, and immediate are described. The instruction cycle of fetch, decode, operand fetch, execute, and writeback is also summarized.

Uploaded by

Thành Trường
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
154 views

Assembly Language Programming 01 PDF

The document discusses assembly language programming and addressing modes. It introduces assembly language as being lower-level and closer to the instruction set architecture (ISA) than high-level languages. Key points about assembly syntax and common addressing modes like register, indexed, symbolic, and immediate are described. The instruction cycle of fetch, decode, operand fetch, execute, and writeback is also summarized.

Uploaded by

Thành Trường
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

00:11:59

Chapter 3
Assembly language
programming
00:11:59
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 • Each instruction specifies a
translates to several instructions single ISA instruction.
in the ISA of the computer.
• Makes low level programming
more user friendly.
• More efficient code.

Microcomputer principles and applications


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.

Microcomputer principles and applications


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.

Microcomputer principles and applications


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.
Microcomputer principles and applications
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).

Microcomputer principles and applications


3.3 Addressing Modes

Source Addressing Modes


• Register.
• Indexed.
• Symbolic (PC Relative).
• Absolute Address.
• Indirect Register.
• Indirect Auto-increment.
• Immediate.

Microcomputer principles and applications


3.3 Addressing Modes

Destination Addressing Modes


• Register.
• Symbolic (PC Relative).
• Absolute Address.
• Indexed.

Microcomputer principles and applications


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

Microcomputer principles and applications


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

Microcomputer principles and applications


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.

Microcomputer principles and applications


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).

Microcomputer principles and applications


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.

Microcomputer principles and applications


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.

Microcomputer principles and applications


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

Microcomputer principles and applications

You might also like