
Basic Data Operation

This is a basic data operation. It represents a fundamental action on a basic data type.
You may see other such operations in the Basic Data Operations category, or:


Integer Operations
Arithmetic |
Comparison
Boolean Operations
Bitwise |
Logical
String Operations
Concatenation |
Interpolation |
Comparison |
Matching
Memory Operations
Pointers & references |
Addresses




Task

Write a routine to perform a bitwise AND, OR, and XOR on two integers, a bitwise NOT on the first integer, a left shift, right shift, right arithmetic shift, left rotate, and right rotate.

All shifts and rotates should be done on the first integer with a shift/rotate amount of the second integer.

If any operation is not available in your language, note it.




; bitwise AND
anl a, b
 
; bitwise OR
orl a, b
 
; bitwise XOR
xrl a, b
 
; bitwise NOT
cpl a
 
; left shift
inc b
rrc a
loop:
rlc a
clr c
djnz b, loop
 
; right shift
inc b
rlc a
loop:
rrc a
clr c
djnz b, loop
 
; arithmetic right shift
push 20
inc b
rlc a
mov 20.0, c
loop:
rrc a
mov c, 20.0
djnz b, loop
pop 20
 
; left rotate
inc b
rr a
loop:
rl a
djnz b, loop
 
; right rotate
inc b
rl a
loop:
rr a
djnz b, loop