ECE265 ECE 265 – LECTURE 6 The M68HC11 Basic Instruction Set Basic Arithmetic Instructions 4/8/2015 1 Lecture Overview 2 The M68HC11 Basic Instruction Set The basic mathematical instructions REF: Chapter 3 and the appendix that details the instructions. Joanne E. DeGroat, OSU ECE265 4/8/2015 Arithmetic Instructions 3 These instructions are used to add, subtract, compare, increment, decrement, 2’s complement, test, and decimal adjust data. Both 8-bit and 16-bit operations are possible. It is possible to write code that allows data of higher precision to be operated upon. This extended precision requires the user to write code to support the higher precision. Architecture also supports Binary Coded Decimal (BCD) operations. Joanne E. DeGroat, OSU ECE265 4/8/2015 Add instructions 4 Add instructions – note the addressing mode Joanne E. DeGroat, OSU ECE265 4/8/2015 Add operations 5 Operation: ABA – add the A and B accumulators – Result in A ABX, ABY – add B to the specified index register ADCA,ADCB – add with carry to A/B ADDA,ADDB – add the contents of memory to A/B ADC and these set the H CC bit to accommodate BCD arithmetic ADDD – a 16-bit addition using memory Description: 2’s complement binary addition CC effects: N X V C and H as noted Joanne E. DeGroat, OSU ECE265 4/8/2015 The overflow flag 6 What exactly is overflow? Does that mean you exceeded the binary range represent-able? Carry A +B C=0 V=1 0 1 0110 1100 0100 0001 1010 1101 108 65 173 Carry A +B C=1 V=1 1 1 1110 0000 0100 0000 0010 0000 224 (-32) 64 32 2’s complement coming Carry A +B C=1 V=0 1 0 1011 1111 1100 0000 0111 1111 -65 (note: +65 is 0100 0001) -64 127 and not -129 Joanne E. DeGroat, OSU and does not represent 83 as it would in 2’s complement ECE265 4/8/2015 More arithemetic instructions 7 Decimal adjust, increment and decrement, and Two’s complement. Joanne E. DeGroat, OSU ECE265 4/8/2015 Decimal Adjust DAA 8 Description: Adjusts the result in A to a valid BCD number. Consider adding the BCD for $99 + $22 in Accum A Both $99 and $22 are valid BCD numbers. Adding these in binary gives a result of $BB with no half carry or carry. Also, $B is not a valid BCD digit. Executing DAA will have the following effect. For the lsd: BCD of $9 + $2= $B will give a $1 and a half carry. For the most significant digit you have $9 + $2=$B adjusted $B is $1 + hc = $2 and a final carry out. So here, accumulator A is adjusted to $21 and both C & H are set CC effects: N Z and C H are corrected Forms: DAA and only inherent mode Joanne E. DeGroat, OSU ECE265 4/8/2015 Increment and Decrement 9 Description: Instructions that increment or decrement a memory location or either the A or B accumulator (Inherent mode). Note that there is no instruction to increment or decrement the D accumulator. (and C is not affected) CC effects: N Z V Forms: INCA INCB INC (opr) DECA DECB DEC(opt) Just add 1 or subtract 1 (2’s complement) Joanne E. DeGroat, OSU ECE265 4/8/2015 Two complement operations 10 Description: Replace the contents of the location with its two’s complement value CC effects: N Z V and C The C bit will be set in all cases except when the contents are $00 Forms: NEGA NEGB Joanne E. DeGroat, OSU NEG (opr) ECE265 4/8/2015 Two’s Complement 11 How do you get the two’s complement? Two simple algorithms – consider 00001001(dec 9) Joanne E. DeGroat, OSU ECE265 4/8/2015 Two’s Complement 12 How do you get the two’s complement? Two simple algorithms – consider 00001001(dec 9) 1. Take the 1’s complement and add 1 Ones complement is 11110110 + 00000001 = 11110111 Which represents -9 Joanne E. DeGroat, OSU ECE265 4/8/2015 Two’s Complement 13 How do you get the two’s complement? Two simple algorithms – consider 00001001(dec 9) 1. Take the 1’s complement and add 1 Ones complement is 11110110 + 00000001 = 11110111 Which represents -9 2. Starting with the lsb keep all binary digits until you come to the 1st 1. Keep that 1. Invert all the more significant binary digits. Easy to see on the above example. Now consider 0000 1110 11110010 (14 and -14) Joanne E. DeGroat, OSU ECE265 4/8/2015 Two’s complement numbers 14 0111 0110 0101 0100 0011 0010 0001 0000 7 6 5 4 3 2 1 0 Joanne E. DeGroat, OSU 1111 1110 1101 1100 1011 1010 1001 1000 -1 -2 -3 -4 -5 -6 -7 -8 For 4-bits ECE265 4/8/2015 Additional Arithmetic Instr. 15 A few more instructions, this time for binary subtraction Joanne E. DeGroat, OSU ECE265 4/8/2015 Binary subtraction 16 Consider the following example of 7 – 5 = 2 0111 -0101 0010 Direct and very easy to see Now throw in a borrow - 6 – 5 = 1 0110 -0101 but right off see that we need to subtract 1 from 0 so borrow from the next binary position and get 0102 (and yes 2 is not a binary digit – but this is for illustration) -0101 (and it is the weight when a digit is moved right) 0001 Joanne E. DeGroat, OSU ECE265 4/8/2015 More binary subtraction 17 Consider 12 – 3 = 9 1100 -0011 and we again have borrows Joanne E. DeGroat, OSU ECE265 4/8/2015 More binary subtraction 18 Consider 12 – 3 = 9 1100 -0011 and we again have borrows 1020 after 1st step of borrow -0011 but we still need a borrow Joanne E. DeGroat, OSU ECE265 4/8/2015 More binary subtraction 19 Consider 12 – 3 = 9 1100 -0011 and we again have borrows 1020 after 1st step of borrow -0011 but we still need a borrow 1012 after 2nd step of borrow -0011 1001 which is the binary for 9 Joanne E. DeGroat, OSU ECE265 4/8/2015 How about a 2’s complement result 20 An example to get a 2’s complement result, i.e., a negative number result. Consider 3 – 5 0011 - 0101 Borrow in =1 2011 1211 - 0101 giving 1110 which is the 2’s complement for -2 And here would also have a CC carry bit of 1 to indicate a borrow. Joanne E. DeGroat, OSU ECE265 4/8/2015 The subtract instruction 21 Description: Subtract the contents of two locations CC effects: N Z V and C C is set if contents of 2nd operand is larger Forms: SBA – subtract accumulator B from A A SUBA (opr) – subtract memory location SUBB (opr) contents from accumulator SUBD (opr) - 16 bit operation SBCA (opr), SBCB (opr) – subtract with carry Joanne E. DeGroat, OSU ECE265 4/8/2015 Compare Instructions 22 Instruction to compare two values and set condition codes. Joanne E. DeGroat, OSU ECE265 4/8/2015 Compare Instructions 23 Description: compare the data at two locations and set the CC bits. The data is not altered. (Compare instructions perform a subtraction to update the bits of the CC register.) CC effects: N V C Z Forms: CBA CPD (opr) CMPA (opr) and CMPB (opr) Addressing modes: Note the difference in the mnemonic for register compare of D, A, or B to memory. Joanne E. DeGroat, OSU ECE265 4/8/2015 Compare instruction example 24 Comparison of a subtract versus a compare. A subtract instruction does alter one of the operands which is the destination. Note that only the affected bit of the CCR is shown. Joanne E. DeGroat, OSU ECE265 4/8/2015 Compare example problem 25 PROBLEM: What programming steps are needed to compare the data at address $1031 with a set point value of $50 using accumulator A. Note that this address is one of the A/D result registers, i.e., where the result of an A/D conversion is stored. Joanne E. DeGroat, OSU ECE265 4/8/2015 Compare example problem 26 PROBLEM: What programming steps are needed to compare the data at address $1031 with a set point value of $50 using accumulator A. Note that this address is one of the A/D result registers, i.e., where the result of an A/D conversion is stored. LDDA #$50 Load the set point into Reg A CMPA $1031 Compare A to memory (A-M) Results will indicate if A=M : Z=1 A>M : N=0 Z=0 A<M : N=1 Z=0 Joanne E. DeGroat, OSU ECE265 4/8/2015 Another example 27 If the data at address $1031 in the previous example was $45 which bits in the CC register are set or cleared? Joanne E. DeGroat, OSU ECE265 4/8/2015 Test Instruction 28 The test instructions Allows testing of values for positive, negative, or zero values. The instruction subtracts $00 from the location, setting the CC register bits. The contents of the location are not modified. Joanne E. DeGroat, OSU ECE265 4/8/2015 Multiply and Divide instructions 29 The processor can perform and 8-bit by 8-bit multiply and two forms of divide. The forms for divide are integer and fractional. Joanne E. DeGroat, OSU ECE265 4/8/2015 The multiply 30 Example 3.12 from text: What programming steps are needed to multiply the data at location $D500 with the data at location $D510. The result is to be stored at $D520 and $D521. LDAA $D500 Load value #1 into A accum LDAB $D510 Load value #2 into B accum MUL A x B -> D STD $D520 Store result (16 bits) Joanne E. DeGroat, OSU ECE265 4/8/2015 Another multiply example 31 Figure 3.5 Joanne E. DeGroat, OSU ECE265 4/8/2015 Binary Multiplication 32 Multiply in the previous example $FF = 1111 1111 255 $14 = 0001 0100 20 11 1111 1100 5100 1111 1111 0000 1 0011 1110 1100 ($13EC) Is this 5100? 4096 +512+256 +128+64+32 +8+4 4096 +768 +128+96 +12 4864 +140 +96 = 4864 + 236 = 5100 Joanne E. DeGroat, OSU ECE265 4/8/2015 The Divide instruction 33 2 divide instructions IDIV Binary integer division Used when D is larger than X Divide D/X -> X with the remainder going into D FDIV Binary fractional division Used when X is larger than D Divide D/X -> X with the remainder (or continuation of the fractional part going into D Joanne E. DeGroat, OSU ECE265 4/8/2015 Division Examples 34 Integer and Fractional examples Joanne E. DeGroat, OSU ECE265 4/8/2015 Lecture summary 35 Have covered Cover data transfer instructions in Lecture 5 In this lecture went over the basic arithmetic instructions Add Subtract Increment and Decrement Testing data Multiply and Divide Joanne E. DeGroat, OSU ECE265 4/8/2015 Assignment 36 Problems Chapter 3 page 87 Problem 13 Problem 14 Problem 17 Joanne E. DeGroat, OSU ECE265 4/8/2015