打印

求解这古老的汇编语言

[复制链接]
2626|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang168506|  楼主 | 2014-11-11 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        ORG        0000H                 //汇编伪指令 表示后边紧跟的那条指令地址为0000H
L0:        AJMP        L7                    //无条件跳转例如AJMP MAIN
        DB        FFH
L1:        LJMP        L89
        DB        FFH,FFH,FFH,FFH,FFH
L2:        LJMP        L91
        DB        FFH,FFH,FFH,FFH,FFH       
L3:        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A       
L4:        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A       
L5:        AJMP        L90       
        DB        94H,FFH,FFH,FFH,FFH,FFH       
L6:        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        R7,A
        MOV        FFH,#00H
        MOV        PSW,#00H
        MOV        R0,#40H
        MOV        R7,#A0H
        MOV        SP,#30H
        ACALL        L75
        MOV        IE,#00H
        MOV        E8H,#00H
        ACALL        L76
        ACALL        L77
        ACALL        L78
        MOV        FEH,#00H
        MOV        FCH,#FFH
        MOV        FDH,#FFH
        ACALL        L76
        MOV        TMOD,#21H
        MOV        TL1,#F3H
        MOV        TH1,#F3H
        CLR        ET1
        SETB        TR1
        MOV        SCON,#50H
        MOV        TL0,#78H
        MOV        TH0,#ECH
        SETB        PT0
        SETB        TR0
        MOV        IE,#82H
        ACALL        L79
        MOV        R0,#C4H
        MOV        5AH,@R0
        INC        R0
        MOV        5BH,@R0
        INC        R0
        MOV        5CH,@R0
        MOV        R0,#18H
        MOV        R7,#18H
        ACALL        L75
        MOV        29H,#3FH
        MOV        R0,#E0H
        MOV        @R0,#00H
        MOV        18H,#B0H
        MOV        R0,#AEH
        MOV        @R0,#26H
        INC        R0
        MOV        @R0,#26H
        MOV        R0,#D6H
        MOV        @R0,#0DH
        INC        R0
        MOV        @R0,#0DH
        MOV        A,C4H
        ANL        A,#10H
        MOV        26H,A
        MOV        27H,26H
        MOV        A,C0H
        ANL        A,#80H
        MOV        2EH,A
        MOV        2FH,2EH
        MOV        A,C0H
        ANL        A,#40H
        MOV        2CH,A
        MOV        2DH,2CH
        MOV        24H,#3FH
        MOV        25H,#3FH
        MOV        3FH,#00H
        MOV        3EH,#00H
        MOV        A,4EH
        CPL        A
        MOV        FCH,A
        JNB        03H,L80
        CLR        03H
        MOV        R1,#CAH
        MOV        R7,#04H
        ACALL        L81
        ACALL        L82
        ACALL        L77
        ACALL        L83
        MOV        R1,#B9H
        MOV        R0,#D4H
        MOV        A,@R1
        MOV        @R0,A
        MOV        R1,#BAH
        MOV        R0,#D5H
        MOV        A,@R1
        MOV        @R0,A
L80:        JNB        00H,L84
        CLR        00H
        ACALL        L85
L84:        MOV        A,C4H
        JNB        ACC.5,L86
        JNB        ACC.6,L87
        JNB        ACC.7,L88
        MOV        A,C0H
        ANL        A,#3FH
        MOV        25H,A
        MOV        R0,#C7H
       
L7:        MOV        IE,#00H
        MOV        SP,#30H
        MOV        R7,#3FH
        MOV        A,#00H
        MOV        R0,#40H
L8:        MOV        @R0,A
        INC        R0
        DJNZ        R7,L8
L9:        DJNZ        R7,L9
        MOV        SCON,#B0H
        ORL        87H,#00H
        MOV        TMOD,#15H
        MOV        TL0,#00H
        MOV        TH0,#00H
        SETB        TR0
        CLR        ET0
        SETB        ES
        SETB        EA
        CLR        RI
        CLR        P2.1
L10:        SJMP        L10       
L90:        CLR        RI
        END

本人汇编大菜,从来没用过,因为有些东西大家也不好讲,说个大概就好,谢谢

相关帖子

