目次

PIC逆アセンブル(Python)

 周波数カウンタに使われているPICのファームウエアを
 解析するために、Pyhotnのスクリプトで逆アセンブラ
 を作成してみました。

 周波数カウンタのHEXファイル内容は、以下。

:10000000A1298207DD348434E934E534B43475340D
:100010007D34C434FD34F534FC343D342934AD34FE
:10002000793478345D34BC3408340034FF34F83427
:1000300028342D34F4340D3439347534E93418341B
:10004000853439341934DC341D3421348207F734D3
:10005000FB34FE34FD34FF34820700349834963488
:10006000803400340F344234403400340134863458
:10007000A034003400342734103400340034033406
:10008000E834003400340034643400340034003484
:100090000A3400340034003401343C088207B62AA4
:1000A000C12AD72ADF2AE72AEF2AFA2AFC2AFE2ABF
:1000B000002B022BB62A3C0882070D2B0E2B152B8A
:1000C000232B302B352B382B382B382B382B0D2B63
:1000D000640083168100831200346400810183165A
:1000E0002730810064002F308100831200340030FB
:1000F00086008B016400810183162B3081008312FE
:10010000630000000800C9007F390120C91B0238C4
:10011000C9000034CA007F390120CA1B0238CA0056
:100120000034CB007F390120CB1B0238CB000034D8
:10013000CC007F390120CC1B0238CC000034CD002C
:100140007F390120CD1B0238CD0000340030C900BA
:10015000CA00CB00CC00CD0000348B1383169B006B
:100160008312000883169A001C158B1355309D00CE
:10017000AA309D009C149C18BB281C1183120034CB
:10018000AF008B1383169B001C141A088312800087
:100190002F080800C020013E840AC020013E840AC6
:1001A000C020013E840AC028B001B101B201B301F0
:1001B000AC018101000000004E082620AF0049304C
:1001C0004E078400000886002F088500CF0A4F1BC9
:1001D000CE0A4F134E08043C031CCE010108B300A5
:1001E0000130AC1F0301B31B0301B2070318B10AAE
:1001F000B11B18293308AC00AE080319AD03AE03D8
:1002000064000C30FF3E031D0229000000000000C6
:10021000000000002D082E04031DDC280108B30097
:100220000130AC1F0301B31B0301B2070318B10A6D
:1002300000340008840AB0000008840AB1000008F5
:10024000840AB2000008840AB300A7014030840089
:10025000640027082C20A800A70A27082C20A90042
:10026000A70A27082C20AA00A70A27082C20AB00E1
:10027000A70A80012B08B3022A0803184429B202F6
:1002800003190310B2034529B202290803184D29A6
:10029000B10203190310B1034E29B1022808031853
:1002A0005629B00203190310B0035729B002031CEA
:1002B0005B29800A3A292B08B3072A08031C652901
:1002C000B207B20A031903146629B2072908031CEE
:1002D0006E29B107B10A031903146F29B107280861
:1002E000031C7729B007B00A031903147829B00753
:1002F000840A20302702031D28294030840080080A
:10030000031D9229840A8008031D9229840A80080B
:10031000031D8F29840A8008031D8F29840A511820
:10032000C4179329C11700088320840A00088A2073
:10033000840A00089120840A00089820840A000892
:100340009F280030831685008312850100308316B4
:10035000860083128601CE01CF011330C80014300D
:10036000832014308A2014309120143098201430C7
:100370009F20273068206130AD00A830AE00D42027
:10038000D201D401383084000030CA2055308400B6
:100390002030C020A6208316003085000030860063
:1003A0008312640020308316810083120630AD0072
:1003B0008230AE0025306820D4203030AD00D430FB
:1003C000AE00D10AD20A3208C039031D1D2AB21A62
:1003D000192A321A152AB219112A32190E2AB218FC
:1003E0000E2A32180E2A3308363C031C0E2A330814
:1003F000053C031C062AFC296D20D20AD20AD20A27
:10040000C330AD005030AE000030212A6D20D20A3A
:100410006130AD00A830AE000130212A6D200230DD
:10042000212A203068200330212A2130682004301E
:10043000212A223068200530212A23306820063006
:10044000212AD000D420551C522A5418A620330843
:100450005302AF00AF1F2E2AAF09AF0A2F080A3C84
:100460000318372A5410D2013308D300522A5418E3
:10047000432A52083C3C03184C2A0D30D200541435
:100480003308D3004E2A52080E3C03184E2AD201DC
:100490003308D300D201522A541C522A77207720E5
:1004A0007720982AD00803195C2A0310B30DB20DE7
:1004B000B10DB00DD00B552A30083104320433048D
:1004C00003199B2AB01BA62A3008B4003108B500D6
:1004D0003208B6003308B7003B08B3073A08031CDC
:1004E000762AB207B20A03190314772AB207390829
:1004F000031C7F2AB107B10A03190314802AB1072C
:100500003808031C882AB007B00A03190314892A83
:10051000B007B01F972AB009B109B209B309B30FE8
:10052000972AB20F972AB10F972AB00F972A252141
:10053000851E3A2BCB291330832013308A201330A9
:1005400091200030982013309F20982A1330832068
:1005500013308A20133091200E30982013309F20C2
:10056000CB291330AD008830AE00D428183083205A
:1005700019308A20123091201A30982013309F2091
:10058000B12A551CCD2A153083201B308A200A3011
:100590009120223098200E30BF2A2130832017303E
:1005A0008A20153091201B3098202230BF2A0A3033
:1005B00083200D308A200D3091201330BD2A1B304E
:1005C000832019308A200B3091201330BD2A1C3033
:1005D00083200E308A20163091201730BD2A1A3021
:1005E00083200A308A200B309120203098200E3052
:1005F0009F20B12A0430042B0830042B0C30042B2C
:100600001030042B1430042BAF00343084002F083A
:10061000CA20343084001921B12AC0290130D506FE
:10062000553084002030AD20B12A343084000030B1
:10063000AD20840A0130AD20840A0230AD20840A46
:100640000330AD20C029B409B509B609B709B70F01
:100650002F2BB60F2F2BB50F2F2BB40F2F2B152BA6
:10066000B401B501B601B701152B0630BC00482B0B
:100670000230362BBC011530832016308A2017300B
:1006800091201030982013309F20B122851E452BD9
:10069000D10A4D20851A482B0A30BD00851A592BE6
:1006A000B122BD0B4E2BA620B1224D20851E532B0F
:1006B0005B283C08053C0319612B031C632BBC0A17
:1006C000482BBC01482B3C080A3C03196B2B031C2C
:1006D0006E2BBC0A482B0630BC00482BBC01482BB3
:1006E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1A
:1006F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0A
:10070000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF9
:10071000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE9
:10072000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD9
:10073000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC9
:10074000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB9
:10075000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA9
:10076000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F99
:10077000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F89
:10078000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F79
:10079000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F69
:1007A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F59
:1007B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F49
:1007C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F39
:1007D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F29
:1007E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F19
:1007F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F09
:10080000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF8
:10081000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE8
:10082000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD8
:10083000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC8
:10084000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB8
:10085000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA8
:10086000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F98
:10087000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F88
:10088000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F78
:10089000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F68
:1008A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F58
:1008B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F48
:1008C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F38
:1008D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F28
:1008E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F18
:1008F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F08
:10090000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF7
:10091000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE7
:10092000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD7
:10093000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC7
:10094000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB7
:10095000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA7
:10096000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F97
:10097000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F87
:10098000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F77
:10099000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F67
:1009A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F57
:1009B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F47
:1009C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F37
:1009D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F27
:1009E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F17
:1009F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F07
:100A0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF6
:100A1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE6
:100A2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD6
:100A3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC6
:100A4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB6
:100A5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA6
:100A6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F96
:100A7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F86
:100A8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F76
:100A9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F66
:100AA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F56
:100AB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F46
:100AC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F36
:100AD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F26
:100AE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F16
:100AF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F06
:100B0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF5
:100B1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE5
:100B2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD5
:100B3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC5
:100B4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB5
:100B5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA5
:100B6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F95
:100B7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F85
:100B8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F75
:100B9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F65
:100BA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F55
:100BB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F45
:100BC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F35
:100BD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F25
:100BE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F15
:100BF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F05
:100C0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF4
:100C1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE4
:100C2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD4
:100C3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC4
:100C4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB4
:100C5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA4
:100C6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F94
:100C7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F84
:100C8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F74
:100C9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F64
:100CA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F54
:100CB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F44
:100CC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F34
:100CD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F24
:100CE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F14
:100CF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F04
:100D0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF3
:100D1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE3
:100D2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD3
:100D3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC3
:100D4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB3
:100D5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA3
:100D6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F93
:100D7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F83
:100D8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F73
:100D9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F63
:100DA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F53
:100DB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F43
:100DC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F33
:100DD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F23
:100DE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F13
:100DF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F03
:100E0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF2
:100E1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE2
:100E2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD2
:100E3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC2
:100E4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB2
:100E5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA2
:100E6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F92
:100E7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F82
:100E8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F72
:100E9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F62
:100EA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F52
:100EB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F42
:100EC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F32
:100ED000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F22
:100EE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F12
:100EF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F02
:100F0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF1
:100F1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE1
:100F2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD1
:100F3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC1
:100F4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB1
:100F5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA1
:100F6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F91
:100F7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F81
:100F8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F71
:100F9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F61
:100FA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F51
:100FB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F41
:100FC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F31
:100FD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F21
:100FE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F11
:100FF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F01
:10400000AA2A020003000400FF3FFF3F6810063F9A
:10401000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB0
:10420000FC007F007700FE0000000600F10058006F
:1042100000003D0005001800000040000000000004
:1042200000004300A600D3000000A3004400E0000B
:10423000FF00FF00FF00FF00FF00FF00FF00FF0086
:104240000000FF00FF00FF00FF00FF00FF00FF0075
:10425000FF00FF00FF00FF00FF00FF00FF00FF0066
:10426000FF00FF00FF00FF00FF00FF00FF00FF0056
:10427000FF00FF00FF00FF00FF00FF00FF00FF0046
:10428000FF00FF00FF00FF00FF00FF00FF00FF0036
:10429000FF00FF00FF00FF00FF00FF00FF00FF0026
:1042A000FF00FF00FF00FF00FF00FF00FF00FF0016
:1042B000FF00FF00FF00FF00FF00FF00FF00FF0006
:1042C000FF00FF00FF00FF00FF00FF00FF00FF00F6
:1042D000FF00FF00FF00FF00FF00FF00FF00FF00E6
:1042E000FF00FF00FF00FF00FF00FF00FF00FF00D6
:1042F000FF00FF00FF00FF00FF00FF00FF00FF00C6
:00000001FF

 PICは14ビットのコードを使っているので、1命令を
 16ビットに拡張してHEXファイルにしています。

 16ビット(2バイト)がリトルエンディアンの書式で
 並んでいるので、上位下位が逆。16ビットで表示する
 ように変換しておきます。

 16ビット(16進数4けた)に変換できたなら、命令コードと
 ニモニックの対応をデータシートから抜出し。



 さらに、16進数値からニモニックを追加。
 アドレス、16ビットコード、ニモニックの順で並べます。

