code: def move_asynchronously(library, session, source_space, source_offset, source_width,
                          destination_space, destination_offset,
                          destination_width, length):
      
      job_id = ViJobId()
      ret = library.viMoveAsync(session, source_space, source_offset, source_width,
                                destination_space, destination_offset,
                                destination_width, length, byref(job_id))
      return job_id, ret
docs: Moves a block of data asynchronously.
  
      Corresponds to viMoveAsync function of the VISA library.
  
      :param library: the visa library wrapped by ctypes.
      :param session: Unique logical identifier to a session.
      :param source_space: Specifies the address space of the source.
      :param source_offset: Offset of the starting address or register from which to read.
      :param source_width: Specifies the data width of the source.
      :param destination_space: Specifies the address space of the destination.
      :param destination_offset: Offset of the starting address or register to which to write.
      :param destination_width: Specifies the data width of the destination.
      :param length: Number of elements to transfer, where the data width of the elements to transfer
                     is identical to the source data width.
      :return: Job identifier of this asynchronous move operation, return value of the library call.
      :rtype: jobid, :class:`pyvisa.constants.StatusCode`