Presentation is loading. Please wait.

# HCS12 Arithmetic Lecture 3.3. 68HC12 Arithmetic Addition and Subtraction Shift and Rotate Instructions Multiplication Division.

## Presentation on theme: "HCS12 Arithmetic Lecture 3.3. 68HC12 Arithmetic Addition and Subtraction Shift and Rotate Instructions Multiplication Division."— Presentation transcript:

HCS12 Arithmetic Lecture 3.3

68HC12 Arithmetic Addition and Subtraction Shift and Rotate Instructions Multiplication Division

Addition and Subtraction

HCS12 code for 1+, 2+ ;1+ ( n -- n+1 ) ONEP LDD0,X ADDD#1 STD0,X RTS ;2+ ( n -- n+2 ) TWOP LDD0,X ADDD#2 STD0,X RTS

HCS12 code for 1-, 2- ;1- ( n -- n-1 ) ONEP LDD0,X SUBD#1 STD0,X RTS ;2- ( n -- n-2 ) TWOP LDD0,X SUBD#2 STD0,X RTS

Double Numbers

Adding Double Numbers

Subtracting Double Numbers

68HC12 Arithmetic Addition and Subtraction Shift and Rotate Instructions Multiplication Division

Logic Shift Left LSL, LSLA, LSLB 0 1 0 1 0 0 1 0 1 1 C 76543210Bit 1 0 1 0 0 1 0 1 10 C 76543210Bit 1 0 1 0 0 1 0 1 76543210 AB LSLD

Logic Shift Right LSR, LSRA, LSRB 1 0 1 0 0 1 0 1 10 C 76543210Bit 1 0 1 0 0 1 0 1 10 C 76543210Bit 1 0 1 0 0 1 0 1 76543210 AB LSRD

Arithmetic Shift Right ASR, ASRA, ASRB 1 0 1 0 0 1 0 1 1 C

Rotate Left ROL, ROLA, ROLB 1 0 1 0 0 1 0 1 1 C 76543210Bit

Rotate Right ROR, RORA, RORB 1 0 1 0 0 1 0 11 C 76543210Bit

2*, 2/, and U2/

68HC12 Arithmetic Addition and Subtraction Shift and Rotate Instructions Multiplication Division

Binary Multiplication

13 x 12 26 13 156 1101 1100 0000 1101 10011100 9 C = 156

Hex Multiplication

61 x 90 5490 3D x 5A 262 A x D = 82, A x 3 = 1E + 8 = 26 131 5 x D = 41, 5 x 3 = F + 4 = 13 1572 16 = 5490 10 Dec Hex

Hex Multiplication product = \$1572 is in D = A:B ; multiply 8 x 8 = 16 =00004000 ORG \$4000 4000 86 3D LDAA #\$3D 4002 C6 5A LDAB #\$5A 4004 12 MUL

product = \$1572 is in D = A:B

Multiplication

16-Bit Hex Multiplication 31A4 x1B2C 253B0 4 x C = 30 A x C = 78 + 3 = 7B 1 x C = C + 7 = 13 3 x C = 24 + 1 = 25

16-Bit Hex Multiplication 31A4 x1B2C 253B0 6348 2 x 4 = 8 2 x A = 14 1 x 2 = 2 + 1 = 3 2 x 3 = 6

16-Bit Hex Multiplication 31A4 x1B2C 253B0 6348 2220C 4 x B = 2C A x B = 6E + 2 = 70 1 x B = B + 7 = 12 3 x B = 21 + 1 = 22

16-Bit Hex Multiplication 31A4 x1B2C 253B0 6348 2220C 31A4 0544D430 ORG \$4000 4000 CC 31A4 LDD #\$31A4 ;D = \$31A4 4003 CD 1B2C LDY #\$1B2C ;Y = \$1B2C 4006 13 EMUL ;Y:D = D x Y

Y:D = 0544D430

Multiply Instructions Note that EMUL and MUL are unsigned multiplies EMULS is used to multiply signed numbers

Unsigned Multiplication Dec Hex 65528 x 8 524224 FFF8 x 0008 7FFC0 524224 10 = 7FFC0 16

