M68k Arithmetic Instructions ECE 511: Digital System & Microprocessor.

Slides:



Advertisements
Similar presentations
Integer Arithmetic: Multiply, Divide, and Bitwise Operations
Advertisements

EECC250 - Shaaban #1 Lec # 2 Winter Addressing Modes  Addressing modes are concerned with the way data is accessed  Addressing can be.
The family.
Week 3. Assembly Language Programming  Difficult when starting assembly programming  Have to work at low level  Use processor instructions >Requires.
MOV Instruction MOV destination, source ; copy source to dest. MOV A,#55H ;load value 55H into reg. A MOV R0,A ;copy contents of A into R0 ;(now A=R0=55H)
Arithmetic in Computers Chapter 4 Arithmetic in Computers2 Outline Data representation integers Unsigned integers Signed integers Floating-points.
9/20/6Lecture 3 - Instruction Set - Al Instruction Set.
HEXADECIMAL NUMBERS Code
ARITHMETIC, LOGIC INSTRUCTIONS, AND PROGRAMS
Data Transfer Group ECE 511: Digital System & Microprocessor.
68k Software Model ECE511: Digital System & Microprocessor.
Exception Processing ECE511: Digital System & Microprocessor.
M68K Assembly Language Programming Bob Britton Chapter 4 Number Systems.
EECC250 - Shaaban #1 lec #16 Winter Estimation of Assembly Programs Execution Time For a CPU running at a constant clock rate: clock rate =
© 2006 Pearson Education, Upper Saddle River, NJ All Rights Reserved.Brey: The Intel Microprocessors, 7e Chapter 5 Arithmetic and Logic Instructions.
1 Binary Arithmetic, Subtraction The rules for binary arithmetic are: = 0, carry = = 1, carry = = 1, carry = = 0, carry =
Chapter 4 Basic Instructions. 4.1 Copying Data mov Instructions mov (“move”) instructions are really copy instructions, like simple assignment statements.
DIGITAL SYSTEMS TCE1111 Representation and Arithmetic Operations with Signed Numbers Week 6 and 7 (Lecture 1 of 2)
Computer Architecture
1 Binary Numbers Again Recall that N binary digits (N bits) can represent unsigned integers from 0 to 2 N bits = 0 to 15 8 bits = 0 to bits.
Binary Arithmetic Math For Computers.
1 Lecture 2: Number Systems Binary numbers Base conversion Arithmetic Number systems  Sign and magnitude  Ones-complement  Twos-complement Binary-coded.
The M68HC11 Basic Instruction Set Basic Arithmetic Instructions
Arithmetic for Computers
1 Arithmetic and Logical Operations - Part II. Unsigned Numbers Addition in unsigned numbers is the same regardless of the base. Given a pair of bit sequences.
Computers Organization & Assembly Language
ECE 447 Fall 2009 Lecture 5: TI MSP430 Software Development in C and Assembly pt. 2.
The 8051 Microcontroller and Embedded Systems
CMPE 325 Computer Architecture II Cem Ergün Eastern Mediterranean University Integer Representation and the ALU.
Khaled A. Al-Utaibi  Introduction  Arithmetic Instructions  Basic Logical Instructions  Shift Instructions  Rotate Instructions.
Lec 3: Data Representation Computer Organization & Assembly Language Programming.
Number Systems. Today Decimal Hexadecimal Binary –Unsigned Binary –1’s Complement Binary –2’s Complement Binary.
9/20/6Lecture 3 - Instruction Set - Al Instruction Set (2)
Chapter four – The 80x86 Instruction Set Principles of Microcomputers 2015年10月19日 2015年10月19日 2015年10月19日 2015年10月19日 2015年10月19日 2015年10月19日 1 Chapter.
ECE 2110: Introduction to Digital Systems Signed Addition/Subtraction.
Microprocessors Monday, Apr. 13 Dr. Asmaa Farouk Faculty of Engineering, Electrical Department, Assiut University.
ECE 447: Lecture 12 Logic, Arithmetic, Data Test and Control Instructions of MC68HC11.
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. 05.b: Arithmetic Operations Sumber: 1. Paul Carter, PC Assembly Language 2. Hamacher. Computer Organization,
CDP ECE Spring 2000 ECE 291 Spring 2000 Lecture 2: Number Systems & x86 Instructions Constantine D. Polychronopoulos Professor, ECE Office: 463.
68k Software Model ECE511: Digital System & Microprocessor.
Arithmetic and Logic Instructions
CHAPTER 6 ARITHMETIC, LOGIC INSTRUCTIONS, AND PROGRAMS.
Chapter 7 Bit Manipulation. 7.1 Logical Operations.
Microprocessor & Assembly Language Arithmetic and logical Instructions.
Chapter 1 Representing Data in a Computer. 1.1 Binary and Hexadecimal Numbers.
Integer Multiplication and Division COE 301 Computer Organization Dr. Muhamed Mudawar College of Computer Sciences and Engineering King Fahd University.
Microprocessor & Assembly Language
ECE 511: Digital System & Microprocessor
Arithmetic Instructions and Programs. Outlines Range of numbers in 8051 unsigned data Range of numbers in 8051 unsigned data Addition & subtraction instructions.
Dr. ClincyLecture 2 Slide 1 CS Chapter 2 (1 of 5) Dr. Clincy Professor of CS Note: Do not study chapter 2’s appendix (the topics will be covered.
Logical, Shift, Rotate & BCD. What we will learn in this session: Logical instructions. Shift & Rotate instructions. BCD operations. Bit operations.
M68k Addressing Modes ECE 511: Digital System & Microprocessor.
Lec 3: Data Representation
Status Register Status = system byte (supervisor only) + user byte = system status + condition code register usually, it is not important to know.
Integer Real Numbers Character Boolean Memory Address CPU Data Types
CDA 3101 Summer 2007 Introduction to Computer Organization
68000 Arithmetic Instructions
Lecture 3 - Instruction Set - Al
Arithmetic operations Programming
Chapter 11 © 2011, The McGraw-Hill Companies, Inc.
Digital Logic & Design Lecture 02.
Write a program to calculate x**y, given x and y.
Shift & Rotate Instructions)
M68k Arithmetic Instructions
Arithmetic and Logic Chapter 5
Chapter 5 Arithmetic and Logic Instructions
ARITHMETIC, LOGIC INSTRUCTIONS, AND PROGRAMS
COMS 361 Computer Organization
MIPS Arithmetic and Logic Instructions
Presentation transcript:

M68k Arithmetic Instructions ECE 511: Digital System & Microprocessor

What we are going to learn in this session: M68k arithmetic instructions:  Plus  Minus  Multiply  Divide  Compare  Test  Negate

Introduction

M68k has instructions for simple arithmetic operations. Enhances ability to perform tasks:  Perform calculations + control tasks. Can also do floating-point, but requires math co-processor:  Not covered.

Some Basics

Addressing Modes

We have covered these addressing modes DRDD0  D7 ARDA0  A7 Dn and An ARI(An) ARI+PI(An)+ ARI+PD-(An) ARI+DD(An) ARI+ID(An,Dn/An.s) PC+D D(PC) PC+I D(PC,Dn/An.s) ALA$ ASA$FFAA IACCR, SR, PC Effective Address: ID Immediate data:

Addressing Modes Dn: Data Register (D0  D7)  32-bit register (32-bit max). An: Address Register (A0  A7).  32-bit register (24-bit max).  Don’t use A7.

Addressing Modes Effective address (24-bit value):  $  $FFFFFF  Also includes Address Register Indirect methods.  Anything else: address error. (Immediate Data):  Preceded by #.  Binary: %, Hex: $, Decimal: no sign, Character: ‘ ‘.

Addressing Modes Example D1, D2, D3, D4, … $ (A0,D0.W) $123(PC) (A4) A1, A2, A3, A4, … #1000 #$1F34 #$ #’ABCD’