0000 29A1 GOTO
0001 0782 ADDWF
0002 34DD RETLW
  :
036C 00BC MOVWF
036D 2B48 GOTO
036E 01BC CLRF
036F 2B48 GOTO

 16ビットコードとニモニックから逆アセンブルを実行
 するスクリプトを作成。

# hexadecimal -> binary
def GetBinary(x):
  # default
  result = '0000'
  # judge
  if x == '0' :
    result = '0000'
  if x == '1' :
    result = '0001'
  if x == '2' :
    result = '0010'
  if x == '3' :
    result = '0011'
  if x == '4' :
    result = '0100'
  if x == '5' :
    result = '0101'
  if x == '6' :
    result = '0110'
  if x == '7' :
    result = '0111'
  if x == '8' :
    result = '1000'
  if x == '9' :
    result = '1001'
  if x == 'A' :
    result = '1010'
  if x == 'B' :
    result = '1011'
  if x == 'C' :
    result = '1100'
  if x == 'D' :
    result = '1101'
  if x == 'E' :
    result = '1110'
  if x == 'F' :
    result = '1111'

  return result

# binary -> hexadecimal
def GetHex(x):
  # default
  result = '0'
  # judge
  if x == '0000' :
    result = '0'
  if x == '0001' :
    result = '1'
  if x == '0010' :
    result = '2'
  if x == '0011' :
    result = '3'
  if x == '0100' :
    result = '4'
  if x == '0101' :
    result = '5'
  if x == '0110' :
    result = '6'
  if x == '0111' :
    result = '7'
  if x == '1000' :
    result = '8'
  if x == '1001' :
    result = '9'
  if x == '1010' :
    result = 'A'
  if x == '1011' :
    result = 'B'
  if x == '1100' :
    result = 'C'
  if x == '1101' :
    result = 'D'
  if x == '1110' :
    result = 'E'
  if x == '1111' :
    result = 'F'

  return result

# calculate hexadecimal
def PutHex(x):
  # copy
  xlist = x
  # 
  result = 0
  for i in xlist :
    result = result * 2
    if i == '1' :
      result = result + 1

  return str(result)

# calculate address
def GetAddress(x):
  # separate and get binary with 4 bits
  e0 = GetBinary(x[1])
  e1 = GetBinary(x[2])
  e2 = GetBinary(x[3])
  e3 = GetBinary(x[4])
  # concatenate
  tmp = e0+e1+e2+e3
  # add surfix
  tmpx = '00'+tmp[6:]
  # binary -> hexadecimal
  e0 = GetHex(tmpx[0:4])
  e1 = GetHex(tmpx[4:8])
  e2 = GetHex(tmpx[8:12])
  e3 = GetHex(tmpx[12:])
  # concatenate
  result = e0 + e1 + e2 + e3

  return result[0:3]

# instruction type I
def ShowOpcode(xee,x):
  # separate 
  etmp = xee.split('\t')
  # convert binary
  e = etmp[2]
  e3 = GetBinary(e[3])
  e4 = GetBinary(e[4])
  value = e3[1:] + e4
  # generate
  stmp = etmp[0]+' '+etmp[1]+' '+x+' '+PutHex(value)
  # which register
  if e3[0] == '1' :
    stmp = stmp + ',F'
  else:
    stmp = stmp + ',W'
  # show 
  print stmp

# instruction type II
def ShowOpcodeBit(xee,x):
  # separate 
  etmp = xee.split('\t')
  # convert binary
  ex = etmp[1]
  e1 = GetBinary(ex[1])
  e2 = GetBinary(ex[2])
  e3 = GetBinary(ex[3])
  # bit number
  bx = PutHex(e1[2:]+e2[0])
  # register address
  vx = PutHex(e2[1:]+e3)
  # generate
  stmp = etmp[0]+' '+etmp[1]+' '+x+' '+vx+','+bx
  # show
  print stmp

# instruction type III
def ShowOpcodeALU(xee,x):
  # separate 
  etmp = xee.split('\t')
  # convert binary
  ex = etmp[2]
  e3 = GetBinary(ex[3])
  e4 = GetBinary(ex[4])
  value = PutHex(e3+e4)
  # opcode
  stmp = etmp[0]+' '+etmp[1]+' '+x+' '+value+'\t('+e3+e4+')'
  # show
  print stmp

# open
fin = open('errx.txt','r')
# get
xline = fin.read()
# close
fin.close()

#print xline
# delete new line control code
glist = xline.split('\n')

for ee in glist :
  # branch
  if ee.find('GOTO') > -1 or ee.find('CALL') > -1 :
    # separate 
    etmp = ee.split('\t')
    e = etmp[2]
    xparam = '$'+GetAddress(e)
    # concatenate
    stmp = etmp[0]+' '+etmp[1]
    if ee.find('GOTO') > -1 :
      stmp = stmp + ' GOTO '+xparam
    else :
      stmp = stmp + ' CALL '+xparam
    # show
    print stmp
  # ADDWF
  if ee.find('ADDWF') > -1 :
    ShowOpcode(ee,'ADDWF')
  # ANDWF
  if ee.find('ANDWF') > -1 :
    ShowOpcode(ee,'ANDWF')
  # CLRF
  if ee.find('CLRF') > -1 :
    # separate 
    etmp = ee.split('\t')
    # convert binary
    e = etmp[2]
    e2 = GetBinary(e[3])
    e3 = GetBinary(e[4])
    value = e2[1:] + e3
    # generate
    stmp = etmp[0]+' '+etmp[1]+' '+'CLRF '+PutHex(value)
    # show
    print stmp
  # CLRW
  if ee.find('CLRW') > -1 and ee.find('CLRWDT') == -1 :
    # separate 
    etmp = ee.split('\t')
    # concatenate
    stmp = etmp[0]+' '+etmp[1]+etmp[3][0:5]
    # show
    print stmp
  # COMF
  if ee.find('COMF') > -1 :
    ShowOpcode(ee,'COMF')
  # DECF
  if ee.find('DECF') > -1 and ee.find('DECFSZ') == -1 :
    ShowOpcode(ee,'DECF')
  # DECFSZ
  if ee.find('DECFSZ') > -1 :
    ShowOpcode(ee,'DECFSZ')
  # INCF
  if ee.find('INCF') > -1 and ee.find('INCFSZ') == -1 :
    ShowOpcode(ee,'INCF')
  # INCFSZ
  if ee.find('INCFSZ') > -1 :
    ShowOpcode(ee,'INCFSZ')
  # IORW
  if ee.find('IORW') > -1 :
    ShowOpcode(ee,'IORW')
  # MOVF
  if ee.find('MOVF') > -1 :
    ShowOpcode(ee,'MOVF')
  # MOVWF
  if ee.find('MOVWF') > -1 :
    # separate 
    etmp = ee.split('\t')
    # convert binary
    e = etmp[2]
    e3 = GetBinary(e[3])
    e4 = GetBinary(e[4])
    value = e3[1:] + e4
    # concatenate
    stmp = etmp[0]+' '+etmp[1]+' '+'MOVWF'+' '+PutHex(value)
    # show
    print stmp
  # NOP
  if ee.find('NOP') > -1 :
    # separate 
    etmp = ee.split('\t')
    # concatenate
    stmp = etmp[0]+' '+etmp[1]+' '+'NOP'
    # show
    print stmp
  # RLF
  if ee.find('RLF') > -1 :
    ShowOpcode(ee,'RLF')
  # RRF
  if ee.find('RRF') > -1 :
    ShowOpcode(ee,'RRF')
  # SUBWF
  if ee.find('SUBWF') > -1 :
    ShowOpcode(ee,'SUBWF')
  # SWAPF
  if ee.find('SWAPF') > -1 :
    ShowOpcode(ee,'SWAPF')
  # XORWF
  if ee.find('XORWF') > -1 :
    ShowOpcode(ee,'XORWF')
  # BCF
  if ee.find('BCF') > -1 :
    ShowOpcodeBit(ee,'BCF')
  # BSF
  if ee.find('BSF') > -1 :
    ShowOpcodeBit(ee,'BSF')
  # BTFSC
  if ee.find('BTFSC') > -1 :
    ShowOpcodeBit(ee,'BTFSC')
  # BTFSS
  if ee.find('BTFSS') > -1 :
    ShowOpcodeBit(ee,'BTFSS')
  # ADDLW
  if ee.find('ADDLW') > -1 :
    # separate 
    etmp = ee.split('\t')
    # convert binary
    e = etmp[2]
    e2 = GetBinary(e[2])
    e3 = GetBinary(e[3])
    value = PutHex(e2 + e3)
    # generate
    stmp = etmp[0]+' '+etmp[1]+' '+'ADDLW'+' '+value
    # show 
    print stmp
  # ANDLW
  if ee.find('ANDLW') > -1 :
    ShowOpcodeALU(ee,'ANDLW')
  # CLRWDT
  if ee.find('CLRWDT') > -1 :
    # separate 
    etmp = ee.split('\t')
    # generate
    stmp = etmp[0]+' '+etmp[1]+' '+'CLRWDT'
    # show 
    print stmp
  # IORLW
  if ee.find('IORLW') > -1 :
    ShowOpcodeALU(ee,'IORLW')
  # MOVLW
  if ee.find('MOVLW') > -1 :
    # separate 
    etmp = ee.split('\t')
    # convert binary
    e = etmp[2]
    e2 = GetBinary(e[2])
    e3 = GetBinary(e[3])
    value = PutHex(e2+e3)
    # generate
    stmp = etmp[0]+' '+etmp[1]+' '+'MOVLW'+' '+value
    # show 
    print stmp
  # RETFIE
  if ee.find('RETFIE') > -1 :
    # separate 
    etmp = ee.split('\t')
    # generate
    stmp = etmp[0]+' '+etmp[1]+' '+'RETFIE'
    # show 
    print stmp
  # RETLW
  if ee.find('RETLW') > -1 :
    # separate 
    etmp = ee.split('\t')
    # convert binary
    e = etmp[2]
    e2 = GetBinary(e[3])
    e3 = GetBinary(e[4])
    value = PutHex(e2+e3)
    # generate
    stmp = etmp[0]+' '+etmp[1]+' '+'RETLW'+' '+value+'\t('+e2+e3+')'
    # show 
    print stmp
  # RETURN
  if ee.find('RETURN') > -1 :
    # separate 
    etmp = ee.split('\t')
    # generate
    stmp = etmp[0]+' '+etmp[1]+' '+'RETURN'
    # show 
    print stmp
  # SLEEP
  if ee.find('SLEEP') > -1 :
    # separate 
    etmp = ee.split('\t')
    # generate
    stmp = etmp[0]+' '+etmp[1]+' '+'SLEEP'
    # show 
    print stmp
  # SUBLW
  if ee.find('SUBLW') > -1 :
    ShowOpcodeALU(ee,'SUBLW')
  # XORLW
  if ee.find('XORLW') > -1 :
    ShowOpcodeALU(ee,'XORLW')

 スクリプトを実行して、逆アセンブルすると、次の
 ようになりました。

