目次

PIC逆アセンブル(AWK)

 アマチュア無線の知人から、周波数カウンタの使い勝手が
 悪いので、不要な機能を削除してほしいと依頼が来ました。

 その周波数カウンタは、以下。




 回路図、操作方法は公開されているので、アセンブリ言語を
 解析して、どこを改定すればよいのか調べることに。

 5桁の7セグメントのLEDをダイナミック点灯で表示するのと
 周波数を測定するのがメインの仕事で、プログラムを吸出し
 次の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の型番は、PIC16F628Aなので14ビットの
 命令コードを持っています。

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

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



 対応表から30種と少しの命令があることがわかりました。
 対応表を参照しながら、AWKスクリプトを記述。

function h2b(x)
{
  # default
  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
}

function b2h(x)
{
  # default
  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
}

{
  # copy code
  xcode = toupper($2)
  # separate 
  d0 = h2b(substr(xcode,1,1))
  d1 = h2b(substr(xcode,2,1))
  d2 = h2b(substr(xcode,3,1))
  d3 = h2b(substr(xcode,4,1))
  #
  xcode = d0 d1 d2 d3
  opcode  = d0 d1
  operand = d2 d3
  printf("%s => %s ",$0,$1)
  # judge
  if ( xcode == "0000000000000000" ) { printf("NOP") }
  if ( xcode == "0000000001100100" ) { printf("CLRWDT") }
  if ( xcode == "0000000000001001" ) { printf("RETFIE") }
  if ( xcode == "0000000000001000" ) { printf("RETURN") }
  if ( xcode == "0000000001100011" ) { printf("SLEEP") }
  if ( opcode == "00000111" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("ADDWF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00000101" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("ANDWF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00000001" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    if ( substr(d2,0,1) == "1" ) {
      printf("CLRF\t\t%s",xadr)
    } else {
      printf("CLRW")
    }
  }
  if ( opcode == "00001001" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("COMF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00000011" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("DECF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00001011" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("DECFSZ\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00001010" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("INCF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00001111" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("INCFSZ\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00000100" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("IORWF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00001000" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("MOVF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00000000" && substr(d2,0,1) == "1" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("MOVWF\t\t%s",xadr)
  }
  if ( opcode == "00001101" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("RLF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00001100" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("RRF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00000010" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("SUBWF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00001110" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("SWAPF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00000110" ) {
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("XORWF\t\t%s,",xadr)
    if ( substr(d2,0,1) == "1" ) {
      printf("F")
    } else {
      printf("W")
    }
  }
  if ( opcode == "00010000" ||
       opcode == "00010001" ||
       opcode == "00010010" ||
       opcode == "00010011"    ) {
    badr = b2h("0" substr(d1,3,2) substr(d2,1,1))
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("BCF\t\t%s,%s",xadr,substr(badr,1,1))
  }
  if ( opcode == "00010100" ||
       opcode == "00010101" ||
       opcode == "00010110" ||
       opcode == "00010111"    ) {
    badr = b2h("0" substr(d1,3,2) substr(d2,1,1))
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("BSF\t\t%s,%s",xadr,substr(badr,1,1))
  }
  if ( opcode == "00011000" ||
       opcode == "00011001" ||
       opcode == "00011010" ||
       opcode == "00011011"    ) {
    badr = b2h("0" substr(d1,3,2) substr(d2,1,1))
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("BTFSC\t\t%s,%s",xadr,substr(badr,1,1))
  }
  if ( opcode == "00011100" ||
       opcode == "00011101" ||
       opcode == "00011110" ||
       opcode == "00011111"    ) {
    badr = b2h("0" substr(d1,3,2) substr(d2,1,1))
    adrh = "0" substr(d2,2,3)
    adrl = d3
    xadr = b2h(adrh) b2h(adrl)
    printf("BTFSS\t\t%s,%s",xadr,substr(badr,1,1))
  }
  if ( opcode == "00111110" ) {
    xadr = b2h(d2) b2h(d3)
    printf("ADDLW\t\t%s",xadr)
  }
  if ( opcode == "00111001" ) {
    xadr = b2h(d2) b2h(d3)
    printf("ANDLW\t\t%s",xadr)
  }
  if ( d0 == "0010" ) {
    xadr = b2h("0" substr(d1,2,3)) b2h(d2) b2h(d3)
    if ( substr(d1,0,1) == "1" ) {
      printf("GOTO\t\t")
    } else {
      printf("CALL\t\t")
    }
    printf("$%s",xadr)
  }
  if ( opcode == "00111000" ) {
    xadr = b2h(d2) b2h(d3)
    printf("IORLW\t\t%s",xadr)
  }
  if ( opcode == "00110000" ) {
    xadr = b2h(d2) b2h(d3)
    printf("MOVLW\t\t%s",xadr)
  }
  if ( opcode == "00110100" ) {
    xadr = b2h(d2) b2h(d3)
    printf("RETLW\t\t%s",xadr)
  }
  if ( opcode == "00111100" ) {
    xadr = b2h(d2) b2h(d3)
    printf("SUBLW\t\t%s",xadr)
  }
  if ( opcode == "00111010" ) {
    xadr = b2h(d2) b2h(d3)
    printf("XORLW\t\t%s",xadr)
  }
  # new line
  printf("\n")
}

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

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

 16ビット中の14ビットの構成は4種類だけとデータシートに
 謳われています。




 上の変換では、SFR(Special Function Register)のアドレスや
 ビット位置の情報が欠落しています。

 SFRの内容は、データシートに記載されています。



 情報欠落は、他のスクリプトで対応することにして
 PICの逆アセンブルは完成です。


目次

inserted by FC2 system