2’s Complement

Used by M68k to represent negative numbers. MSB as sign bit.  If 0, positive number.  If 1, negative number.

2’s Complement Example Converting 10 to -10: 10 (decimal) = (binary) 1. Start with positive number 2. Invert all the bits (invert) Add 1 to inverted result ’s Complement (-10)

2’s Complement Example Converting -5 to 5: -5 (decimal) = (binary) 1. The 2’s complement representation: 2. Invert all the bits (invert) Add 1 to inverted result Positive value (+5)

Condition Code Register

Condition Code Register (CCR) Used to store status of evaluated conditions. Final 5-bits of SR. CCR = XNZVC  X: rotate, multi-precision BCD operations.  N: result is negative  Z: result is zero  V: overflow has occurred.  C: carry/borrow has occurred.

X Example – Rotate ROXL.B#1,D0 D0.B = X X = 1C = 1 *X keeps extra bit And moves it to the back… C set as well

N Example MOVE.B#0,D0 MOVE.B#100,D1 SUB.BD1,D0 D0 = $00 (0) D1 = $64 (100) D0 = 0 – 100 = $9C (-100) $9C = MSB = 1, N = 1

Z Example MOVE.L#$FFFFFFFF,D0 SUB.B #$FF,D0 Z = 1 * Only B is tested, since.B was used Initial D0 = FFFFFFFF Final D0 = FFFFFF00

V- Overflow Bit Set during arithmetic/divide overflow. For ADD, SUB & CMP:  P + P = N  N + N = P  P – N = N  N – P = P More on divide overflow later. * P = Positive Number (MSB = 0) N = Negative Number (MSB = 1)

V Example MOVE.B#$41,D0 MOVE.B#$46,D1 ADD.BD1,D D0.B = +D1.B = New D0.B = V = ? 2’s complement D0 =

V Example MOVE.B#$41,D0 MOVE.B#$BA,D1 SUB.BD1,D D0.B = -D1.B = New D0.B = V = ? 2’s complement D0 = 65 – (-70)

C Example - Carry MOVE.B#$FF,D0 MOVE.B#$FF,D1 ADD.BD1,D0 D0.B = D1.B = Carry occurred, C = 1

C Example - Borrow MOVE.B#$12,D0 MOVE.B#$34,D1 SUB.BD1,D0 D0.B = D1.B = Borrow occurred, C = 1

Add Instructions

Available Instructions Add Instructions ADD ADDA ADDI ADDQ ADDX

ADD Adds two numbers together. D = S + D. Can use BWL. Effects all CCR.

ADD DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n ssssssssssss ddddddddd--- NZVCX ***** BWL

How ADD Effects CCR X = set according to C. N = 1 if MSB is 1. Z = 1 if all active bits are 0. V = 1 if overflow occurred (4 rules). C = 1 if carry occurred.

ADD Example D0 = $000011FF D1 = $ ADD.BD0,D FF D1 = + D0 = D1 = Only lower byte changed, the rest are the same. CCR X = C N = 0, MSB = 0 Z = 0, result non-zero. V = 0, (N + P = P). C = 1, carry occurred.

ADDA (Add Address) Perform add to An:  Destination must be An. Can use WL:  W sign-extended to 32-bits before add. Doesn’t effect CCR.

ADDA DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n ssssssssssss -d NZVCX WL

ADDA Example D0 = $0000AAAA A1 = $ ADDA.W D0,A1 sign-extended FFFFAAAA + A0 = FFFFBBBB X = unchanged N = unchanged Z = unchanged V = unchanged C = unchanged

ADDA Example D0 = $0000AAAA A1 = $ ADDA.L D0,A1.L is used, value in D0 not sign-extended AAAA + D0 = A0 = 0000BBBB X = unchanged N = unchanged Z = unchanged V = unchanged C = unchanged