0000 29A1  GOTO $1A1
0001 0782  ADDWF 2,F
0002 34DD  RETLW 221	(11011101)
0003 3484  RETLW 132	(10000100)
0004 34E9  RETLW 233	(11101001)
0005 34E5  RETLW 229	(11100101)
0006 34B4  RETLW 180	(10110100)
0007 3475  RETLW 117	(01110101)
0008 347D  RETLW 125	(01111101)
0009 34C4  RETLW 196	(11000100)
000A 34FD  RETLW 253	(11111101)
000B 34F5  RETLW 245	(11110101)
000C 34FC  RETLW 252	(11111100)
000D 343D  RETLW 61	(00111101)
000E 3429  RETLW 41	(00101001)
000F 34AD  RETLW 173	(10101101)
0010 3479  RETLW 121	(01111001)
0011 3478  RETLW 120	(01111000)
0012 345D  RETLW 93	(01011101)
0013 34BC  RETLW 188	(10111100)
0014 3408  RETLW 8	(00001000)
0015 3400  RETLW 0	(00000000)
0016 34FF  RETLW 255	(11111111)
0017 34F8  RETLW 248	(11111000)
0018 3428  RETLW 40	(00101000)
0019 342D  RETLW 45	(00101101)
001A 34F4  RETLW 244	(11110100)
001B 340D  RETLW 13	(00001101)
001C 3439  RETLW 57	(00111001)
001D 3475  RETLW 117	(01110101)
001E 34E9  RETLW 233	(11101001)
001F 3418  RETLW 24	(00011000)
0020 3485  RETLW 133	(10000101)
0021 3439  RETLW 57	(00111001)
0022 3419  RETLW 25	(00011001)
0023 34DC  RETLW 220	(11011100)
0024 341D  RETLW 29	(00011101)
0025 3421  RETLW 33	(00100001)
0026 0782  ADDWF 2,F
0027 34F7  RETLW 247	(11110111)
0028 34FB  RETLW 251	(11111011)
0029 34FE  RETLW 254	(11111110)
002A 34FD  RETLW 253	(11111101)
002B 34FF  RETLW 255	(11111111)
002C 0782  ADDWF 2,F
002D 3400  RETLW 0	(00000000)
002E 3498  RETLW 152	(10011000)
002F 3496  RETLW 150	(10010110)
0030 3480  RETLW 128	(10000000)
0031 3400  RETLW 0	(00000000)
0032 340F  RETLW 15	(00001111)
0033 3442  RETLW 66	(01000010)
0034 3440  RETLW 64	(01000000)
0035 3400  RETLW 0	(00000000)
0036 3401  RETLW 1	(00000001)
0037 3486  RETLW 134	(10000110)
0038 34A0  RETLW 160	(10100000)
0039 3400  RETLW 0	(00000000)
003A 3400  RETLW 0	(00000000)
003B 3427  RETLW 39	(00100111)
003C 3410  RETLW 16	(00010000)
003D 3400  RETLW 0	(00000000)
003E 3400  RETLW 0	(00000000)
003F 3403  RETLW 3	(00000011)
0040 34E8  RETLW 232	(11101000)
0041 3400  RETLW 0	(00000000)
0042 3400  RETLW 0	(00000000)
0043 3400  RETLW 0	(00000000)
0044 3464  RETLW 100	(01100100)
0045 3400  RETLW 0	(00000000)
0046 3400  RETLW 0	(00000000)
0047 3400  RETLW 0	(00000000)
0048 340A  RETLW 10	(00001010)
0049 3400  RETLW 0	(00000000)
004A 3400  RETLW 0	(00000000)
004B 3400  RETLW 0	(00000000)
004C 3401  RETLW 1	(00000001)
004D 083C  MOVF 60,W
004E 0782  ADDWF 2,F
004F 2AB6  GOTO $2B6
0050 2AC1  GOTO $2C1
0051 2AD7  GOTO $2D7
0052 2ADF  GOTO $2DF
0053 2AE7  GOTO $2E7
0054 2AEF  GOTO $2EF
0055 2AFA  GOTO $2FA
0056 2AFC  GOTO $2FC
0057 2AFE  GOTO $2FE
0058 2B00  GOTO $300
0059 2B02  GOTO $302
005A 2AB6  GOTO $2B6
005B 083C  MOVF 60,W
005C 0782  ADDWF 2,F
005D 2B0D  GOTO $30D
005E 2B0E  GOTO $30E
005F 2B15  GOTO $315
0060 2B23  GOTO $323
0061 2B30  GOTO $330
0062 2B35  GOTO $335
0063 2B38  GOTO $338
0064 2B38  GOTO $338
0065 2B38  GOTO $338
0066 2B38  GOTO $338
0067 2B0D  GOTO $30D
0068 0064  CLRWDT
0069 1683  BSF 3,5
006A 0081  MOVWF 1
006B 1283  BCF 3,5
006C 3400  RETLW 0	(00000000)
006D 0064  CLRWDT
006E 0181  CLRF 1
006F 1683  BSF 3,5
0070 3027  MOVLW 2
0071 0081  MOVWF 1
0072 0064  CLRWDT
0073 302F  MOVLW 2
0074 0081  MOVWF 1
0075 1283  BCF 3,5
0076 3400  RETLW 0	(00000000)
0077 3000  MOVLW 0
0078 0086  MOVWF 6
0079 018B  CLRF 11
007A 0064  CLRWDT
007B 0181  CLRF 1
007C 1683  BSF 3,5
007D 302B  MOVLW 2
007E 0081  MOVWF 1
007F 1283  BCF 3,5
0080 0063  SLEEP
0081 0000  NOP
0082 0008  RETURN
0083 00C9  MOVWF 73
0084 397F  ANDLW 127	(01111111)
0085 2001  CALL $001
0086 1BC9  BTFSC 73,7
0087 3802  IORW 2,W
0088 00C9  MOVWF 73
0089 3400  RETLW 0	(00000000)
008A 00CA  MOVWF 74
008B 397F  ANDLW 127	(01111111)
008C 2001  CALL $001
008D 1BCA  BTFSC 74,7
008E 3802  IORW 2,W
008F 00CA  MOVWF 74
0090 3400  RETLW 0	(00000000)
0091 00CB  MOVWF 75
0092 397F  ANDLW 127	(01111111)
0093 2001  CALL $001
0094 1BCB  BTFSC 75,7
0095 3802  IORW 2,W
0096 00CB  MOVWF 75
0097 3400  RETLW 0	(00000000)
0098 00CC  MOVWF 76
0099 397F  ANDLW 127	(01111111)
009A 2001  CALL $001
009B 1BCC  BTFSC 76,7
009C 3802  IORW 2,W
009D 00CC  MOVWF 76
009E 3400  RETLW 0	(00000000)
009F 00CD  MOVWF 77
00A0 397F  ANDLW 127	(01111111)
00A1 2001  CALL $001
00A2 1BCD  BTFSC 77,7
00A3 3802  IORW 2,W
00A4 00CD  MOVWF 77
00A5 3400  RETLW 0	(00000000)
00A6 3000  MOVLW 0
00A7 00C9  MOVWF 73
00A8 00CA  MOVWF 74
00A9 00CB  MOVWF 75
00AA 00CC  MOVWF 76
00AB 00CD  MOVWF 77
00AC 3400  RETLW 0	(00000000)
00AD 138B  BCF 11,7
00AE 1683  BSF 3,5
00AF 009B  MOVWF 27
00B0 1283  BCF 3,5
00B1 0800  MOVF 0,W
00B2 1683  BSF 3,5
00B3 009A  MOVWF 26
00B4 151C  BSF 28,2
00B5 138B  BCF 11,7
00B6 3055  MOVLW 5
00B7 009D  MOVWF 29
00B8 30AA  MOVLW 10
00B9 009D  MOVWF 29
00BA 149C  BSF 28,1
00BB 189C  BTFSC 28,1
00BC 28BB  GOTO $0BB
00BD 111C  BCF 28,2
00BE 1283  BCF 3,5
00BF 3400  RETLW 0	(00000000)
00C0 00AF  MOVWF 47
00C1 138B  BCF 11,7
00C2 1683  BSF 3,5
00C3 009B  MOVWF 27
00C4 141C  BSF 28,0
00C5 081A  MOVF 26,W
00C6 1283  BCF 3,5
00C7 0080  MOVWF 0
00C8 082F  MOVF 47,W
00C9 0008  RETURN
00CA 20C0  CALL $0C0
00CB 3E01  ADDLW 1
00CC 0A84  INCF 4,F
00CD 20C0  CALL $0C0
00CE 3E01  ADDLW 1
00CF 0A84  INCF 4,F
00D0 20C0  CALL $0C0
00D1 3E01  ADDLW 1
00D2 0A84  INCF 4,F
00D3 28C0  GOTO $0C0
00D4 01B0  CLRF 48
00D5 01B1  CLRF 49
00D6 01B2  CLRF 50
00D7 01B3  CLRF 51
00D8 01AC  CLRF 44
00D9 0181  CLRF 1
00DA 0000  NOP
00DB 0000  NOP
00DC 084E  MOVF 78,W
00DD 2026  CALL $026
00DE 00AF  MOVWF 47
00DF 3049  MOVLW 4
00E0 074E  ADDWF 78,W
00E1 0084  MOVWF 4
00E2 0800  MOVF 0,W
00E3 0086  MOVWF 6
00E4 082F  MOVF 47,W
00E5 0085  MOVWF 5
00E6 0ACF  INCF 79,F
00E7 1B4F  BTFSC 79,6
00E8 0ACE  INCF 78,F
00E9 134F  BCF 79,6
00EA 084E  MOVF 78,W
00EB 3C04  SUBLW 4	(00000100)
00EC 1C03  BTFSS 3,0
00ED 01CE  CLRF 78
00EE 0801  MOVF 1,W
00EF 00B3  MOVWF 51
00F0 3001  MOVLW 0
00F1 1FAC  BTFSS 44,7
00F2 0103  CLRW
00F3 1BB3  BTFSC 51,7
00F4 0103  CLRW
00F5 07B2  ADDWF 50,F
00F6 1803  BTFSC 3,0
00F7 0AB1  INCF 49,F
00F8 1BB1  BTFSC 49,7
00F9 2918  GOTO $118
00FA 0833  MOVF 51,W
00FB 00AC  MOVWF 44
00FC 08AE  MOVF 46,F
00FD 1903  BTFSC 3,2
00FE 03AD  DECF 45,F
00FF 03AE  DECF 46,F
0100 0064  CLRWDT
0101 300C  MOVLW 0
0102 3EFF  ADDLW 255
0103 1D03  BTFSS 3,2
0104 2902  GOTO $102
0105 0000  NOP
0106 0000  NOP
0107 0000  NOP
0108 0000  NOP
0109 0000  NOP
010A 082D  MOVF 45,W
010B 042E  IORW 46,W
010C 1D03  BTFSS 3,2
010D 28DC  GOTO $0DC
010E 0801  MOVF 1,W
010F 00B3  MOVWF 51
0110 3001  MOVLW 0
0111 1FAC  BTFSS 44,7
0112 0103  CLRW
0113 1BB3  BTFSC 51,7
0114 0103  CLRW
0115 07B2  ADDWF 50,F
0116 1803  BTFSC 3,0
0117 0AB1  INCF 49,F
0118 3400  RETLW 0	(00000000)
0119 0800  MOVF 0,W
011A 0A84  INCF 4,F
011B 00B0  MOVWF 48
011C 0800  MOVF 0,W
011D 0A84  INCF 4,F
011E 00B1  MOVWF 49
011F 0800  MOVF 0,W
0120 0A84  INCF 4,F
0121 00B2  MOVWF 50
0122 0800  MOVF 0,W
0123 0A84  INCF 4,F
0124 00B3  MOVWF 51
0125 01A7  CLRF 39
0126 3040  MOVLW 4
0127 0084  MOVWF 4
0128 0064  CLRWDT
0129 0827  MOVF 39,W
012A 202C  CALL $02C
012B 00A8  MOVWF 40
012C 0AA7  INCF 39,F
012D 0827  MOVF 39,W
012E 202C  CALL $02C
012F 00A9  MOVWF 41
0130 0AA7  INCF 39,F
0131 0827  MOVF 39,W
0132 202C  CALL $02C
0133 00AA  MOVWF 42
0134 0AA7  INCF 39,F
0135 0827  MOVF 39,W
0136 202C  CALL $02C
0137 00AB  MOVWF 43
0138 0AA7  INCF 39,F
0139 0180  CLRF 0
013A 082B  MOVF 43,W
013C 082A  MOVF 42,W
013D 1803  BTFSC 3,0
013E 2944  GOTO $144
0140 1903  BTFSC 3,2
0141 1003  BCF 3,0
0142 03B2  DECF 50,F
0143 2945  GOTO $145
0145 0829  MOVF 41,W
0146 1803  BTFSC 3,0
0147 294D  GOTO $14D
0149 1903  BTFSC 3,2
014A 1003  BCF 3,0
014B 03B1  DECF 49,F
014C 294E  GOTO $14E
014E 0828  MOVF 40,W
014F 1803  BTFSC 3,0
0150 2956  GOTO $156
0152 1903  BTFSC 3,2
0153 1003  BCF 3,0
0154 03B0  DECF 48,F
0155 2957  GOTO $157
0157 1C03  BTFSS 3,0
0158 295B  GOTO $15B
0159 0A80  INCF 0,F
015A 293A  GOTO $13A
015B 082B  MOVF 43,W
015C 07B3  ADDWF 51,F
015D 082A  MOVF 42,W
015E 1C03  BTFSS 3,0
015F 2965  GOTO $165
0160 07B2  ADDWF 50,F
0161 0AB2  INCF 50,F
0162 1903  BTFSC 3,2
0163 1403  BSF 3,0
0164 2966  GOTO $166
0165 07B2  ADDWF 50,F
0166 0829  MOVF 41,W
0167 1C03  BTFSS 3,0
0168 296E  GOTO $16E
0169 07B1  ADDWF 49,F
016A 0AB1  INCF 49,F
016B 1903  BTFSC 3,2
016C 1403  BSF 3,0
016D 296F  GOTO $16F
016E 07B1  ADDWF 49,F
016F 0828  MOVF 40,W
0170 1C03  BTFSS 3,0
0171 2977  GOTO $177
0172 07B0  ADDWF 48,F
0173 0AB0  INCF 48,F
0174 1903  BTFSC 3,2
0175 1403  BSF 3,0
0176 2978  GOTO $178
0177 07B0  ADDWF 48,F
0178 0A84  INCF 4,F
0179 3020  MOVLW 2
017B 1D03  BTFSS 3,2
017C 2928  GOTO $128
017D 3040  MOVLW 4
017E 0084  MOVWF 4
017F 0880  MOVF 0,F
0180 1D03  BTFSS 3,2
0181 2992  GOTO $192
0182 0A84  INCF 4,F
0183 0880  MOVF 0,F
0184 1D03  BTFSS 3,2
0185 2992  GOTO $192
0186 0A84  INCF 4,F
0187 0880  MOVF 0,F
0188 1D03  BTFSS 3,2
0189 298F  GOTO $18F
018A 0A84  INCF 4,F
018B 0880  MOVF 0,F
018C 1D03  BTFSS 3,2
018D 298F  GOTO $18F
018E 0A84  INCF 4,F
018F 1851  BTFSC 81,0
0190 17C4  BSF 68,7
0191 2993  GOTO $193
0192 17C1  BSF 65,7
0193 0800  MOVF 0,W
0194 2083  CALL $083
0195 0A84  INCF 4,F
0196 0800  MOVF 0,W
0197 208A  CALL $08A
0198 0A84  INCF 4,F
0199 0800  MOVF 0,W
019A 2091  CALL $091
019B 0A84  INCF 4,F
019C 0800  MOVF 0,W
019D 2098  CALL $098
019E 0A84  INCF 4,F
019F 0800  MOVF 0,W
01A0 289F  GOTO $09F
01A1 3000  MOVLW 0
01A2 1683  BSF 3,5
01A3 0085  MOVWF 5
01A4 1283  BCF 3,5
01A5 0185  CLRF 5
01A6 3000  MOVLW 0
01A7 1683  BSF 3,5
01A8 0086  MOVWF 6
01A9 1283  BCF 3,5
01AA 0186  CLRF 6
01AB 01CE  CLRF 78
01AC 01CF  CLRF 79
01AD 3013  MOVLW 1
01AE 00C8  MOVWF 72
01AF 3014  MOVLW 1
01B0 2083  CALL $083
01B1 3014  MOVLW 1
01B2 208A  CALL $08A
01B3 3014  MOVLW 1
01B4 2091  CALL $091
01B5 3014  MOVLW 1
01B6 2098  CALL $098
01B7 3014  MOVLW 1
01B8 209F  CALL $09F
01B9 3027  MOVLW 2
01BA 2068  CALL $068
01BB 3061  MOVLW 6
01BC 00AD  MOVWF 45
01BD 30A8  MOVLW 10
01BE 00AE  MOVWF 46
01BF 20D4  CALL $0D4
01C0 01D2  CLRF 82
01C1 01D4  CLRF 84
01C2 3038  MOVLW 3
01C3 0084  MOVWF 4
01C4 3000  MOVLW 0
01C5 20CA  CALL $0CA
01C6 3055  MOVLW 5
01C7 0084  MOVWF 4
01C8 3020  MOVLW 2
01C9 20C0  CALL $0C0
01CA 20A6  CALL $0A6
01CB 1683  BSF 3,5
01CC 3000  MOVLW 0
01CD 0085  MOVWF 5
01CE 3000  MOVLW 0
01CF 0086  MOVWF 6
01D0 1283  BCF 3,5
01D1 0064  CLRWDT
01D2 3020  MOVLW 2
01D3 1683  BSF 3,5
01D4 0081  MOVWF 1
01D5 1283  BCF 3,5
01D6 3006  MOVLW 0
01D7 00AD  MOVWF 45
01D8 3082  MOVLW 8
01D9 00AE  MOVWF 46
01DA 3025  MOVLW 2
01DB 2068  CALL $068
01DC 20D4  CALL $0D4
01DD 3030  MOVLW 3
01DE 00AD  MOVWF 45
01DF 30D4  MOVLW 13
01E0 00AE  MOVWF 46
01E1 0AD1  INCF 81,F
01E2 0AD2  INCF 82,F
01E3 0832  MOVF 50,W
01E4 39C0  ANDLW 192	(11000000)
01E5 1D03  BTFSS 3,2
01E6 2A1D  GOTO $21D
01E7 1AB2  BTFSC 50,5
01E8 2A19  GOTO $219
01E9 1A32  BTFSC 50,4
01EA 2A15  GOTO $215
01EB 19B2  BTFSC 50,3
01EC 2A11  GOTO $211
01ED 1932  BTFSC 50,2
01EE 2A0E  GOTO $20E
01EF 18B2  BTFSC 50,1
01F0 2A0E  GOTO $20E
01F1 1832  BTFSC 50,0
01F2 2A0E  GOTO $20E
01F3 0833  MOVF 51,W
01F4 3C36  SUBLW 54	(00110110)
01F5 1C03  BTFSS 3,0
01F6 2A0E  GOTO $20E
01F7 0833  MOVF 51,W
01F8 3C05  SUBLW 5	(00000101)
01F9 1C03  BTFSS 3,0
01FA 2A06  GOTO $206
01FB 29FC  GOTO $1FC
01FC 206D  CALL $06D
01FD 0AD2  INCF 82,F
01FE 0AD2  INCF 82,F
01FF 0AD2  INCF 82,F
0200 30C3  MOVLW 12
0201 00AD  MOVWF 45
0202 3050  MOVLW 5
0203 00AE  MOVWF 46
0204 3000  MOVLW 0
0205 2A21  GOTO $221
0206 206D  CALL $06D
0207 0AD2  INCF 82,F
0208 3061  MOVLW 6
0209 00AD  MOVWF 45
020A 30A8  MOVLW 10
020B 00AE  MOVWF 46
020C 3001  MOVLW 0
020D 2A21  GOTO $221
020E 206D  CALL $06D
020F 3002  MOVLW 0
0210 2A21  GOTO $221
0211 3020  MOVLW 2
0212 2068  CALL $068
0213 3003  MOVLW 0
0214 2A21  GOTO $221
0215 3021  MOVLW 2
0216 2068  CALL $068
0217 3004  MOVLW 0
0218 2A21  GOTO $221
0219 3022  MOVLW 2
021A 2068  CALL $068
021B 3005  MOVLW 0
021C 2A21  GOTO $221
021D 3023  MOVLW 2
021E 2068  CALL $068
021F 3006  MOVLW 0
0220 2A21  GOTO $221
0221 00D0  MOVWF 80
0222 20D4  CALL $0D4
0223 1C55  BTFSS 85,0
0224 2A52  GOTO $252
0225 1854  BTFSC 84,0
0226 20A6  CALL $0A6
0227 0833  MOVF 51,W
0229 00AF  MOVWF 47
022A 1FAF  BTFSS 47,7
022B 2A2E  GOTO $22E
022C 09AF  COMF 47,F
022D 0AAF  INCF 47,F
022E 082F  MOVF 47,W
022F 3C0A  SUBLW 10	(00001010)
0230 1803  BTFSC 3,0
0231 2A37  GOTO $237
0232 1054  BCF 84,0
0233 01D2  CLRF 82
0234 0833  MOVF 51,W
0235 00D3  MOVWF 83
0236 2A52  GOTO $252
0237 1854  BTFSC 84,0
0238 2A43  GOTO $243
0239 0852  MOVF 82,W
023A 3C3C  SUBLW 60	(00111100)
023B 1803  BTFSC 3,0
023C 2A4C  GOTO $24C
023D 300D  MOVLW 0
023E 00D2  MOVWF 82
023F 1454  BSF 84,0
0240 0833  MOVF 51,W
0241 00D3  MOVWF 83
0242 2A4E  GOTO $24E
0243 0852  MOVF 82,W
0244 3C0E  SUBLW 14	(00001110)
0245 1803  BTFSC 3,0
0246 2A4E  GOTO $24E
0247 01D2  CLRF 82
0248 0833  MOVF 51,W
0249 00D3  MOVWF 83
024A 01D2  CLRF 82
024B 2A52  GOTO $252
024C 1C54  BTFSS 84,0
024D 2A52  GOTO $252
024E 2077  CALL $077
024F 2077  CALL $077
0250 2077  CALL $077
0251 2A98  GOTO $298
0252 08D0  MOVF 80,F
0253 1903  BTFSC 3,2
0254 2A5C  GOTO $25C
0255 1003  BCF 3,0
0256 0DB3  RLF 51,F
0257 0DB2  RLF 50,F
0258 0DB1  RLF 49,F
0259 0DB0  RLF 48,F
025A 0BD0  DECFSZ 80,F
025B 2A55  GOTO $255
025C 0830  MOVF 48,W
025D 0431  IORW 49,W
025E 0432  IORW 50,W
025F 0433  IORW 51,W
0260 1903  BTFSC 3,2
0261 2A9B  GOTO $29B
0262 1BB0  BTFSC 48,7
0263 2AA6  GOTO $2A6
0264 0830  MOVF 48,W
0265 00B4  MOVWF 52
0266 0831  MOVF 49,W
0267 00B5  MOVWF 53
0268 0832  MOVF 50,W
0269 00B6  MOVWF 54
026A 0833  MOVF 51,W
026B 00B7  MOVWF 55
026C 083B  MOVF 59,W
026D 07B3  ADDWF 51,F
026E 083A  MOVF 58,W
026F 1C03  BTFSS 3,0
0270 2A76  GOTO $276
0271 07B2  ADDWF 50,F
0272 0AB2  INCF 50,F
0273 1903  BTFSC 3,2
0274 1403  BSF 3,0
0275 2A77  GOTO $277
0276 07B2  ADDWF 50,F
0277 0839  MOVF 57,W
0278 1C03  BTFSS 3,0
0279 2A7F  GOTO $27F
027A 07B1  ADDWF 49,F
027B 0AB1  INCF 49,F
027C 1903  BTFSC 3,2
027D 1403  BSF 3,0
027E 2A80  GOTO $280
027F 07B1  ADDWF 49,F
0280 0838  MOVF 56,W
0281 1C03  BTFSS 3,0
0282 2A88  GOTO $288
0283 07B0  ADDWF 48,F
0284 0AB0  INCF 48,F
0285 1903  BTFSC 3,2
0286 1403  BSF 3,0
0287 2A89  GOTO $289
0288 07B0  ADDWF 48,F
0289 1FB0  BTFSS 48,7
028A 2A97  GOTO $297
028B 09B0  COMF 48,F
028C 09B1  COMF 49,F
028D 09B2  COMF 50,F
028E 09B3  COMF 51,F
028F 0FB3  INCFSZ 51,F
0290 2A97  GOTO $297
0291 0FB2  INCFSZ 50,F
0292 2A97  GOTO $297
0293 0FB1  INCFSZ 49,F
0294 2A97  GOTO $297
0295 0FB0  INCFSZ 48,F
0296 2A97  GOTO $297
0297 2125  CALL $125
0298 1E85  BTFSS 5,5
0299 2B3A  GOTO $33A
029A 29CB  GOTO $1CB
029B 3013  MOVLW 1
029C 2083  CALL $083
029D 3013  MOVLW 1
029E 208A  CALL $08A
029F 3013  MOVLW 1
02A0 2091  CALL $091
02A1 3000  MOVLW 0
02A2 2098  CALL $098
02A3 3013  MOVLW 1
02A4 209F  CALL $09F
02A5 2A98  GOTO $298
02A6 3013  MOVLW 1
02A7 2083  CALL $083
02A8 3013  MOVLW 1
02A9 208A  CALL $08A
02AA 3013  MOVLW 1
02AB 2091  CALL $091
02AC 300E  MOVLW 0
02AD 2098  CALL $098
02AE 3013  MOVLW 1
02AF 209F  CALL $09F
02B0 29CB  GOTO $1CB
02B1 3013  MOVLW 1
02B2 00AD  MOVWF 45
02B3 3088  MOVLW 8
02B4 00AE  MOVWF 46
02B5 28D4  GOTO $0D4
02B6 3018  MOVLW 1
02B7 2083  CALL $083
02B8 3019  MOVLW 1
02B9 208A  CALL $08A
02BA 3012  MOVLW 1
02BB 2091  CALL $091
02BC 301A  MOVLW 1
02BD 2098  CALL $098
02BE 3013  MOVLW 1
02BF 209F  CALL $09F
02C0 2AB1  GOTO $2B1
02C1 1C55  BTFSS 85,0
02C2 2ACD  GOTO $2CD
02C3 3015  MOVLW 1
02C4 2083  CALL $083
02C5 301B  MOVLW 1
02C6 208A  CALL $08A
02C7 300A  MOVLW 0
02C8 2091  CALL $091
02C9 3022  MOVLW 2
02CA 2098  CALL $098
02CB 300E  MOVLW 0
02CC 2ABF  GOTO $2BF
02CD 3021  MOVLW 2
02CE 2083  CALL $083
02CF 3017  MOVLW 1
02D0 208A  CALL $08A
02D1 3015  MOVLW 1
02D2 2091  CALL $091
02D3 301B  MOVLW 1
02D4 2098  CALL $098
02D5 3022  MOVLW 2
02D6 2ABF  GOTO $2BF
02D7 300A  MOVLW 0
02D8 2083  CALL $083
02D9 300D  MOVLW 0
02DA 208A  CALL $08A
02DB 300D  MOVLW 0
02DC 2091  CALL $091
02DD 3013  MOVLW 1
02DE 2ABD  GOTO $2BD
02DF 301B  MOVLW 1
02E0 2083  CALL $083
02E1 3019  MOVLW 1
02E2 208A  CALL $08A
02E3 300B  MOVLW 0
02E4 2091  CALL $091
02E5 3013  MOVLW 1
02E6 2ABD  GOTO $2BD
02E7 301C  MOVLW 1
02E8 2083  CALL $083
02E9 300E  MOVLW 0
02EA 208A  CALL $08A
02EB 3016  MOVLW 1
02EC 2091  CALL $091
02ED 3017  MOVLW 1
02EE 2ABD  GOTO $2BD
02EF 301A  MOVLW 1
02F0 2083  CALL $083
02F1 300A  MOVLW 0
02F2 208A  CALL $08A
02F3 300B  MOVLW 0
02F4 2091  CALL $091
02F5 3020  MOVLW 2
02F6 2098  CALL $098
02F7 300E  MOVLW 0
02F8 209F  CALL $09F
02F9 2AB1  GOTO $2B1
02FA 3004  MOVLW 0
02FB 2B04  GOTO $304
02FC 3008  MOVLW 0
02FD 2B04  GOTO $304
02FE 300C  MOVLW 0
02FF 2B04  GOTO $304
0300 3010  MOVLW 1
0301 2B04  GOTO $304
0302 3014  MOVLW 1
0303 2B04  GOTO $304
0304 00AF  MOVWF 47
0305 3034  MOVLW 3
0306 0084  MOVWF 4
0307 082F  MOVF 47,W
0308 20CA  CALL $0CA
0309 3034  MOVLW 3
030A 0084  MOVWF 4
030B 2119  CALL $119
030C 2AB1  GOTO $2B1
030D 29C0  GOTO $1C0
030E 3001  MOVLW 0
030F 06D5  XORWF 85,F
0310 3055  MOVLW 5
0311 0084  MOVWF 4
0312 3020  MOVLW 2
0313 20AD  CALL $0AD
0314 2AB1  GOTO $2B1
0315 3034  MOVLW 3
0316 0084  MOVWF 4
0317 3000  MOVLW 0
0318 20AD  CALL $0AD
0319 0A84  INCF 4,F
031A 3001  MOVLW 0
031B 20AD  CALL $0AD
031C 0A84  INCF 4,F
031D 3002  MOVLW 0
031E 20AD  CALL $0AD
031F 0A84  INCF 4,F
0320 3003  MOVLW 0
0321 20AD  CALL $0AD
0322 29C0  GOTO $1C0
0323 09B4  COMF 52,F
0324 09B5  COMF 53,F
0325 09B6  COMF 54,F
0326 09B7  COMF 55,F
0327 0FB7  INCFSZ 55,F
0328 2B2F  GOTO $32F
0329 0FB6  INCFSZ 54,F
032A 2B2F  GOTO $32F
032B 0FB5  INCFSZ 53,F
032C 2B2F  GOTO $32F
032D 0FB4  INCFSZ 52,F
032E 2B2F  GOTO $32F
032F 2B15  GOTO $315
0330 01B4  CLRF 52
0331 01B5  CLRF 53
0332 01B6  CLRF 54
0333 01B7  CLRF 55
0334 2B15  GOTO $315
0335 3006  MOVLW 0
0336 00BC  MOVWF 60
0337 2B48  GOTO $348
0338 3002  MOVLW 0
0339 2B36  GOTO $336
033A 01BC  CLRF 60
033B 3015  MOVLW 1
033C 2083  CALL $083
033D 3016  MOVLW 1
033E 208A  CALL $08A
033F 3017  MOVLW 1
0340 2091  CALL $091
0341 3010  MOVLW 1
0342 2098  CALL $098
0343 3013  MOVLW 1
0344 209F  CALL $09F
0345 22B1  CALL $2B1
0346 1E85  BTFSS 5,5
0347 2B45  GOTO $345
0348 0AD1  INCF 81,F
0349 204D  CALL $04D
034A 1A85  BTFSC 5,5
034B 2B48  GOTO $348
034C 300A  MOVLW 0
034D 00BD  MOVWF 61
034E 1A85  BTFSC 5,5
034F 2B59  GOTO $359
0350 22B1  CALL $2B1
0351 0BBD  DECFSZ 61,F
0352 2B4E  GOTO $34E
0353 20A6  CALL $0A6
0354 22B1  CALL $2B1
0355 204D  CALL $04D
0356 1E85  BTFSS 5,5
0357 2B53  GOTO $353
0358 285B  GOTO $05B
0359 083C  MOVF 60,W
035A 3C05  SUBLW 5	(00000101)
035B 1903  BTFSC 3,2
035C 2B61  GOTO $361
035D 1C03  BTFSS 3,0
035E 2B63  GOTO $363
035F 0ABC  INCF 60,F
0360 2B48  GOTO $348
0361 01BC  CLRF 60
0362 2B48  GOTO $348
0363 083C  MOVF 60,W
0364 3C0A  SUBLW 10	(00001010)
0365 1903  BTFSC 3,2
0366 2B6B  GOTO $36B
0367 1C03  BTFSS 3,0
0368 2B6E  GOTO $36E
0369 0ABC  INCF 60,F
036A 2B48  GOTO $348
036B 3006  MOVLW 0
036C 00BC  MOVWF 60
036D 2B48  GOTO $348
036E 01BC  CLRF 60
036F 2B48  GOTO $348


 このままでは見難いので整形しました。

