Difference between revisions of "PM Opc ADD16"

From SublabWiki
Jump to: navigation, search
(Examples)
m (Conditions)
Line 111: Line 111:
 
Overflow: Set when result overflow 16-bits signed range (< -32768 OR > 32767)
 
Overflow: Set when result overflow 16-bits signed range (< -32768 OR > 32767)
  
Sign: Set when 15th bit is 1
+
Sign: Set when 15th bit of the result is 1
  
 
=== Examples ===
 
=== Examples ===

Revision as of 20:03, 17 April 2009

ADD = Addition (16-Bits)

Hex Mnemonic Cycles
C0 nn nn ADD BA, #nnnn 12
C1 nn nn ADD HL, #nnnn 12
C2 nn nn ADD X, #nnnn 12
C3 nn nn ADD Y, #nnnn 12
CF 68 nn nn ADD SP, #nnnn 16
CF 00 ADD BA, BA 16
CF 01 ADD BA, HL 16
CF 02 ADD BA, X 16
CF 03 ADD BA, Y 16
CF 20 ADD HL, BA 16
CF 21 ADD HL, HL 16
CF 22 ADD HL, X 16
CF 23 ADD HL, Y 16
CF 40 ADD X, BA 16
CF 41 ADD X, HL 16
CF 42 ADD Y, BA 16
CF 43 ADD Y, HL 16
CF 44 ADD SP, BA 16
CF 45 ADD SP, HL 16

Execute

#nnnn    = Immediate unsigned 16-Bits
BA       = Register BA: (B shl 8) or A
HL       = Register HL: (H shl 8) or L
X        = Register X
Y        = Register Y
SP       = Register SP (Stack Pointer)
; ADD Ds, Sc
;
; Ds = Destination
; Sc = Source

Ds = Ds + Sc

Description

16-Bits Source adds to the 16-Bits Destination.

Conditions

Zero: Set when result is 0

Carry: Set when result is >= 65536

Overflow: Set when result overflow 16-bits signed range (< -32768 OR > 32767)

Sign: Set when 15th bit of the result is 1

Examples

; BA = 0x0EF0
ADD BA, $1337
; BA = 0x2227 (0x0EF0 + 0x1337 = 0x(0)2227)
; F = (Zero = 0):(Carry = 0):(Overflow=0):(Sign=0)
; HL = 0xBB7E
; BA = 0xCF12
ADD BA, HL
; HL = 0xBB7E
; BA = 0x8A90 (0xCF12 + 0xBB7E = 0x(1)8A90)
; F = (Zero = 0):(Carry = 1):(Overflow=0):(Sign=1)
; X = 0xBEEF
; BA = 0xDEAD
ADD BA, X
; X = 0xBEEF
; BA = 0x9D9C (0xDEAD + 0xBEEF = 0x(1)9D9C)
; F = (Zero = 0):(Carry = 1):(Overflow=1):(Sign=0)

« Back to Instruction set