ADDI (Add Immediate) Adds immediate data to destination. Source must be immediate data. Can use BWL. Effects all CCR (similar to ADD).

ADDI DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s d-ddddddd--- NZVCX ***** BWL

ADDI Example D0 = $ ADDI.L #$44,D D0= BC CCR X = Set similar to C N = 0 (MSB = 0) Z = 0 (result nonzero) V = 0 (P + P = P) C = 0 (No carry)

ADDQ (Add Quick) Similar to ADDI, but immediate data between 1  8. Can use BWL. Effects all CCR (similar to ADD). Generates smaller MC, faster execution.

ADDQ DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s ddddddddd--- NZVCX ***** BWL

ADDQ Example D0 = $ ADDQ.B #1,D D0= CCR X = Set similar to C N = 0 (MSB = 0) Z = 0 (result nonzero) V = 0 (P + P = P) C = 0 (No carry)

ADDX (Add Extended) Adds X together with results. D = D + S + X. Can use BWL. Limited addressing modes. Effects all CCR.

ADDX DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s---s d---d NZVCX ***** BWL

ADDX Example D0 = $ D1 = $ABCDEF12 X = 1 ADDX.B D1,D D0= B CCR X = Set similar to C N = 1 (MSB = 1) Z = 0 (result nonzero) V = 1 (P + P = N) C = 0 (No carry) ABCDEF12 D1=

Subtraction Instructions

Available Instructions Subtract Instructions SUB SUBA SUBI SUBQ SUBX

SUB Subtracts source from destination. D = D – S. Can use BWL. Effects all CCR.

SUB DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n ssssssssssss ddddddddd--- NZVCX ***** BWL

How SUB Effects CCR X = set according to C. N = 1 if MSB is 1. Z = 1 if all active bits are 0. V = 1 if overflow occurred. C = 1 if borrow occurred.

SUB Example D0 = $ D1 = $ SUB.WD0,D D0 = D1 = 2222EEEF (destination) X = C N = 1, MSB = 1 Z = 0, result non-zero. V = 0 (P – P = N). C = 1, borrow occurred.

SUBA (Subtract Address) Used to subtract values from address register. Can use WL. Source not sign-extended (unlike ADDA). Doesn’t effect CCR.

SUBA DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n ssssssssssss -d NZVCX WL

SUBA Example A0 = $ D1 = $2222EEEE SUBA.WD1,A0 2222EEEE D1 = A0 = Only lower word changed, the rest are the same. (destination) XNZVC unchanged

SUBI (Subtract Immediate) Subtracts immediate data from destination. Can use BWL. Effects all CCR similar to SUB.

SUBI DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s d-ddddddd--- NZVCX ***** BWL

SUBI Example D0 = $ SUBI.W#$3345,D D1 = 0000DEEF Only lower word changed, the rest are the same. (destination) X = C N = 1, MSB = 1 Z = 0, result non-zero. V = 0 (P – P = N). C = 1, borrow occurred.

SUBQ (Subtract Quick) Similar to SUBI, but immediate data between 1  8. Source must be immediate data. Can use BWL. Effects all CCR (similar to SUB). Generates smaller MC, faster execution.

SUBQ DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s d-ddddddd--- NZVCX ***** BWL

SUBQ Example D0 = $ SUBQ.B #$07,D D0= CCR X = Set similar to C N = 0 (MSB = 0) Z = 0 (result nonzero) V = 0 (P - P = P) C = 0 (No carry)

SUBX (Subtract Extended) Subtracts X with results. D = D - S - X. Can use BWL. Limited addressing modes. Effects all CCR.

SUBX DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s---s d---d NZVCX ***** BWL

SUBX Example D0 = $ D1 = $ABCDEFAB X = 1 SUBX.B D1,D D0= CC CCR X = Set similar to C N = 1 (MSB = 1) Z = 0 (result nonzero) V = 1 (P – N = N) C = 1 (borrow occurred) ABCDEFAB D1=

Compare Instruction

Available Instructions Compare Instructions CMP CMPA CMPI CMPM

