• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

pic16F872汇编转换为c语言,思路是什么?这段代码怎么转换

lennon 2016-08-07 浏览量:1064
[table=98%]
Generated by WinDis84, (c) Nigel Goodwin 1998.

LIST P=16F84, F=INHX8M
include "p16FXX.inc"
ORG 0x0000

INCF 0x16 , W
Label_000A INCF 0x15 , W
; ????
ADDLW 0x3F
RETLW 0x00
DECF EEDATA , W
DECF TMR0 , W
MOVLW 0x00
Label_0002 INCF EEDATA , W
MOVLW 0x00
INCF TMR0 , W
IORLW 0x08
RETLW 0x00
DECF 0x12 , W
DECF 0x13 , W
RRF 0x1C , W
BCF 0x28 , 04
BCF 0x28 , 06
GOTO Label_0001
RRF 0x10 , W
DECF 0x16 , W
CALL Label_0002
DECF 0x19 , W
BTFSC 0x28 , 02
BTFSC 0x28 , 04
GOTO Label_0001
ADDLW 0x30
CALL Label_0003
DECF 0x1C , W
CALL Label_0004
CALL Label_0005
; ????
Label_0011 IORLW 0x00
; ????
IORLW 0x02
CLRW
DECF 0x19 , W
CALL Label_0006
DECF 0x18 , W
GOTO Label_0007
Label_001E GOTO Label_0008
GOTO Label_0001
CLRW
CALL Label_0009
CALL Label_000A
DECF 0x13 , W
DECF 0x12 , W
RETLW 0x08
Label_000B IORLW 0x00
MOVLW 0x08
INCF INDF , W
MOVLW 0x08
DECF INDF , W
RETLW 0x0E
RETLW 0x0E
COMF INDF , W
CALL Label_000B
IORWF INDF , W
MOVLW 0x30
ADDWF 0x20 , W
CALL Label_000B
IORWF INDF , W
CALL Label_000C
ADDWF 0x20 , W
DECF TMR0 , W
INCF 0x12 , W
INCF 0x11 , W
BCF 0x28 , 00
IORWF PORTB , W
; ????
IORWF PCLATH , W
IORWF PORTB , W
DECF 0x19 , W
; ????
IORWF 0x28 , W
DECFSZ INDF , W
ADDLW 0x3F
ADDLW 0x3F
ADDLW 0x3F
ADDLW 0x3F
CLRW
SUBLW 0x28
DECF 0x12 , W
DECF 0x13 , W
CALL Label_000D
CALL Label_000E
CALL Label_000F
CALL Label_0010
SWAPF 0x30 , W
INCF 0x16 , W
INCF 0x11 , W
CALL Label_0011
INCF 0x12 , W
INCF 0x11 , W
IORLW 0x00
ANDLW 0x01
IORLW 0x08
XORWF 0x3A , W
ANDLW 0x04
DECF 0x1D , W
CALL Label_0012
CALL Label_0013
SUBLW 0x28
CALL Label_0007
DECF 0x12 , W
DECF 0x13 , W
SWAPF EEDATA , W
BCF INDF , 00
INCFSZ EEDATA , W
BCF INDF , 02
INCF 0x16 , W
INCF 0x11 , W
CALL Label_0014
INCF 0x12 , W
INCF 0x11 , W
SUBLW 0x28
DECF 0x12 , W
DECF 0x13 , W
SWAPF EEDATA , W
BCF INDF , 00
INCFSZ EEDATA , W
BCF INDF , 02
INCF 0x16 , W
INCF 0x11 , W
CALL Label_0014
INCF 0x12 , W
INCF 0x11 , W
SUBLW 0x28
CALL Label_0001
INCF 0x16 , W
INCF 0x11 , W
SUBLW 0x22
INCF 0x12 , W
INCF 0x11 , W
ADDLW 0x28
INCF 0x16 , W
INCF 0x11 , W
SUBLW 0x21
INCF 0x12 , W
INCF 0x11 , W
ADDLW 0x28
INCF 0x16 , W
INCF 0x11 , W
RRF 0x24 , W
INCF 0x12 , W
INCF 0x11 , W
INCF 0x16 , W
INCF 0x11 , W
ANDLW 0x23
INCF 0x12 , W
INCF 0x11 , W
ADDLW 0x28
INCF 0x16 , W
INCF 0x11 , W
BCF 0x24 , 06
INCF 0x12 , W
INCF 0x11 , W
INCF 0x16 , W
INCF 0x11 , W
ANDLW 0x23
INCF 0x12 , W
INCF 0x11 , W
ADDLW 0x28
ADDLW 0x28
ADDLW 0x28
DECF 0x16 , W
DECF 0x13 , W
CALL Label_0015
; ????
CALL Label_0016
XORLW 0x00
XORLW 0x28
XORLW 0x08
CALL Label_0017
DECF 0x19 , W
ADDWF 0x28 , W
SUBWF 0x3A , W
DECF 0x19 , W
CLRW
ADDWF 0x3A , W
DECF 0x19 , W
RLF 0x28 , W
CLRW
DECF 0x19 , W
BTFSC 0x28 , 00
CALL Label_0018
; ????
; ????
DECF 0x19 , W
GOTO Label_0019
CALL Label_0018
DECF 0x16 , W
DECF 0x13 , W
CALL Label_001A
CALL Label_000D
SUBLW 0x28
DECF 0x12 , W
DECF 0x13 , W
SWAPF EEDATA , W
DECF 0x16 , W
CALL Label_001B
DECF 0x12 , W
INCFSZ EEDATA , W
DECF 0x16 , W
CALL Label_001C
INCF 0x16 , W
INCF 0x11 , W
BCF 0x21 , 06
INCF 0x12 , W
INCF 0x11 , W
CALL Label_000D
CALL Label_000E
CALL Label_001D
INCF 0x16 , W
INCF 0x11 , W
NOP
INCF 0x12 , W
INCF 0x11 , W
INCF 0x16 , W
INCF 0x11 , W
ADDLW 0x21
INCF 0x12 , W
INCF 0x11 , W
SUBLW 0x28
SUBLW 0x28
DECF 0x12 , W
DECF 0x13 , W
INCFSZ EEDATA , W
; ????
SWAPF EEDATA , W
XORLW 0x00
RETLW 0x28
XORLW 0x08
BCF 0x3A , 04
DECF 0x19 , W
GOTO Label_001E
IORWF 0x3A , W
DECF 0x19 , W
; ????
IORWF 0x28 , W
XORLW 0x08
BCF 0x3A , 04
DECF 0x19 , W
RETLW 0x28
IORWF 0x28 , W
; ????
; ????
DECF 0x19 , W
GOTO Label_001E
CLRW
DECF 0x19 , W
MOVLW 0x28
IORWF 0x28 , W
BCF 0x28 , 04
INCF 0x12 , W
INCF 0x11 , W
Label_0009 IORLW 0x28
DECF 0x12 , W
DECF 0x13 , W
XORWF 0x16 , W
NOP
NOP
NOP
XORWF 0x12 , W
INCF 0x16 , W
INCF 0x11 , W
MOVLW 0x21
INCF 0x12 , W
INCF 0x11 , W
DECF 0x16 , W
CALL Label_001A
CALL Label_000D
INCF 0x16 , W
INCF 0x11 , W
BCF 0x24 , 06
INCF 0x12 , W
INCF 0x11 , W
INCF 0x16 , W
INCF 0x11 , W
ANDLW 0x23
INCF 0x12 , W
INCF 0x11 , W
INCF 0x16 , W
INCF 0x11 , W
CALL Label_001F
INCF 0x12 , W
INCF 0x11 , W
INCF 0x16 , W
INCF 0x11 , W
ADDLW 0x21
INCF 0x12 , W
INCF 0x11 , W
DECFSZ 0x17 , W
DECFSZ 0x13 , W
DECF 0x13 , W
DECF 0x12 , W
Label_0007 MOVF INDF , W
CALL Label_0020
IORLW 0x00
; ????
ANDLW 0x00
GOTO Label_0021
DECF 0x13 , W
DECF 0x12 , W
MOVF INDF , W
BSF INDF , 00
NOP
NOP
NOP
NOP
NOP
NOP
ADDLW 0x3F
ADDLW 0x3F
想自己试着翻译,但是没有一点头绪
[/table]
1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这耗时间啊,要不就帮你反编译一下了。
    想学习的话,还是对照指令集来理解其意。
    如果仅仅为了学习,别从反汇编开始。先用汇编写程序比如跑马灯、数码管之类的。
    偷懒的话,找一找看有没有反汇编的工具软件(自己动手百度一下)。

    :)
    • 发布于 2016-08-07
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:10
  • 按功能吧。
    汇编一般也是分块写的。

    要译成C的话,还不如用C重新写呢,看这一段只是这么几句,译成C的话也没有几句。
    • 发布于2016-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 汉云 发表于 2016-8-7 17:52
    按功能吧。
    汇编一般也是分块写的。


    一个label是一个功能函数吗?我汇编不是很懂。按照每条指令翻译,也整合不到一起去。
    • 发布于2016-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 理解了功能 重写是要比翻译 快些~
    • 发布于2016-08-08
    • 举报
    • 评论 0
    • 0
    • 0

  • lennon 发表于 2016-8-7 22:53
    一个label是一个功能函数吗?我汇编不是很懂。按照每条指令翻译,也整合不到一起去。 ...

    PIC的汇编没有几句的,数据手册上有一些语法,看一下就会了。
    若是不懂汇编,那还是自己写吧,不能一句汇编译一句C语言程序的,汇编的要复杂一些,有时几句汇编可以用一句C代替了。
    建议还是用C重写。
    • 发布于2016-08-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 建议还是用C按照原功能来写吧,这也是一种翻译吧
    • 发布于2016-08-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 先看懂算法、代码功能,然后按逻辑用sei写
    • 发布于2016-08-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 简单看了一下,你这个不是完整的程序
    • 发布于2016-08-09
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

pic16F872汇编转换为c语言,思路是什么?这段代码怎么转换