Assembly Language

Download Report

Transcript Assembly Language

Assembly Language
part 1
Some terminology
• Assembly language: a low-level language
that is a little more human-friendly than
machine language
• assembler: a program that translates
assembly language source code into
executable form
• object code: machine language program
(assembler output)
Types of assemblers
• Resident assembler: an assembler written
for its own platform, using the native
instruction set
• Cross assembler: assemble run on one
platform to produce object code for
another
• Disassembler: program that attempts to
recover source code from object code (not
100% successful)
Assembly language instructions
• Mnemonics: abbreviated words used instead of
machine language hex code;
– have one-to-one correspondence with underlying
instruction
– always possible to determine underlying machine
language statement from assembly language
mnemonic, but not vice-versa
• Pseudo-ops: assembly language statements
used mostly for data declaration; do not
correspond to specific machine language
instructions
Pep/8 assembly language
• General syntax notes:
– one instruction per line of code
– comments start with semicolon, continue until
end of line
– not case-sensitive
– Spacing:
• at least one space required after each instruction
(mnemonic or pseudo-op)
• otherwise doesn’t matter
– last line of program must be .END pseudo-op
Pep/8 Assembly Language
• Mnemonic instruction format:
– 2-6 letter instruction specifier (most or 3-4 letters)
– operand specifier, usually followed by a comma and
– 1-3 letter address mode specifier (most are 1)
• Examples:
LDA 0x0014,i ; load hex value 14 to A
LDX 0x1110,d ; load data at address 1110 into x
• Entire Pep/8 assembly language instruction set
is printed on the inside front cover (and on page
191) of your textbook
Pep/8 Assembly Language
• Addressing mode specifiers:
– i: immediate
– d: direct
– n: indirect
– s: stack-relative
– sf: stack-relative deferred
– x: indexed
– sx: stack-indexed
– sxf: stack-indexed deferred
Pep/8 Assembly Language
• Unimplemented opcodes
– instructions available at assembly language level,
even though they are not (directly) available at the
machine language level
– represent operations handled by the operating system
• They include:
–
–
–
–
–
NOPn: unary no operation trap
NOP: non-unary NOP
DECI: decimal input trap
DECO: decimal output trap
STRO: string output trap
Pseudo-ops
• .ADDRSS: used to crate labeled jump destinations
• .ASCII: specifies char string
• .BLOCK: allocates specified # of bytes, initializes whole
set to zero
• .BURN: used for OS configuration
• .BYTE: allocates one byte; can specify hex or decimal
content
• .END: stop code
• .EQUATE: equate symbol with literal value; like # define
in C/C++
• .WORD: allocates one word of memory
Example program 1
; Program example 1
CHARO 0x0010 ,d
CHARO 0x0011 ,d
CHARO 0x0012 ,d
CHARO 0x0013 ,d
CHARO 0X0014 ,d
STOP
.ASCII "Arrr!"
.END
Comment
Instructions: each outputs one
character; starting address of program
is 0000, and each instruction (except
STOP) is 3 bytes long; STOP is one
byte
Data
Object code & assembler output
from program example 1