希望将旧的6502源代码十六进制行转换为.byte$00行

2024-09-28 03:14:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要你的帮助,就像标题上说的,我正在尝试转换一堆源代码,而我的很多旧源代码有很多行代码用于汇编程序(6502),我不能再在Windows上使用了。你知道吗

我可以做很多搜索和更换,以改变所有的操作码为例!字节转换成.byte或DCB转换成.byte,DCW转换成.word等等,但是当我有一行又一行的十六进制代码需要转换成.byte(例如)时,我就卡住了,比如说我有

HEX 0000000000000000 
HEX 0000000002000000 

我想以

.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$02,$00,$00,$00

现在,如果我只有2行代码,我可以手工完成,但是当我打开有100行代码的源代码时,这将是乏味的并且需要很长时间。你知道吗

我考虑过Python,我考虑过vb脚本,甚至批处理脚本,但大部分都涉及到将代码复制到一个文件中,用语言(弗兰肯斯坦的代码来自互联网)解析文件,得到结果并将其加载回,我想一定有办法(可能使用vbscript,就像我以前玩VBA和VB6一样,但是我太老了,太生疏了,现在想都不敢想)弹出两个框,左框,十六进制的原始副本,右框。字节输出?或者甚至是一个文本输入框,我复制并粘贴到,它会给出下面的结果,然后我可以复制并粘贴回我的源代码。你知道吗


Tags: 文件代码脚本标题字节源代码粘贴windows
2条回答

您可以将原始字符串的相关部分切成两个字符的块,并使用列表理解将其转换为所需的格式:

def convert(s):
  codes = s[4:]
  return ".byte {}".format(",".join("${}".format(codes[i*2:i*2+2]) for i in range(len(codes)//2)))

那么

print(convert("HEX 0123456789ABCDEF"))

将打印

.byte $01,$23,$45,$67,$89,$AB,$CD,$EF

然后,您应该能够在客户机应用程序(如tkinter)或简单的web应用程序(如flask)中使用此函数。你知道吗

注意,您还可以找到MOS6502的交叉编译器。你知道吗

您可以使用惯用的python方法对数字进行分组

cin = [
    "HEX 0000000000000000",
    "HEX 0000000002000000",
]

cout = [
 '.byte'+ ''.join(
  " ${}".format(''.join(d)) 
  for d in zip(*[iter(c[4:])]*2)
 )
 for c in cin
]

它生成列表

[
 '.byte $00 $00 $00 $00 $00 $00 $00 $00',
 '.byte $00 $00 $00 $00 $02 $00 $00 $00'
]

相关问题 更多 >

    热门问题