code: def declare_label(self, label, lineno, value=None, local=False, namespace=None):
          
          ex_label, namespace = Memory.id_name(label, namespace)
  
          is_address = value is None
          if value is None:
              value = self.org
  
          if ex_label in self.local_labels[-1].keys():
              self.local_labels[-1][ex_label].define(value, lineno)
              self.local_labels[-1][ex_label].is_address = is_address
          else:
              self.local_labels[-1][ex_label] = Label(ex_label, lineno, value, local, namespace, is_address)
  
          self.set_memory_slot()
  
          return self.local_labels[-1][ex_label]
docs: Sets a label with the given value or with the current address (org)
          if no value is passed.
  
          Exits with error if label already set,
          otherwise return the label object