CMP (Compare) Compare destination to source:  Similar to SUB (D - S), but doesn’t modify source/destination.  Only modifies CCR.  Destination must be data register. Can use BWL. Effects all CCR except X.

CMP vs. SUB CMPSUB Subtracts source from destination. Final result Method of operation Subtracts source from destination. Result not stored, only CCR updated. Result stored in destination. CCR Result Updated according to “subtract” operation. Effects all CCR except X. Updated according to subtract operation. Effects all CCR. BWLValid operand sizeBWL Effect on XX unchanged.X = C

CMP DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n ssssssssssss d NZVCX ****- BWL

How CMP Effects CCR X = unchanged. N = 1 if MSB is 1. Z = 1 if all active bits are 0. V = 1 if overflow occurred. C = 1 if borrow occurred.

CMP Example D0 = $ D1 = $ CMP.BD0,D D0 = D1 = X = unchanged N = 0 (MSB = 0) Z = 0 (result non-zero) V = 0 (P – P = P). C = 0 (no borrow) “D1” = Actual D1 =

CMP Example D3 = CMP.W#$4567,D3 D3.W =$ $4567 $0000 *Original D3 value unchanged Final D3 = X = unchanged N = 0 (MSB = 0) Z = 1 (result zero) V = 0 (P – P = P). C = 0 (no borrow).

CMP Example D3 = CMP.BD4,D3 D3.B =$50 D4.B =-$60 $F D4 = *Original D3, D4 unchanged Final D4 = Final D3 = X = unchanged N = 1 (MSB = 1) Z = 0 (result nonzero) V = 0 (P – P = N). C = 1 (borrow occurred).

CMPA (Compare Address) Compare address register to source:  Doesn’t modify source/destination.  Only modifies CCR.  Destination must be address register. Can use WL. Effects all CCR except X.

CMPA DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n ssssssssssss -d NZVCX ****- WL

CMPA Example A0 = $ D1 = $2222EEEE CMPA.WD1,A0 2222EEEE D1 = A0 = “A0” = X = unchanged N = 0 (MSB is 0) Z = 0 (result nonzero) V = 0 (P – N = P) C = 1 (borrow occurred) Final A0 =

CMPI (Compare Immediate) Compares destination to immediate data. Source must be immediate data. Can use BWL. Effects all CCR except X (same as CMP).

CMPI DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s d-ddddddd--- NZVCX ****- BWL

CMPI Example D4 = $0000AABB CMPI.W#$7ABB,D ABB 0000AABB - D4 = “D4” = X = unchanged N = 0, MSB = 0 Z = 0, result non-zero. V = 1 (N – P = P). C = 0, no borrow. 0000AABB Actual D4 =

CMPM (Compare Memory) Compare between two memory locations. Can use BWL. Source & destination must be memory. Effects all CCR except X (same as CMP). Only ARI + PI addressing allowed.

CMPM DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n ---s d NZVCX ****- BWL

CMPM Example $ $ $ $ $2000AA $ $ $ $ $ A0 = $ A1 = $ CMPM.W (A0)+,(A1)+ 11AA (A1) = (A0) = ED78 Result = X = unchanged N = 1 (MSB = 1) Z = 0 (Result non-zero) V = 0 (N – P = N) C = 0 (No carry) *Memory values unchanged. * A1, A0 increased by 2

Multiply Instructions

Available Instructions Multiply Instructions MULU MULS

MULU (Multiply Unsigned) Multiplies two 16-bit unsigned numbers and produces 32-bit unsigned result. Destination MUST be Dn. Effects all CCR except X.

MULU DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s-ssssssssss d NZVCX **00- W x W

MULU Example 00C80000 D0 = D0 replaced completely X 16-bit MULU D1,D D0 = D1 = 100 decimal 2 decimal 100 x 2 = 200 = $C8 X = unchanged N = 0 (MSB = 0) Z = 0 (result non-zero) V = 0 C = 0