沙发
billwu| | 2014-11-11 15:22 | 只看该作者
100%是反汇编出来的

使用特权

评论回复
板凳
airwill| | 2014-11-11 15:22 | 只看该作者
这是一段反汇编的代码。如果是汇编菜鸟,建议不要学汇编了,学C 吧。
程序到不是太复杂,花个半天时间应该能够搞明白来龙去脉。不过要找人跟你讲代码,恐怕要花点银子了。

使用特权

评论回复
地板
gx_huang| | 2014-11-11 15:27 | 只看该作者
你这个明显不是源文件,是HEX反汇编的代码,而且反汇编不全面。
其实MOV R7,A这些不是指令,是0XFF的空白。
你还不如直接提供HEX文件,别人反汇编比你这个更好。

使用特权

评论回复
5
车彦锋| | 2014-11-11 16:27 | 只看该作者

使用特权

评论回复
6
wang168506|  楼主 | 2014-11-11 20:46 | 只看该作者
各位大神好,我也觉得这东西不全,可是老总把这东西给我  让我看懂  我也没有办法  C语言基本上我水平还过得去,汇编完全搞不清状况

使用特权

评论回复
7
cgkdxx| | 2014-11-11 22:06 | 只看该作者
哥们,就这几句的话  你查下指令集说明  不是一会就好了   
我怕还有别的吧

使用特权

评论回复
8
yangfan19641964| | 2014-11-11 23:22 | 只看该作者
先申明一下,我从来没完全搞明白过反汇编出来的别人的程序。总是半途而废,改为了解清楚要实现的功能、目标后自己重新编写。

L1:  地址为0003H   INT0中断入口、跳转到L89

L2: 地址为000BH   T0中断入口、跳转到L91

L3: 地址为0013H   INT1中断入口;程序中未用到该中断

L4:  地址为001BH   T1中断入口;程序中未用到该中断

L5: 地址为0023H   UART终端入口、跳转到L90

L6: 地址为002BH   T2中断入口;程序中应该没有用到该中断


L6后面的看不懂。先看开机后从0000H跳转到的地方:----------

L7:        MOV        IE,#00H               关所有中断。没必要、上电复位后本来就为0
        MOV        SP,#30H                  重新设置堆栈区(开机为缺省07,从08H开始压栈放)
        MOV        R7,#3FH           疑为40H
        MOV        A,#00H
        MOV        R0,#40H
L8:        MOV        @R0,A
        INC        R0            将40H-7EH  清零
        DJNZ        R7,L8
L9:        DJNZ        R7,L9     延时256*2个机器周期
        MOV        SCON,#B0H     设置串口为方式2(多机通讯),SM2=1,第九位为1时接收有效
                              多机通讯时先向所有从机发一个寻址地址,第九位可编程位为1,所有从机收到后与本机地址比较。如相等将SM2清0,如不相符则不变。  一两句难说清,去看书
        ORL        87H,#00H       忘了,懒得查。87是PCON?  波特率不加倍(用T1时)
        MOV        TMOD,#15H      不懂,T1怎么不设成方式2.因为后面又没有用T2作为波特率时钟
        MOV        TL0,#00H
        MOV        TH0,#00H
        SETB        TR0
        CLR        ET0
        SETB        ES
        SETB        EA
        CLR        RI
        CLR        P2.1           与硬件对应
L10:        SJMP        L10        
L90:        CLR        RI
        END

使用特权

评论回复
9
yangfan19641964| | 2014-11-11 23:46 | 只看该作者
我似乎搞错了。方式2的波特率是固定的。PCON最高位为0:波特率为fosc/64;  PCON最高位为1时,波特率为fosc/32

使用特权

评论回复
10
wang168506|  楼主 | 2014-11-12 09:33 | 只看该作者
yangfan19641964 发表于 2014-11-11 23:46
我似乎搞错了。方式2的波特率是固定的。PCON最高位为0:波特率为fosc/64;  PCON最高位为1时,波特率为fosc ...

谢谢,L6不需要看懂,那是外部AD的初始化程序,需要结合实际的,看懂才奇怪,哈哈  谢啦

使用特权

