Simplified Mnemonics for PowerPC 555 Assembly Instruction Description Other Registers Altered Explanation of Operation add rD, rA, rB Add CR0 (LT, GT, EQ, SO) rD = rA + rB addi rD, rA, value Add immediate None rD = rA + value addis rD, rA, value Add immediate shifted left by 16 bits None rD = rA + (value and rA, rS, rB AND None rA = rS & rB andi. rA, rS, value AND Immediate CR0 (LT, GT, EQ, SO) rA = rS & value andis. rA, rS, value AND Immediate shifted left by 16 bits CR0 (LT, GT, EQ, SO) rA = rS & (value b target_addr Branch Always None Branch to target_addr ble target_addr Branch if less than or equal to (LT or EQ flags of CR0 set) None Branch to target_addr if LT = 1 or EQ = 1 blt target_addr Branch if less than (LT of CR0 set) None Branch to target_addr if LT = 1 beq target_addr Branch if equal (EQ of CR0 set) None Branch to target_addr if EQ = 1 bge target_addr Branch if greater than or equal to (GT or EQ of CR0 set) None Branch to target_addr if GT = 1 or EQ = 1 bgt target_addr Branch if greater than (GT of CR0 set) None Branch to target_addr if GT = 1 blr target_addr Branch to LR (Link Register) None Branch and link to target_addr bne target_addr Branch if not equal (EQ of CR0 not set) None Branch to target_addr if EQ = 0 cmpw rA, rB Compare Word CR0 (LT, GT, EQ, SO) rA - rB cmpwi rA, value Compare Word Immediate CR0 (LT, GT, EQ, SO) rA - value la rD, label Load Address based upon offset value None rD = label lbz rD, d(rA) Load Byte and Zero None rD = m[rA + d] lbzx rD, rA, rB Load Byte and Zero Indexed None rD = m[rA + rB] lhz rD, d(rA) Load Half Word and Zero None rD = M[rA +d]15..0 lhzx rD, rA, rB Load Half Word and Zero Indexed None rD = M[rA +rB]15..0 li rA, value Load immediate None rA = value lis rA, value Load immediate shifted left by 16 bits None rA = (value lwz rD, d(rA) Load Word and Zero None rD = M[rA + d] lwzx rD, rA, rB Load Word and Zero Indexed None rD = M[rA + rB]rD = rA + rB mr rA, rS Move Register None rA = rS not rA, rS Complement Register (invert) None rA = ~rS ori rA, rS, value OR Immediate None rA = rS | value oris rA, rS, value OR Immediate shifted left by 16 bits None rA = rS | (value slwi rA, rS, value Shift Left Immediate None rA = (rS srwi rA, rS, value Shift Right Immediate None rA = (rS >> value) stb rS, d(rA) Store Byte None m[rA + d] = rS7..0 stbx rS, rA, rB Store Byte Indexed None m[rA + rB] = rS7..0rA = rA + rB sth rS, d(rA) Store Half Word None M[rA + d]15..0 =rS15..0 sthx rS, rA, rB Store Half Word Indexed None M[rA +rB]15..0 =rS15..0 stw rS, d(rA) Store Word None M[rA + d] = rS stwx rS, rA, rB Store Word Indexed None M[rA + rB] = rS sub rD, rA, rB Subtract None rD = rA - rB subi rD, rA, value Subtract Immediate None rD = rA - value subis rD, rA, value Subtract Immediate shifted left by 16 bits None rD = rA - (value 11-04 05:25