0000 GOTO 	$1A1
0001 ADDWF 	2,F
0002 RETLW 	221	(11011101)
0003 RETLW 	132	(10000100)
0004 RETLW 	233	(11101001)
0005 RETLW 	229	(11100101)
0006 RETLW 	180	(10110100)
0007 RETLW 	117	(01110101)
0008 RETLW 	125	(01111101)
0009 RETLW 	196	(11000100)
000A RETLW 	253	(11111101)
000B RETLW 	245	(11110101)
000C RETLW 	252	(11111100)
000D RETLW 	61	(00111101)
000E RETLW 	41	(00101001)
000F RETLW 	173	(10101101)
0010 RETLW 	121	(01111001)
0011 RETLW 	120	(01111000)
0012 RETLW 	93	(01011101)
0013 RETLW 	188	(10111100)
0014 RETLW 	8	(00001000)
0015 RETLW 	0	(00000000)
0016 RETLW 	255	(11111111)
0017 RETLW 	248	(11111000)
0018 RETLW 	40	(00101000)
0019 RETLW 	45	(00101101)
001A RETLW 	244	(11110100)
001B RETLW 	13	(00001101)
001C RETLW 	57	(00111001)
001D RETLW 	117	(01110101)
001E RETLW 	233	(11101001)
001F RETLW 	24	(00011000)
0020 RETLW 	133	(10000101)
0021 RETLW 	57	(00111001)
0022 RETLW 	25	(00011001)
0023 RETLW 	220	(11011100)
0024 RETLW 	29	(00011101)
0025 RETLW 	33	(00100001)
0026 ADDWF 	2,F
0027 RETLW 	247	(11110111)
0028 RETLW 	251	(11111011)
0029 RETLW 	254	(11111110)
002A RETLW 	253	(11111101)
002B RETLW 	255	(11111111)
002C ADDWF 	2,F
002D RETLW 	0	(00000000)
002E RETLW 	152	(10011000)
002F RETLW 	150	(10010110)
0030 RETLW 	128	(10000000)
0031 RETLW 	0	(00000000)
0032 RETLW 	15	(00001111)
0033 RETLW 	66	(01000010)
0034 RETLW 	64	(01000000)
0035 RETLW 	0	(00000000)
0036 RETLW 	1	(00000001)
0037 RETLW 	134	(10000110)
0038 RETLW 	160	(10100000)
0039 RETLW 	0	(00000000)
003A RETLW 	0	(00000000)
003B RETLW 	39	(00100111)
003C RETLW 	16	(00010000)
003D RETLW 	0	(00000000)
003E RETLW 	0	(00000000)
003F RETLW 	3	(00000011)
0040 RETLW 	232	(11101000)
0041 RETLW 	0	(00000000)
0042 RETLW 	0	(00000000)
0043 RETLW 	0	(00000000)
0044 RETLW 	100	(01100100)
0045 RETLW 	0	(00000000)
0046 RETLW 	0	(00000000)
0047 RETLW 	0	(00000000)
0048 RETLW 	10	(00001010)
0049 RETLW 	0	(00000000)
004A RETLW 	0	(00000000)
004B RETLW 	0	(00000000)
004C RETLW 	1	(00000001)
004D MOVF 	60,W
004E ADDWF 	2,F
004F GOTO 	$2B6
0050 GOTO 	$2C1
0051 GOTO 	$2D7
0052 GOTO 	$2DF
0053 GOTO 	$2E7
0054 GOTO 	$2EF
0055 GOTO 	$2FA
0056 GOTO 	$2FC
0057 GOTO 	$2FE
0058 GOTO 	$300
0059 GOTO 	$302
005A GOTO 	$2B6
005B MOVF 	60,W
005C ADDWF 	2,F
005D GOTO 	$30D
005E GOTO 	$30E
005F GOTO 	$315
0060 GOTO 	$323
0061 GOTO 	$330
0062 GOTO 	$335
0063 GOTO 	$338
0064 GOTO 	$338
0065 GOTO 	$338
0066 GOTO 	$338
0067 GOTO 	$30D
0068 CLRWDT 	
0069 BSF 	3,5
006A MOVWF 	1
006B BCF 	3,5
006C RETLW 	0	(00000000)
006D CLRWDT 	
006E CLRF 	1
006F BSF 	3,5
0070 MOVLW 	2
0071 MOVWF 	1
0072 CLRWDT 	
0073 MOVLW 	2
0074 MOVWF 	1
0075 BCF 	3,5
0076 RETLW 	0	(00000000)
0077 MOVLW 	0
0078 MOVWF 	6
0079 CLRF 	11
007A CLRWDT 	
007B CLRF 	1
007C BSF 	3,5
007D MOVLW 	2
007E MOVWF 	1
007F BCF 	3,5
0080 SLEEP 	
0081 NOP 	
0082 RETURN 	
0083 MOVWF 	73
0084 ANDLW 	127	(01111111)
0085 CALL 	$001
0086 BTFSC 	73,7
0087 IORW 	2,W
0088 MOVWF 	73
0089 RETLW 	0	(00000000)
008A MOVWF 	74
008B ANDLW 	127	(01111111)
008C CALL 	$001
008D BTFSC 	74,7
008E IORW 	2,W
008F MOVWF 	74
0090 RETLW 	0	(00000000)
0091 MOVWF 	75
0092 ANDLW 	127	(01111111)
0093 CALL 	$001
0094 BTFSC 	75,7
0095 IORW 	2,W
0096 MOVWF 	75
0097 RETLW 	0	(00000000)
0098 MOVWF 	76
0099 ANDLW 	127	(01111111)
009A CALL 	$001
009B BTFSC 	76,7
009C IORW 	2,W
009D MOVWF 	76
009E RETLW 	0	(00000000)
009F MOVWF 	77
00A0 ANDLW 	127	(01111111)
00A1 CALL 	$001
00A2 BTFSC 	77,7
00A3 IORW 	2,W
00A4 MOVWF 	77
00A5 RETLW 	0	(00000000)
00A6 MOVLW 	0
00A7 MOVWF 	73
00A8 MOVWF 	74
00A9 MOVWF 	75
00AA MOVWF 	76
00AB MOVWF 	77
00AC RETLW 	0	(00000000)
00AD BCF 	11,7
00AE BSF 	3,5
00AF MOVWF 	27
00B0 BCF 	3,5
00B1 MOVF 	0,W
00B2 BSF 	3,5
00B3 MOVWF 	26
00B4 BSF 	28,2
00B5 BCF 	11,7
00B6 MOVLW 	5
00B7 MOVWF 	29
00B8 MOVLW 	10
00B9 MOVWF 	29
00BA BSF 	28,1
00BB BTFSC 	28,1
00BC GOTO 	$0BB
00BD BCF 	28,2
00BE BCF 	3,5
00BF RETLW 	0	(00000000)
00C0 MOVWF 	47
00C1 BCF 	11,7
00C2 BSF 	3,5
00C3 MOVWF 	27
00C4 BSF 	28,0
00C5 MOVF 	26,W
00C6 BCF 	3,5
00C7 MOVWF 	0
00C8 MOVF 	47,W
00C9 RETURN 	
00CA CALL 	$0C0
00CB ADDLW 	1
00CC INCF 	4,F
00CD CALL 	$0C0
00CE ADDLW 	1
00CF INCF 	4,F
00D0 CALL 	$0C0
00D1 ADDLW 	1
00D2 INCF 	4,F
00D3 GOTO 	$0C0
00D4 CLRF 	48
00D5 CLRF 	49
00D6 CLRF 	50
00D7 CLRF 	51
00D8 CLRF 	44
00D9 CLRF 	1
00DA NOP 	
00DB NOP 	
00DC MOVF 	78,W
00DD CALL 	$026
00DE MOVWF 	47
00DF MOVLW 	4
00E0 ADDWF 	78,W
00E1 MOVWF 	4
00E2 MOVF 	0,W
00E3 MOVWF 	6
00E4 MOVF 	47,W
00E5 MOVWF 	5
00E6 INCF 	79,F
00E7 BTFSC 	79,6
00E8 INCF 	78,F
00E9 BCF 	79,6
00EA MOVF 	78,W
00EB SUBLW 	4	(00000100)
00EC BTFSS 	3,0
00ED CLRF 	78
00EE MOVF 	1,W
00EF MOVWF 	51
00F0 MOVLW 	0
00F1 BTFSS 	44,7
00F2 CLRW 	
00F3 BTFSC 	51,7
00F4 CLRW 	
00F5 ADDWF 	50,F
00F6 BTFSC 	3,0
00F7 INCF 	49,F
00F8 BTFSC 	49,7
00F9 GOTO 	$118
00FA MOVF 	51,W
00FB MOVWF 	44
00FC MOVF 	46,F
00FD BTFSC 	3,2
00FE DECF 	45,F
00FF DECF 	46,F
0100 CLRWDT 	
0101 MOVLW 	0
0102 ADDLW 	255
0103 BTFSS 	3,2
0104 GOTO 	$102
0105 NOP 	
0106 NOP 	
0107 NOP 	
0108 NOP 	
0109 NOP 	
010A MOVF 	45,W
010B IORW 	46,W
010C BTFSS 	3,2
010D GOTO 	$0DC
010E MOVF 	1,W
010F MOVWF 	51
0110 MOVLW 	0
0111 BTFSS 	44,7
0112 CLRW 	
0113 BTFSC 	51,7
0114 CLRW 	
0115 ADDWF 	50,F
0116 BTFSC 	3,0
0117 INCF 	49,F
0118 RETLW 	0	(00000000)
0119 MOVF 	0,W
011A INCF 	4,F
011B MOVWF 	48
011C MOVF 	0,W
011D INCF 	4,F
011E MOVWF 	49
011F MOVF 	0,W
0120 INCF 	4,F
0121 MOVWF 	50
0122 MOVF 	0,W
0123 INCF 	4,F
0124 MOVWF 	51
0125 CLRF 	39
0126 MOVLW 	4
0127 MOVWF 	4
0128 CLRWDT 	
0129 MOVF 	39,W
012A CALL 	$02C
012B MOVWF 	40
012C INCF 	39,F
012D MOVF 	39,W
012E CALL 	$02C
012F MOVWF 	41
0130 INCF 	39,F
0131 MOVF 	39,W
0132 CALL 	$02C
0133 MOVWF 	42
0134 INCF 	39,F
0135 MOVF 	39,W
0136 CALL 	$02C
0137 MOVWF 	43
0138 INCF 	39,F
0139 CLRF 	0
013A MOVF 	43,W
013C MOVF 	42,W
013D BTFSC 	3,0
013E GOTO 	$144
0140 BTFSC 	3,2
0141 BCF 	3,0
0142 DECF 	50,F
0143 GOTO 	$145
0145 MOVF 	41,W
0146 BTFSC 	3,0
0147 GOTO 	$14D
0149 BTFSC 	3,2
014A BCF 	3,0
014B DECF 	49,F
014C GOTO 	$14E
014E MOVF 	40,W
014F BTFSC 	3,0
0150 GOTO 	$156
0152 BTFSC 	3,2
0153 BCF 	3,0
0154 DECF 	48,F
0155 GOTO 	$157
0157 BTFSS 	3,0
0158 GOTO 	$15B
0159 INCF 	0,F
015A GOTO 	$13A
015B MOVF 	43,W
015C ADDWF 	51,F
015D MOVF 	42,W
015E BTFSS 	3,0
015F GOTO 	$165
0160 ADDWF 	50,F
0161 INCF 	50,F
0162 BTFSC 	3,2
0163 BSF 	3,0
0164 GOTO 	$166
0165 ADDWF 	50,F
0166 MOVF 	41,W
0167 BTFSS 	3,0
0168 GOTO 	$16E
0169 ADDWF 	49,F
016A INCF 	49,F
016B BTFSC 	3,2
016C BSF 	3,0
016D GOTO 	$16F
016E ADDWF 	49,F
016F MOVF 	40,W
0170 BTFSS 	3,0
0171 GOTO 	$177
0172 ADDWF 	48,F
0173 INCF 	48,F
0174 BTFSC 	3,2
0175 BSF 	3,0
0176 GOTO 	$178
0177 ADDWF 	48,F
0178 INCF 	4,F
0179 MOVLW 	2
017B BTFSS 	3,2
017C GOTO 	$128
017D MOVLW 	4
017E MOVWF 	4
017F MOVF 	0,F
0180 BTFSS 	3,2
0181 GOTO 	$192
0182 INCF 	4,F
0183 MOVF 	0,F
0184 BTFSS 	3,2
0185 GOTO 	$192
0186 INCF 	4,F
0187 MOVF 	0,F
0188 BTFSS 	3,2
0189 GOTO 	$18F
018A INCF 	4,F
018B MOVF 	0,F
018C BTFSS 	3,2
018D GOTO 	$18F
018E INCF 	4,F
018F BTFSC 	81,0
0190 BSF 	68,7
0191 GOTO 	$193
0192 BSF 	65,7
0193 MOVF 	0,W
0194 CALL 	$083
0195 INCF 	4,F
0196 MOVF 	0,W
0197 CALL 	$08A
0198 INCF 	4,F
0199 MOVF 	0,W
019A CALL 	$091
019B INCF 	4,F
019C MOVF 	0,W
019D CALL 	$098
019E INCF 	4,F
019F MOVF 	0,W
01A0 GOTO 	$09F
01A1 MOVLW 	0
01A2 BSF 	3,5
01A3 MOVWF 	5
01A4 BCF 	3,5
01A5 CLRF 	5
01A6 MOVLW 	0
01A7 BSF 	3,5
01A8 MOVWF 	6
01A9 BCF 	3,5
01AA CLRF 	6
01AB CLRF 	78
01AC CLRF 	79
01AD MOVLW 	1
01AE MOVWF 	72
01AF MOVLW 	1
01B0 CALL 	$083
01B1 MOVLW 	1
01B2 CALL 	$08A
01B3 MOVLW 	1
01B4 CALL 	$091
01B5 MOVLW 	1
01B6 CALL 	$098
01B7 MOVLW 	1
01B8 CALL 	$09F
01B9 MOVLW 	2
01BA CALL 	$068
01BB MOVLW 	6
01BC MOVWF 	45
01BD MOVLW 	10
01BE MOVWF 	46
01BF CALL 	$0D4
01C0 CLRF 	82
01C1 CLRF 	84
01C2 MOVLW 	3
01C3 MOVWF 	4
01C4 MOVLW 	0
01C5 CALL 	$0CA
01C6 MOVLW 	5
01C7 MOVWF 	4
01C8 MOVLW 	2
01C9 CALL 	$0C0
01CA CALL 	$0A6
01CB BSF 	3,5
01CC MOVLW 	0
01CD MOVWF 	5
01CE MOVLW 	0
01CF MOVWF 	6
01D0 BCF 	3,5
01D1 CLRWDT 	
01D2 MOVLW 	2
01D3 BSF 	3,5
01D4 MOVWF 	1
01D5 BCF 	3,5
01D6 MOVLW 	0
01D7 MOVWF 	45
01D8 MOVLW 	8
01D9 MOVWF 	46
01DA MOVLW 	2
01DB CALL 	$068
01DC CALL 	$0D4
01DD MOVLW 	3
01DE MOVWF 	45
01DF MOVLW 	13
01E0 MOVWF 	46
01E1 INCF 	81,F
01E2 INCF 	82,F
01E3 MOVF 	50,W
01E4 ANDLW 	192	(11000000)
01E5 BTFSS 	3,2
01E6 GOTO 	$21D
01E7 BTFSC 	50,5
01E8 GOTO 	$219
01E9 BTFSC 	50,4
01EA GOTO 	$215
01EB BTFSC 	50,3
01EC GOTO 	$211
01ED BTFSC 	50,2
01EE GOTO 	$20E
01EF BTFSC 	50,1
01F0 GOTO 	$20E
01F1 BTFSC 	50,0
01F2 GOTO 	$20E
01F3 MOVF 	51,W
01F4 SUBLW 	54	(00110110)
01F5 BTFSS 	3,0
01F6 GOTO 	$20E
01F7 MOVF 	51,W
01F8 SUBLW 	5	(00000101)
01F9 BTFSS 	3,0
01FA GOTO 	$206
01FB GOTO 	$1FC
01FC CALL 	$06D
01FD INCF 	82,F
01FE INCF 	82,F
01FF INCF 	82,F
0200 MOVLW 	12
0201 MOVWF 	45
0202 MOVLW 	5
0203 MOVWF 	46
0204 MOVLW 	0
0205 GOTO 	$221
0206 CALL 	$06D
0207 INCF 	82,F
0208 MOVLW 	6
0209 MOVWF 	45
020A MOVLW 	10
020B MOVWF 	46
020C MOVLW 	0
020D GOTO 	$221
020E CALL 	$06D
020F MOVLW 	0
0210 GOTO 	$221
0211 MOVLW 	2
0212 CALL 	$068
0213 MOVLW 	0
0214 GOTO 	$221
0215 MOVLW 	2
0216 CALL 	$068
0217 MOVLW 	0
0218 GOTO 	$221
0219 MOVLW 	2
021A CALL 	$068
021B MOVLW 	0
021C GOTO 	$221
021D MOVLW 	2
021E CALL 	$068
021F MOVLW 	0
0220 GOTO 	$221
0221 MOVWF 	80
0222 CALL 	$0D4
0223 BTFSS 	85,0
0224 GOTO 	$252
0225 BTFSC 	84,0
0226 CALL 	$0A6
0227 MOVF 	51,W
0229 MOVWF 	47
022A BTFSS 	47,7
022B GOTO 	$22E
022C COMF 	47,F
022D INCF 	47,F
022E MOVF 	47,W
022F SUBLW 	10	(00001010)
0230 BTFSC 	3,0
0231 GOTO 	$237
0232 BCF 	84,0
0233 CLRF 	82
0234 MOVF 	51,W
0235 MOVWF 	83
0236 GOTO 	$252
0237 BTFSC 	84,0
0238 GOTO 	$243
0239 MOVF 	82,W
023A SUBLW 	60	(00111100)
023B BTFSC 	3,0
023C GOTO 	$24C
023D MOVLW 	0
023E MOVWF 	82
023F BSF 	84,0
0240 MOVF 	51,W
0241 MOVWF 	83
0242 GOTO 	$24E
0243 MOVF 	82,W
0244 SUBLW 	14	(00001110)
0245 BTFSC 	3,0
0246 GOTO 	$24E
0247 CLRF 	82
0248 MOVF 	51,W
0249 MOVWF 	83
024A CLRF 	82
024B GOTO 	$252
024C BTFSS 	84,0
024D GOTO 	$252
024E CALL 	$077
024F CALL 	$077
0250 CALL 	$077
0251 GOTO 	$298
0252 MOVF 	80,F
0253 BTFSC 	3,2
0254 GOTO 	$25C
0255 BCF 	3,0
0256 RLF 	51,F
0257 RLF 	50,F
0258 RLF 	49,F
0259 RLF 	48,F
025A DECFSZ 	80,F
025B GOTO 	$255
025C MOVF 	48,W
025D IORW 	49,W
025E IORW 	50,W
025F IORW 	51,W
0260 BTFSC 	3,2
0261 GOTO 	$29B
0262 BTFSC 	48,7
0263 GOTO 	$2A6
0264 MOVF 	48,W
0265 MOVWF 	52
0266 MOVF 	49,W
0267 MOVWF 	53
0268 MOVF 	50,W
0269 MOVWF 	54
026A MOVF 	51,W
026B MOVWF 	55
026C MOVF 	59,W
026D ADDWF 	51,F
026E MOVF 	58,W
026F BTFSS 	3,0
0270 GOTO 	$276
0271 ADDWF 	50,F
0272 INCF 	50,F
0273 BTFSC 	3,2
0274 BSF 	3,0
0275 GOTO 	$277
0276 ADDWF 	50,F
0277 MOVF 	57,W
0278 BTFSS 	3,0
0279 GOTO 	$27F
027A ADDWF 	49,F
027B INCF 	49,F
027C BTFSC 	3,2
027D BSF 	3,0
027E GOTO 	$280
027F ADDWF 	49,F
0280 MOVF 	56,W
0281 BTFSS 	3,0
0282 GOTO 	$288
0283 ADDWF 	48,F
0284 INCF 	48,F
0285 BTFSC 	3,2
0286 BSF 	3,0
0287 GOTO 	$289
0288 ADDWF 	48,F
0289 BTFSS 	48,7
028A GOTO 	$297
028B COMF 	48,F
028C COMF 	49,F
028D COMF 	50,F
028E COMF 	51,F
028F INCFSZ 	51,F
0290 GOTO 	$297
0291 INCFSZ 	50,F
0292 GOTO 	$297
0293 INCFSZ 	49,F
0294 GOTO 	$297
0295 INCFSZ 	48,F
0296 GOTO 	$297
0297 CALL 	$125
0298 BTFSS 	5,5
0299 GOTO 	$33A
029A GOTO 	$1CB
029B MOVLW 	1
029C CALL 	$083
029D MOVLW 	1
029E CALL 	$08A
029F MOVLW 	1
02A0 CALL 	$091
02A1 MOVLW 	0
02A2 CALL 	$098
02A3 MOVLW 	1
02A4 CALL 	$09F
02A5 GOTO 	$298
02A6 MOVLW 	1
02A7 CALL 	$083
02A8 MOVLW 	1
02A9 CALL 	$08A
02AA MOVLW 	1
02AB CALL 	$091
02AC MOVLW 	0
02AD CALL 	$098
02AE MOVLW 	1
02AF CALL 	$09F
02B0 GOTO 	$1CB
02B1 MOVLW 	1
02B2 MOVWF 	45
02B3 MOVLW 	8
02B4 MOVWF 	46
02B5 GOTO 	$0D4
02B6 MOVLW 	1
02B7 CALL 	$083
02B8 MOVLW 	1
02B9 CALL 	$08A
02BA MOVLW 	1
02BB CALL 	$091
02BC MOVLW 	1
02BD CALL 	$098
02BE MOVLW 	1
02BF CALL 	$09F
02C0 GOTO 	$2B1
02C1 BTFSS 	85,0
02C2 GOTO 	$2CD
02C3 MOVLW 	1
02C4 CALL 	$083
02C5 MOVLW 	1
02C6 CALL 	$08A
02C7 MOVLW 	0
02C8 CALL 	$091
02C9 MOVLW 	2
02CA CALL 	$098
02CB MOVLW 	0
02CC GOTO 	$2BF
02CD MOVLW 	2
02CE CALL 	$083
02CF MOVLW 	1
02D0 CALL 	$08A
02D1 MOVLW 	1
02D2 CALL 	$091
02D3 MOVLW 	1
02D4 CALL 	$098
02D5 MOVLW 	2
02D6 GOTO 	$2BF
02D7 MOVLW 	0
02D8 CALL 	$083
02D9 MOVLW 	0
02DA CALL 	$08A
02DB MOVLW 	0
02DC CALL 	$091
02DD MOVLW 	1
02DE GOTO 	$2BD
02DF MOVLW 	1
02E0 CALL 	$083
02E1 MOVLW 	1
02E2 CALL 	$08A
02E3 MOVLW 	0
02E4 CALL 	$091
02E5 MOVLW 	1
02E6 GOTO 	$2BD
02E7 MOVLW 	1
02E8 CALL 	$083
02E9 MOVLW 	0
02EA CALL 	$08A
02EB MOVLW 	1
02EC CALL 	$091
02ED MOVLW 	1
02EE GOTO 	$2BD
02EF MOVLW 	1
02F0 CALL 	$083
02F1 MOVLW 	0
02F2 CALL 	$08A
02F3 MOVLW 	0
02F4 CALL 	$091
02F5 MOVLW 	2
02F6 CALL 	$098
02F7 MOVLW 	0
02F8 CALL 	$09F
02F9 GOTO 	$2B1
02FA MOVLW 	0
02FB GOTO 	$304
02FC MOVLW 	0
02FD GOTO 	$304
02FE MOVLW 	0
02FF GOTO 	$304
0300 MOVLW 	1
0301 GOTO 	$304
0302 MOVLW 	1
0303 GOTO 	$304
0304 MOVWF 	47
0305 MOVLW 	3
0306 MOVWF 	4
0307 MOVF 	47,W
0308 CALL 	$0CA
0309 MOVLW 	3
030A MOVWF 	4
030B CALL 	$119
030C GOTO 	$2B1
030D GOTO 	$1C0
030E MOVLW 	0
030F XORWF 	85,F
0310 MOVLW 	5
0311 MOVWF 	4
0312 MOVLW 	2
0313 CALL 	$0AD
0314 GOTO 	$2B1
0315 MOVLW 	3
0316 MOVWF 	4
0317 MOVLW 	0
0318 CALL 	$0AD
0319 INCF 	4,F
031A MOVLW 	0
031B CALL 	$0AD
031C INCF 	4,F
031D MOVLW 	0
031E CALL 	$0AD
031F INCF 	4,F
0320 MOVLW 	0
0321 CALL 	$0AD
0322 GOTO 	$1C0
0323 COMF 	52,F
0324 COMF 	53,F
0325 COMF 	54,F
0326 COMF 	55,F
0327 INCFSZ 	55,F
0328 GOTO 	$32F
0329 INCFSZ 	54,F
032A GOTO 	$32F
032B INCFSZ 	53,F
032C GOTO 	$32F
032D INCFSZ 	52,F
032E GOTO 	$32F
032F GOTO 	$315
0330 CLRF 	52
0331 CLRF 	53
0332 CLRF 	54
0333 CLRF 	55
0334 GOTO 	$315
0335 MOVLW 	0
0336 MOVWF 	60
0337 GOTO 	$348
0338 MOVLW 	0
0339 GOTO 	$336
033A CLRF 	60
033B MOVLW 	1
033C CALL 	$083
033D MOVLW 	1
033E CALL 	$08A
033F MOVLW 	1
0340 CALL 	$091
0341 MOVLW 	1
0342 CALL 	$098
0343 MOVLW 	1
0344 CALL 	$09F
0345 CALL 	$2B1
0346 BTFSS 	5,5
0347 GOTO 	$345
0348 INCF 	81,F
0349 CALL 	$04D
034A BTFSC 	5,5
034B GOTO 	$348
034C MOVLW 	0
034D MOVWF 	61
034E BTFSC 	5,5
034F GOTO 	$359
0350 CALL 	$2B1
0351 DECFSZ 	61,F
0352 GOTO 	$34E
0353 CALL 	$0A6
0354 CALL 	$2B1
0355 CALL 	$04D
0356 BTFSS 	5,5
0357 GOTO 	$353
0358 GOTO 	$05B
0359 MOVF 	60,W
035A SUBLW 	5	(00000101)
035B BTFSC 	3,2
035C GOTO 	$361
035D BTFSS 	3,0
035E GOTO 	$363
035F INCF 	60,F
0360 GOTO 	$348
0361 CLRF 	60
0362 GOTO 	$348
0363 MOVF 	60,W
0364 SUBLW 	10	(00001010)
0365 BTFSC 	3,2
0366 GOTO 	$36B
0367 BTFSS 	3,0
0368 GOTO 	$36E
0369 INCF 	60,F
036A GOTO 	$348
036B MOVLW 	0
036C MOVWF 	60
036D GOTO 	$348
036E CLRF 	60
036F GOTO 	$348

 マイコンのアセンブリ言語コードは、レジスタとメモリ間の
 数値の交換、分岐、判定で構成されています。

 レジスタとメモリ間の数値交換から、メモリマップドI/O構成で
 何をしているのかを解析していきます。

 動作解析は、ユーザーの頭を使った作業になります。
 アドレス、オペコード、オペランドが抽出できた時点
 で、スクリプトの使命は終わり。


目次

inserted by FC2 system