MULS (Multiply Signed) Multiplies two 16-bit signed numbers and produces 32-bit signed result. Destination MUST be Dn. Effects all CCR except X.

MULS DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s-ssssssssss d NZVCX **00- W x W

MULS Example F63CFFFF D0 = D0 replaced completely 0005FE0C X 16-bit FE0C D0 = D1 = MULU D1,D decimal 5 decimal -500 x 5 = = $F63C X = unchanged N = 1 (MSB is 1) Z = 0 (result non-zero) V = always cleared C = always cleared

Divide Instructions

Available Instructions Divide Instructions DIVU DIVS

DIVU (Divide Unsigned) Divides 32-bit unsigned number by 16-bit unsigned number. Produces 32-bit result.  Lower 16-bits are quotient (hasil).  Upper 16-bits are remainder (baki). Destination MUST be Dn. Effects all CCR except X.

DIVU / Source Divisor Quotient (Hasil) Remainder (Baki) Destination LW WW

DIVU DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s-ssssssssss d NZVCX ***0- L ÷ W

How DIVU Effects the CCR X = unchanged. N = Set if quotient MSB is 1. Z = Set if quotient is zero. V = Set if division overflow occurs.  V = undefined if divide-by-zero. C = Always cleared.

DIVU Example D0 = $00186A1 (100,001 decimal) D1 = $000000C (12 decimal) DIVUD1,D0 100,001 / 12 = 8333, remainder 5 Decimal8,3335 QuotientRemainder Hex$208D$ D New D0 = 0005 X = unchanged N = 0 (Q MSB is 0) Z = 0 (Q nonzero) V = 0 (no overflow) C = always cleared

DIVU Example - Overflow D0 = $00186A1 (100,001 decimal) D1 = $ (1 decimal) DIVUD1,D0 100,001 / 1 = 100,001 = $186A1 Decimal100,0010 QuotientRemainder Hex$186A1$0000 8A61 New D0 = 0001 X = unchanged N = 0 (MSB is 0) Z = 0 (result nonzero) V = 1 (divide overflow) C = always cleared Quotient overflowed to remainder.

DIVS (Divide Signed) Divides 32-bit signed number by 16-bit signed number. Division method same as DIVU. Destination MUST be Dn. Effects CCR similar to DIVU.

DIVS DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n s-ssssssssss d NZVCX ***0- L ÷ W

DIVS Example D0 = #$ (5,001) D1 = #$0000FFE7 (-25) 5,001 / (-25) = -200, remainder 1DIVSD1,D0 Decimal-2001 QuotientRemainder Hex$FF38$0001 F3F8 New D0= 0001 X = unchanged N = 1 (Q MSB is 1) Z = 0 (Q result nonzero) V = 0 (no overflow) C = always cleared

Test Instructions

TST (Test Operand) Allows CCR to be updated based on current destination value:  Compares destination to zero.  Similar to CMP.s#0, Destination not effected:  Only changes CCR. Can use BWL. Effects all CCR except X.

TST DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n d-ddddddd--- NZVCX **00- BWL

