Difference between revisions of "PM Opc ADD16"

From SublabWiki
Jump to: navigation, search
(Add 16-bits)
 
m
Line 122: Line 122:
 
  ; HL = 0xBB7E
 
  ; HL = 0xBB7E
 
  ; BA = 0xCF12
 
  ; BA = 0xCF12
  MOV BA, HL
+
  ADD BA, HL
 
  ; HL = 0xBB7E
 
  ; HL = 0xBB7E
 
  ; BA = 0x8A90 (0xCF12 + 0xBB7E = 0x(1)8A90)
 
  ; BA = 0x8A90 (0xCF12 + 0xBB7E = 0x(1)8A90)
Line 129: Line 129:
 
  ; X = 0xBEEF
 
  ; X = 0xBEEF
 
  ; BA = 0xDEAD
 
  ; BA = 0xDEAD
  MOV BA, X
+
  ADD BA, X
 
  ; X = 0xBEEF
 
  ; X = 0xBEEF
 
  ; BA = 0x9D9C (0xDEAD + 0xBEEF = 0x(1)9D9C)
 
  ; BA = 0x9D9C (0xDEAD + 0xBEEF = 0x(1)9D9C)
 
  ; F = (Zero = 0):(Carry = 1):(Overflow=1):(Sign=0)
 
  ; F = (Zero = 0):(Carry = 1):(Overflow=1):(Sign=0)

Revision as of 23:30, 12 June 2008

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 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)