Doci 发表于 2016-5-14 16:42:22

初学汇编,帮忙解释一下这段汇编代码?是查表么?

RECV:        MOV        0CH,    #00H
RECV1:        MOV        DPTR,   #R_BUFFER1
                MOV        A,0CH
                ADD        A,DPL
                MOV        DPL,A
                CLR        A
                ADDC        A,DPH
                MOV        DPH,A
                MOVX        A,@DPTR
                MOV        0EH,A
                MOV        DPTR,#T_TAB
                MOV        A,0CH
                ADD        A,DPL
                MOV        DPL,A
                CLR        A
                ADDC        A,DPH
                MOV        DPH,A
                MOV        A,0EH
                MOVX        @DPTR,A
                INC        0CH
                MOV        A,0CH
                NOP
                NOP
                CJNE        A,#16,RECV1
                MOV        DPTR,#R_BUFFER2
                MOVX        A,@DPTR
                NOP
                NOP
                CJNE        A,#1,RECV2
                MOV        DPTR,#S_TAB
                NOP
                NOP
                LJMP        RECV101
RECV2:        NOP

xiaowu191 发表于 2016-5-14 17:02:22

是外部RAM,的数组复制

for(i = 0;i < 16;i ++)(XDATA)T_TAB = (XDATA)R_BUFFER1;

our2008 发表于 2016-5-14 17:05:31

for(0Ch=0; 0ch<16;0ch++)
    {T_TAB=R_BUFFER1;}
if(R_BUFFER2==1) goto RECV101;
goto RECV101;

zchong 发表于 2016-5-14 17:34:54

初中?你咋不上天呢

jxchen 发表于 2016-5-14 23:39:27

;讀取R_BUUFER1內容,與讀取T_TAB內容


RECV:         MOV      0CH,    #00H

RECV1:
                MOV      DPTR,#R_BUFFER1
                MOV      A,0CH
                ADD      A,DPL
                MOV      DPL,A
                CLR      A
                ADDC      A,DPH
                MOV      DPH,A
                MOVX      A,@DPTR
                MOV      0EH,A
                MOV      DPTR,#T_TAB
                MOV      A,0CH
                ADD      A,DPL
                MOV      DPL,A
                CLR      A
                ADDC      A,DPH
                MOV      DPH,A
                MOV      A,0EH
                MOVX      @DPTR,A
                INC      0CH
                MOV      A,0CH
                NOP
                NOP
                CJNE      A,#16,RECV1         ;比對16次完成?
                MOV      DPTR,#R_BUFFER2;已比對完成,載入R_BUFFER2
                MOVX      A,@DPTR            
                NOP
                NOP
                CJNE      A,#1,RECV2          ;比對內容是否為 1,不是跳到 RECV2
                MOV      DPTR,#S_TAB         ;是載入S_TAB
                NOP
                NOP
                LJMP                            ;跳到 RECV101
RECV2:      NOP

你給的程式片斷太少,至於查什麼程式看不出來


xuyapple 发表于 2016-5-14 23:55:49

zchong 发表于 2016-5-14 17:34
初中?你咋不上天呢

楼主是初学汇编,不是初中。。。

klxx68 发表于 2016-5-15 07:39:58

确实很想问下,为什么要学汇编?

kebaojun305 发表于 2016-5-15 09:11:06

klxx68 发表于 2016-5-15 07:39
确实很想问下,为什么要学汇编?

你以为所有的芯片都有c编译器啊。{:titter:}

zchong 发表于 2016-5-15 11:41:13

xuyapple 发表于 2016-5-14 23:55
楼主是初学汇编,不是初中。。。

我道歉,{:shy:} {:shy:}

face9 发表于 2016-5-15 15:57:14

初中生又搞出无人机了,还是超音波避障的!

klxx68 发表于 2016-5-16 11:49:46

kebaojun305 发表于 2016-5-15 09:11
你以为所有的芯片都有c编译器啊。

确实没有深入调查,一直认为没有C编译器支持的芯片要不被淘汰要不就是加入C大家庭,是大势所趋。另外现在芯片种类厂家这么多,可选择替代方案,有必要为了某一种芯片专门去学汇编吗?

GoingDown 发表于 2016-5-16 13:45:41

本帖最后由 GoingDown 于 2016-5-16 14:03 编辑

for(int i=0;i<16;i++)
{
   T_TAB=R_BUFFER1;
}

if(*R_BUFFER2== 1)
{
    DPTR=&S_TAB;
    RECV101();
}
else
{
//RECV2的内容
......
}

kebaojun305 发表于 2016-5-16 15:38:36

klxx68 发表于 2016-5-16 11:49
确实没有深入调查,一直认为没有C编译器支持的芯片要不被淘汰要不就是加入C大家庭,是大势所趋。另外现在 ...

不用专门去学啊,汇编都通用的 只是助记符 有分别,打印个指令表,直接就开工了。 不在乎成本的是可以选带C编译器的。

klxx68 发表于 2016-5-16 16:29:47

kebaojun305 发表于 2016-5-16 15:38
不用专门去学啊,汇编都通用的 只是助记符 有分别,打印个指令表,直接就开工了。 不在乎成本的是可以选 ...

汇编不通用吧,不同架构的处理器。

lxa0 发表于 2016-6-15 19:51:37

看见51汇编感觉真亲切~~~~~~~~~~~~~~我用的就是51汇编
页: [1]
查看完整版本: 初学汇编,帮忙解释一下这段汇编代码?是查表么?