Difference between revisions of "PM Opc EX"

From SublabWiki
Jump to: navigation, search
(EX instruction (PLEASE REVIEW!))
 
m
Line 23: Line 23:
 
  ; A  = Source
 
  ; A  = Source
 
   
 
   
  IF (A and 0x80 == 0) THEN
+
  IF (A AND 0x80) THEN ; Check for sign
 +
  B = 0xFF
 +
ELSE
 
   B = 0x00
 
   B = 0x00
ELSE
 
  B = 0xFF
 
 
  ENDIF
 
  ENDIF
  
Line 35: Line 35:
 
=== Conditions ===
 
=== Conditions ===
  
Zero: Set when result is 0
+
None
  
Sign: Set when bit 7 of the result is 1
+
=== Examples ===
  
Carry and Overflow remain unchanged
+
; A = 0x05 (5)
 +
EX BA, A
 +
; BA = 0x0005 (5)
  
=== Examples ===
+
; A = 0xF9 (-7)
 +
EX BA, A
 +
; BA = 0xFFF9 (-7)
  
  ; A = 0x05
+
  ; A = 0x00 (0)
 
  EX BA, A
 
  EX BA, A
  ; BA = 0x0005
+
  ; BA = 0x0000 (0)
; F = (Zero=0):(Sign=0)
 
  
  ; A = 0xF9
+
  ; A = 0x7F (127)
 
  EX BA, A
 
  EX BA, A
  ; BA = 0xFFF9
+
  ; BA = 0x007F (127)
; F = (Zero=0):(Sign=1)
 
  
  ; A = 0x00
+
  ; A = 0x80 (-128)
 
  EX BA, A
 
  EX BA, A
  ; BA = 0x0000
+
  ; BA = 0xFF80 (-128)
; F = (Zero=1):(Sign=0)
 
  
 
[[PM_InstructionList|'''« Back to Instruction set''']]
 
[[PM_InstructionList|'''« Back to Instruction set''']]

Revision as of 15:19, 20 April 2009

EX = Expand Register

Hex Mnemonic Cycles
CE A8 EX BA, A 12

Flags Affected: None

Execute

A       = Register A
BA      = Register BA: (B shl 8) or A
; EX BA, A
;
; BA = Destination
; A  = Source

IF (A AND 0x80) THEN  ; Check for sign
  B = 0xFF
ELSE
  B = 0x00
ENDIF

Description

EX expands register A into BA, turning a signed 8-bits value into 16-bits.

Conditions

None

Examples

; A = 0x05 (5)
EX BA, A
; BA = 0x0005 (5)
; A = 0xF9 (-7)
EX BA, A
; BA = 0xFFF9 (-7)
; A = 0x00 (0)
EX BA, A
; BA = 0x0000 (0)
; A = 0x7F (127)
EX BA, A
; BA = 0x007F (127)
; A = 0x80 (-128)
EX BA, A
; BA = 0xFF80 (-128)

« Back to Instruction set