评论回复
11
wang168506|  楼主 | 2014-11-12 09:35 | 只看该作者
yangfan19641964 发表于 2014-11-11 23:22
先申明一下,我从来没完全搞明白过反汇编出来的别人的程序。总是半途而废,改为了解清楚要实现的功能、目标 ...

不过有一点,我很奇怪,就是这个L0   L1   L2   L3   L4  L5 这些东西你咋看出来他是终端入口的?还有L3

使用特权

评论回复
12
wang168506|  楼主 | 2014-11-12 09:35 | 只看该作者
yangfan19641964 发表于 2014-11-11 23:22
先申明一下,我从来没完全搞明白过反汇编出来的别人的程序。总是半途而废,改为了解清楚要实现的功能、目标 ...

不过有一点,我很奇怪,就是这个L0   L1   L2   L3   L4  L5 这些东西你咋看出来他是终端入口的?还有L3

使用特权

评论回复
13
wang168506|  楼主 | 2014-11-12 09:36 | 只看该作者
wang168506 发表于 2014-11-12 09:35
不过有一点,我很奇怪,就是这个L0   L1   L2   L3   L4  L5 这些东西你咋看出来他是终端入口的?还有L3 ...

L3重复了8次的赋值指令啥意思?

使用特权

评论回复
评论
gx_huang 2014-11-12 10:43 回复TA
难道你没有看我的帖子吗?其实MOV R7,A这些不是指令,是0XFF的空白。 
14
yangfan19641964| | 2014-11-12 09:53 | 只看该作者
wang168506 发表于 2014-11-12 09:35
不过有一点,我很奇怪,就是这个L0   L1   L2   L3   L4  L5 这些东西你咋看出来他是终端入口的?还有L3 ...

51系列单片机的固有中断向量地址:

    ORG     0000H
         跳转到主程序初始化

         ORG     0003H
         跳转到INT0中断服务程序

        ORG      000BH
        跳转到T0中断服务程序

         ORG     0013H
        跳转到INT1中断服务程序

          ORG     001BH
        跳转到T1中断服务程序

           ORG     0023H
        跳转到串行收发中断服务程序

            ORG     002BH
        跳转到T2中断服务程序

每个中断向量入口预留了8个字节的地址空间。清楚了这点,再去顺下来数。

源程序应该是:
     ORG        0000H
          AJMP       START

          ORG        0003H
          LJMP       INT0_service

          ORG        000BH
          LJMP       T0_service

          ORG        0023H
          LJMP        UART_service

使用特权

评论回复
15
yangfan19641964| | 2014-11-12 09:56 | 只看该作者
wang168506 发表于 2014-11-12 09:36
L3重复了8次的赋值指令啥意思?

汇编编译时将没有用到的程序空间都填0FFH。反汇编没那么智能,给出了对应的指令

使用特权

评论回复
16
yangfan19641964| | 2014-11-12 10:08 | 只看该作者
keil在编译时好像将没用到的空间填00H,这一点与汇编是不同的。不过没有关系,对于不会用到的程序空间,填0FFH、填00H、或是填其它任意数字都是一样。

使用特权

评论回复
17
yangfan19641964| | 2014-11-12 10:10 | 只看该作者
如果是反汇编C51编写的程序,则会变成8条空指令
L3:     NOP
          NOP
          NOP
          NOP
          NOP
          NOP
          NOP
          NOP

使用特权

评论回复
18
zoouhuui| | 2014-11-12 10:50 | 只看该作者
1.没有CPU手册
2.有些跳转的标号不存在啊
3.没有外部功能电路,有些信号何时产生都不清楚
还不如自己根据功能写来的快

使用特权

评论回复
19
wang168506|  楼主 | 2014-11-12 12:27 | 只看该作者
yangfan19641964 发表于 2014-11-11 23:46
我似乎搞错了。方式2的波特率是固定的。PCON最高位为0:波特率为fosc/64;  PCON最高位为1时,波特率为fosc ...

谢谢大侠,我查资料查不到PT0是什么寄存器?能给指点一下么?还有就是L9处如何实现延时的?实在不好意思,身边懂汇编的不多,您就能者多劳吧 ;P

使用特权

评论回复
20
cgkdxx| | 2014-11-12 12:42 | 只看该作者
看看HEX有多大   不大的话不如自己写了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

811

帖子

5

粉丝