Operations on Bits in Status Register
• There is a set of emulated instructions to set or clear
   the four lowest bits in the status register and these can
   be masked using the constant generator.
• Ex: clrc ; clear carry bit.
• clrn ; clear negative bit.
• clrz ; clear zero bit.
• setc ; set carry bit.
• setn ; set negative bit.
• setz ; set zero bit.
• dint ; disable general interrupts.
• eint ; enable general interrupts.
     Shift and Rotate Instructions
• There are three types of shifts
  (i) logical shift   (ii) arithmetic shift (iii)
  rotation. They are explained below.
                    Contd…
• Logical shift inserts zeroes for both right and left
  shifts.
• Arithmetic shift inserts zeroes for left shifts but
   the most significant bit, which carries the sign, is
   replicated for right shifts.
• Rotation does not introduce or lose any bits; bits
   that are moved out of one end of the register are
   passed around to the other.
• Ex : rla dst ; arithmetic shift left
• rra src ; arithmetic shift right.
• rlc dst ; rotate left through carry.
• rrc src ; rotate right through carry
              Flow of Control
• The most common elementary use of call is
   for a subroutine that begins at a particular
   label.
• Ex: br src ; branch (go to).
• call src ; call subroutine.
• ret ; return from subroutine.
• reti ; return from interrupt.
• nop ; no operation (consumes single cycle)
Jumps(Unconditional and Conditional)
• jmp fits in a single word, including the offset,
   but its range is limited to about 1KB from the
   current location.
• jmp label ; unconditional jump.
                  Contd…
• The conditional jumps are the “decision-
  making” instructions and test certain bits or
  combinations in the status register.
• Ex : jc label ; jump if carry set
• jnc label ; jump if carry not set ,
• jn label ; jump if negative ,
• jz label ; jump if zero
• jnz label ; jump if nonzero.
• jge label ; jump if greater or equal ,
• jl(t) label ; jump if less than