Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Assembly Language Computer language hierarchy • High Level Language • Compiled or interpreted • One statement maps to one or more assembly language statement • Assembly language • Assembled • One statement maps to one machine language instruction • Machine language • Loaded directly into the processor memory • One statement maps to one or more RTL statements Computer language hierarchy • You can toss in the scripting languages (PERL, Python, PHP, VBScript…) • You can toss in the interpreted languages (BASIC, Haskell, Lisp, Forth) • And other categories • The seem to fit somewhere between HLL and Assembly but don’t run directly on the hardware (virtual machine/interpreter) Assembly language • This is as close as you ever get to the hardware (without actually keying in binary values – which no one ever does anymore) • Requires a major shift in mindset from programming HLLs Programming • In HLL programming you concern yourself with variables, datatypes, and control statements – int, float, char, if, for, while, arrays, etc. • In assembly language programming you concern yourself with memory and instruction – RAM, ROM, registers, instruction classes, addressing modes Programming • In HLL programming you concern yourself with keywords and grammars – Statements, expressions, etc. • In assembly language programming you concern yourself with mnemonics and circuit components – Instruction names, arithmetic units, control units, etc. Programming • In HLL programming you sit down with a “how to” textbook to guide you • In assembly language programming you sit down with a chip specification document to guide you Programming • In HLL programming you might be able to estimate how long a program will take to run and how much memory it will use • In assembly language programming you can calculate how long a program will take to run and how much memory it will use Assembly programming • You must have an understanding of the architecture on which you are running your program • Each architecture [or family] has it’s own assembly language – The language is intimately tied to the design of the architecture The 8051 architecture • • • • • • 8-bit CPU with A (accumulator) and B registers 16-bit program counter and data pointer 8-bit program status word 8-bit stack pointer Internal ROM Internal RAM – – – – • • • • Four register banks of 8 registers each Sixteen bytes of bit addressable locations Eighty bytes of general purpose data memory Thirty two input/output pins Two 16-bit timer/counters Various control registers Serial port Interrupt sources The 8051 instruction set • Instruction classes – Arithmetic operations – Logical operations – Data transfer – Boolean variable manipulation – Program branching The 8051 instruction set • The processor status word (PSW) – Carry flag – Auxiliary carry flag – General purpose flags (2) – Register bank selector (2 bits) – Overflow flag – Parity flag The 8051 instruction set • Addressing modes – – – – – – – – – Register Direct Indirect-register Constant 8-bit Constant 16-bit Address 16-bit Address 11-bit Relative Bit Addressing modes • Rn where 0 ≤ n ≤ 7 – the contents of register n; • 0x00 (or other hex number) – the contents of a memory location • @Ri where 0 ≤ i ≤ 1 – indirect, register holds the memory address • #0x00 (or other hex number) – 8-bit constant number • #0x00 16 (or other hex number) – 16-bit constant number • There are a few others but these are the most commonly used modes Data transfer instructions • MOV op-code • Various operands dependant on desired addressing mode – Some examples: MOV MOV MOV MOV MOV A, R0 A, #0x00 A, 0x00 A, @R0 R0, A ; ; ; ; ; A = R0 A = 0 A = memory[0] A = memory[R0] R0 = A Simulator • We don’t have an 8051 processor • The next best thing is a simulator • Download EdSim51 from EdSim51 – This is a Java executable (.jar) file that runs on both Windows and MacOS • Documentation is available on the download site