FFF8 x 0008 7FFC0

Unsigned Multiplication Dec Hex 65528 x 8 524224 FFF8 x 0008 7FFC0 524224 10 = 7FFC0 16 But FFF8 = 1111111111111000 can be a signed number 2’s comp = 0000000000001000 = \$0008 = 8 10 Therefore, FFF8 can represent -8

Signed Multiplication Dec -8 x 8 -64 64 10 = 00000040 16 = 0000 0000 0000 0000 0000 0000 0100 0000 2’s comp = 1111 1111 1111 1111 1111 1111 0100 0000 = \$FFFFFF40 Therefore, for signed multiplication \$FFF8 x \$0008 = \$FFFFFF40 and not \$7FFC0 The EMULS instruction performs SIGNED multiplication

Signed Multiplication product = \$FFFFFFC0 is in Y:D ; EMULS signed 16 x 16 = 32 =00004000 ORG \$4000 4000 CC FFF8 LDD #\$FFF8 ;D = \$FFF8 4003 CD 0008 LDY #\$0008 ;Y = \$0008 4006 1813 EMULS ;Y:D = D x Y

product = \$FFFFFFC0 is in Y:D

Multiplication Note that EMUL is a 16 x 16 multiply that produces a 32-bit unsigned product. If the product fits into 16-bits, then it produces the correct SIGNED product.

FFF8 x 0008 7FFC0 -8 x 8 -64 = \$FFC0 Correct 16-bit SIGNED result

Multiplication Even MUL can be used for an 8 x 8 = 8 SIGNED multiply

Note: A x B = A:B B contains the correct 8-bit SIGNED value

68HC12 Arithmetic Addition and Subtraction Shift and Rotate Instructions Multiplication Division

Binary Division 100111001100 1 0111 1 1 1100 0011 0 0 0000 01100 1 1100 0000 D C 9C

Hex Division EE BC2F C C x E = A8 C x E = A8 + A = B2 B28 9AF A

Hex Division EE BC2F C A x E = 8C A x E = 8C + 8 = 94 B28 9AF A 94C 63 Dividend = BC2F Divisor = EE Quotient = CA Remainder = 63

Hex Division EE BC2F C B28 9AF A 94C 63 =00004000 ORG \$4000 4000 CD 0000 LDY #\$0000 4003 CC BC2F LDD #\$BC2F 4006 CE 00EE LDX #\$00EE 4009 11 EDIV ;BC2F/EE = CA rem 63

Division

Y:D/X => Y Remainder in D

Divisor may be too small EE FFBC2F 11313 rem 85 Quotient does not fit in Y Overflow bit, V, will be set S X H I N Z V C Condition code register

S X H I N Z V C Condition code register Note overflow bit, V, set N and Z are undefined Y and D unchanged

S X H I N Z V C Condition code register Note divide by zero sets carry bit, C N, Z, and V are undefined Y and D unchanged

Division

Y:D/X => Y Remainder in D Note symmetric division Truncation toward zero Sign of remainder = sign of dividend

Y:D/X => Y Remainder in D Note symmetric division Truncation toward zero Sign of remainder = sign of dividend

Symetric Division (truncation toward zero) DividendDivisorQuotientRemainder 26 7 3 5 -26 7 -3 -5 26 -7 -3 5 -26 -7 3 -5 Floored Division (truncation toward minus infinity) DividendDivisorQuotientRemainder 26 7 3 5 -26 7 -4 2 26 -7 -4 -2 -26 -7 3 -5

D = \$0001 X = \$0002 FDIV => X = \$8000 D = \$0000 1212 = 0.5 = 0.1000000000000000 2 = 0.8000 16

D = \$1234 X = \$0010 IDIV => X = \$0123 D = \$0004

D = \$FFE6 X = \$0007 IDIVS => X = \$FFFD D = \$FFFB -26 7 = -3 remainder = -5

Download ppt "HCS12 Arithmetic Lecture 3.3. 68HC12 Arithmetic Addition and Subtraction Shift and Rotate Instructions Multiplication Division."

Similar presentations

Ads by Google