TST Example 8F D3 = TST.LD3 D3.L =$F $ $F F Final D3 = X = unchanged N = 1 (MSB is 1) Z = 0 (data nonzero) V = always cleared C = always cleared *D3 unchanged, CCR updated. (TST.L D3 = CMP.L #0,D3)

TAS (Test & Set Operand) Similar to TST, but only tests 1 byte:  Tests byte and sets CCR.  Then set MSB to 1. Can only use B. Effects all CCR except X.

TAS DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n d-ddddddd--- NZVCX **00- B

TAS Example 8F D3 = TASD3 D3.B =$78 -$00 $78 Only byte tested 8F23456F Final D3 = D3.B = After testing, bit 7 is set. F8 X = unchanged N = 0 (MSB is 0) Z = 0 (result non-zero) V = always cleared. C = always cleared. 1 2

Other Instructions

NEG (Negate) Converts value to opposite sign:  Negative  Positive  Positive  Negative  0 – D = D 2’s Complement representation. Can use BWL. Effects all CCR.

NEG DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n d-ddddddd--- NZVCX ***** BWL

NEG Example Find the 2’s Complement value of -10 when D0 is loaded with 10. D0 = $ A NEG.BD A - D0 = X = C N = 1 (MSB is 1) Z = 0 (result is nonzero) V = 0 (P – P = N) C = 1 (borrow occurred) F6 D0 = = 0 -10

What if we negate again? D0 = $000000F6 NEG.BD F6 - D0 = X = C N = 0 (MSB is 0) Z = 0 (result is nonzero) V = 0 (P – N = P) C = 1 (borrow occurred) A D0 = = 0 -(-10) +10

NEGX (Negate with Extend) Same as NEG, but subtracts X as well:  0 – D – X = D 2’s Complement representation. Can use BWL. Effects all CCR.

NEGX DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n d-ddddddd--- NZVCX ***** BWL

NEGX Example D0 = $ X = 1 NEGX.BD D0 = X = C N = 1 (MSB is 1) Z = 0 (result is nonzero) V = 0 (P – P = N) C = 1 (borrow occurred) EE D0 = = X =

EXT (Sign Extend) Extends sign to remaining upper register bits. Can use WL only. Checks MSB (sign bit) and extends sign:  If.W used, extended to 16-bits.  If.L used, extended to 32-bits. Effects all CCR except X.

EXT DnAn(An)(An)+-(An)d(An)d(An,i)ASAALAd(PC)d(PC,i)#n d NZVCX **00- WL

EXT Example AA D0 = EXT.WD0 0000FFAA D0 = $A = 1010 If.W used, check MSB of byte, then extend to word-length. MSB is 1 X = unchanged N = 1 (MSB is 1) Z = 0 (result is nonzero) V = always cleared C = always cleared.

EXT Example AC D0 = EXT.LD AC D0 = $0 = 0000 If.L used, check MSB of word, then extend to long-length. MSB is 0 X = unchanged N = 0 (MSB is 0) Z = 0 (result is nonzero) V = always cleared C = always cleared.

Important Note on EXT If.W is used, EXT checks MSB of byte and extends to word value. If.L is used EXT checks MSB of word and extends to long value.

Conclusion

Summary of ADD Instructions Instruction ADDA ADD ADDI ADDQ ADDX Purpose Add source to address register Add together two numbers Add immediate data to destination Similar to ADDI, but immediate data 1  8 Add together source, destination and X bit. Operation An + S = D D + S = D D + = D D + S + X = D

Summary of SUB Instructions Instruction SUBA SUB SUBI SUBQ SUBX Purpose Subtract source from address register Subtracts source from destination Subtract immediate data from destination Similar to SUBI, but immediate data 1  8 Subtract source and X bit from destination. Operation An - S = D D - S = D D - = D D - S - X = D

Summary of CMP Instructions Instruction CMPA CMP CMPI CMPM Purpose Compare address register to source. Only updates CCR. Similar to SUB, but doesn’t modify D. Only updates CCR. Compare D to immediate data. Only updates CCR. Compare between 2 memory locations. Only updates CCR. Operation An - S = “D” D - S = “D” D - = “D” M1 – M2 = “D”

Summary of MUL & DIV Instructions Instruction MULS MULU DIVU DIVS Purpose Multiplies two signed W data and store in D Multiples two unsigned W data and store in D Divides unsigned L data with W data and store in D Divides signed L data with D data and store in D Operation W x W = L L/W = W Q,W R

Summary of Instructions Instruction TAS TST NEG NEGX Purpose Compare D B with zero, update CCR, and set MSB Compare D to zero, and update CCR Negates D (2’s complement) Negates D, then subtract X Operation CMP #0,D MSB = 1 CMP #0,D D = 0 - S D = 0 – S - X EXTSign extends B  W, W  LN/A

The End Please read: Antonakos,