PC Assembler
-
Upload
joelle-nixon -
Category
Documents
-
view
46 -
download
4
description
Transcript of PC Assembler
Cluster1
• Introduction
• Microprocessors
• Numbers, Binary, Hexadecimal, ASCII
• Adding and subtracting
• Instructions and Flags
• Deeds Z80 simulator
Z80 Processor Register Layout
Main registers. Alternative registers.
S
Z
-
H
-
P/V
N
C
Sign
Zero
-
Half-Carry
-
Parity/overfl.
Negate
Carry
Flags 8 bit
Adress Registers
Accumulator Registers
Interupt
register
Memory
Refresh
Alternative Registers
W’B’
H’D’
Z’C’
L’E’
WB
HD
A F’FA’
ZC
LE
I
R
I XI Y
S PP C
Negative Numbers
0 1 11 0 1 0053 =
1 1 11 0 1 00-53 =
Using the 8-th bit as a SIGN bit
0 1 11 0 1 0053 =
1 0 00 1 0 11-53 =
Inverting the bits
Generic Instructions
• Input/output data• Load a value(register) into a register• Arithmetic• jumping / subroutine• control• Bitwise operators : Boolean, Register shifts • interrupt handling• stacking
Assignments1. Write a program to store 100 into DE and 385 into BC ADD thereafter DE and BC into HL
2. Investigate substraction using negative numbers forall number-configurations demonstrated in previoussheets
3. Investigate how to multiply using binary numbers
4. Investigate using shift operators could facilitatethe multiplication process.
5. What are floating point decimals , how are they implemented?
links
• Simple reference list Z80 opcodes:– http://www.ticalc.org/pub/text/z80/z80.txt
• Lots of information about the Z80– http://www.z80.info/
• full reference list op-codes Z80:– http://www.ticalc.org/pub/text/z80/z80_reference.txt
• Crash-course Z80 assembly-programming– http://www.ticalc.org/pub/text/z80/z80asmg.zip
Binary Packed
The use of half bytes let us express two adjacent hexadecimal numbers. As a consequence, we may use this two-digit hexadecimal byte presentation to perform calculations as well, whereas the carry-mechanism while adding work accordingly
0E
0 1 00 1 0 00
0 0 01 1 0 10
0 0 00 1 1 10
+1A
28
In hexadecimal coding, each digit of one halfbyte represents a hexadecimal number
Binary Packed Decimal
The use of half bytes for numbers 0..9 only, forces while adding special corrections to facilitate adding of these decimal numbers.
(What would the result have been without this corrections?)
07
0 1 00 0 1 00
0 0 11 0 1 10
0 0 10 0 1 10
+17
24
Could you develop an algorithm to make this corrections?