# perform some bit operations # .data .globl main .text main: # set bit 1: use or li $t0, 0x60 # t0: bit string 0110 0000 li $t1, 0x2 # t1: mask 0000 0010 or $t2, $t0, $t1 # t2: result is 0x62: 0110 0010 - t0 with bit 1 set # set bits 2 and 3: use or li $t0, 0x60 # t0: bit string 0110 0000 ori $t2, $t0, 0xc # mask 0000 1100 # t2: result 0x6c: 0110 1100 - t0 with bits 2 & 3 set # reset bit 5: use and li $t0, 0x60 # t0: bit string 0110 0000 li $t1, 0xdf # t1: mask 1101 1111 and $t2, $t0, $t1 # t2: result is 0x40: 0100 0000 - t0 with bit 5 reset # reset bits 3 and 0: use and li $t0, 0x6f # t0: bit string 0110 1111 andi $t2, $t0, 0xf6 # mask 1111 0110 # t2: result 0x66: 0110 0110 - t0 with bits 3 & 0 reset # test bit 4: use and li $t0, 0xb3 # t0: bit string 1011 0011 li $t1, 0x10 # mask 0001 0000 and $t2, $t0, $t1 # t2: result is 0x10: 0001 0000 so bit 4 of t0 is set # bnez $t2, set4 # branch if bit 4 set # code to execute if bit 4 not set # b after4 #set4: # code to execute if bit 4 set #after4: # exit from program li $v0, 10 # terminate execution and syscall # return control to system