docs: def asm_app(parser, cmd, args):  # pragma: no cover
      """
      Assemble code from commandline or stdin.
  
      Please not that all semi-colons are replaced with carriage returns
      unless source is read from stdin.
      """
  
      parser.add_argument('source', help='the code to assemble, read from stdin if omitted', nargs='?')
      pwnypack.main.add_target_arguments(parser)
      parser.add_argument(
          '--syntax', '-s',
          choices=AsmSyntax.__members__.keys(),
          default=None,
      )
      parser.add_argument(
          '--address', '-o',
          type=lambda v: int(v, 0),
          default=0,
          help='the address where the code is expected to run',
      )
  
      args = parser.parse_args(args)
      target = pwnypack.main.target_from_arguments(args)
      if args.syntax is not None:
          syntax = AsmSyntax.__members__[args.syntax]
      else:
          syntax = None
      if args.source is None:
          args.source = sys.stdin.read()
      else:
          args.source = args.source.replace(';', '\n')
  
      return asm(
          args.source,
          syntax=syntax,
          target=target,
          addr=args.address,
      )