PC Assembler Ing. E.E. Mak MSc
Cluster1 Introduction Microprocessors Numbers, Binary, Hexadecimal, ASCII Adding and subtracting Instructions and Flags Deeds Z80 simulator
Computer Lay-out MEM data+instructions CPU I/O External
Model CPU PCR2R1 IR M A RM A R M D RM D R ALU AB SR DECODER ICU TIMER C CLOCK
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’ W B H D AF’FA’ Z C L E I R IX IY SP PC
Negative Numbers = = Using the 8-th bit as a SIGN bit = = Inverting the bits
Two’s Complement inv +1 Two’s Complement
Packed Decimals = = binary Binary packed decimal
Addition
Subtraction
Flags Carry Overflow Zero Negative.. …...
Generic Instructions Input/output data Load a value(register) into a register Arithmetic jumping / subroutine control Bitwise operators : Boolean, Register shifts interrupt handling stacking
Example programs LD A,86d ADD A,57d LD A,86d ADC A,57d
Example programs2 Adding 57 to HL: LD A,L ADD A,57d LDL,A LDA,H ADCA,0 LDH,A
Assignments 1.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 for all number-configurations demonstrated in previous sheets 3.Investigate how to multiply using binary numbers 4.Investigate using shift operators could facilitate the multiplication process. 5.What are floating point decimals, how are they implemented?
links Simple reference list Z80 opcodes: – Lots of information about the Z80 – full reference list op-codes Z80: – Crash-course Z80 assembly-programming –
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 0E0E A1A 2828 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?) Could you develop an algorithm to make this corrections?