请教汇编 达人 51汇编转C

[复制链接]
1944|11
 楼主| itelectron 发表于 2014-3-4 22:20 | 显示全部楼层 |阅读模式
本帖最后由 itelectron 于 2014-3-5 10:41 编辑

        MOV  A,31H                                       
        XRL  A,41H                        
        JNZ  LOOP   //A=1跳转LOOP                       
        MOV  A,30H                                                   
        XRL  A,40H                        

LOOP:   JZ   LOOP2  //A=0跳转LOOP2                                    
        MOV  40,30H                                                   
        MOV  41,31H                        
LOOP2:  SETB P1_0        
=========================================
        MOV  A,31H                                       
        XRL  A,41H                        
        JNZ  LOOP  //A=1跳转LOOP                       
        MOV  A,30H                                                   
        XRL  A,40H                        

        JZ   LOOP2 //A=0跳转LOOP2                                       
LOOP:   MOV  40,30H                                                   
        MOV  41,31H                        
LOOP2:  SETB P1_0
创隆电子 发表于 2014-3-4 22:22 | 显示全部楼层
不一样
创隆电子 发表于 2014-3-4 22:23 | 显示全部楼层
如果有跳到LOOP的语句,那坑底不一样的
yewuyi 发表于 2014-3-4 23:49 | 显示全部楼层
当然不一样
 楼主| itelectron 发表于 2014-3-5 08:18 | 显示全部楼层
创隆电子 发表于 2014-3-4 22:22
不一样

就只有这么点程序
我 感觉结果是 一样的
 楼主| itelectron 发表于 2014-3-5 08:30 | 显示全部楼层
本帖最后由 itelectron 于 2014-3-6 18:32 编辑

   第2段用C语言方便实现/第1段就不知道了 。   :(   

        MOV  A,31H
        XRL  A,41H   
        JNZ  LOOP
        MOV  A,30H
        XRL  A,40H

        JZ   LOOP2
LOOP:   MOV  40,30H   
        MOV  41,31H     
LOOP2:  SETB P1_0  
=======================

sfr   P1     = 0x90;
unsigned char  data Ram30 _at_ 0x30;
unsigned char  data Ram31 _at_ 0x31;
unsigned char  data Ram40 _at_ 0x40;
unsigned char  data Ram41 _at_ 0x41;

void fun()
{
  if((Ram31^Ram41)||(Ram30^Ram40))
  {
   Ram40=Ram30;
   Ram41=Ram31;
  }        
  P1=1;
}

 楼主| itelectron 发表于 2014-3-5 22:47 | 显示全部楼层

        MOV  A,31H                                       
        XRL  A,41H                        
        JNZ  LOOP   //A=1跳转LOOP                       
        MOV  A,30H                                                   
        XRL  A,40H                        

LOOP:   JZ   LOOP2  //A=0跳转LOOP2                                    
        MOV  40,30H                                                   
        MOV  41,31H                        
LOOP2:  SETB P1_0
====================================
请教这段如何用C实现
cjseng 发表于 2014-3-6 00:02 | 显示全部楼层
itelectron 发表于 2014-3-5 22:47
MOV  A,31H                                       
        XRL  A,41H                       ...

if((ram31^ram41)!=0)
{
ram40=ram30;
ram41=ram31;
}

else
{
if((ram30^ram40)!=0)
{
  ram40=ram30;
  ram41=ram31;
}
}

P1|=0x01;
 楼主| itelectron 发表于 2014-3-6 18:40 | 显示全部楼层
本帖最后由 itelectron 于 2014-3-6 18:43 编辑

            MOV      A,Ram31(0x31)
            XRL      A,Ram41(0x41)
            JZ       C:000B
            SJMP     C:0011
C:0x000B    MOV      A,Ram30(0x30)
            XRL      A,Ram40(0x40)
            JZ       C:0017
C:0x0011    MOV      Ram40(0x40),Ram30(0x30)
            MOV      Ram41(0x41),Ram31(0x31)
C:0x0017    ORL      P1(0x90),#0x01
            RET   
================
楼上的 反汇编 /感觉还 是 不一样
 楼主| itelectron 发表于 2014-3-9 08:28 | 显示全部楼层
    MOV  A,31H                                       
        XRL  A,41H                        
        JNZ  LOOP   //A=1跳转LOOP                       
        MOV  A,30H                                                   
        XRL  A,40H                        

LOOP:   JZ   LOOP2  //A=0跳转LOOP2                                    
        MOV  40,30H                                                   
        MOV  41,31H                        
LOOP2:  SETB P1_0
====================================
请教这段如何用C实现
ningling_21 发表于 2014-3-9 08:57 | 显示全部楼层
ACC=Ram31;
ACC=ACC^Ram41;
if(ACC!=0)
{
   goto loop;
}
else
{
   ACC=Ram30;
   ACC=ACC^Ram40;
loop:if(ACC==0)
   {
      goto loop2;
      Ram40=Ram30;
      Ram41=Ram31;
   }
}

loop2: P1_1 =1;
明月小厨 发表于 2014-3-9 19:59 | 显示全部楼层
MOV  A,31H                                       
XRL  A,41H                        
JNZ  LOOP   //A=1跳转LOOP ;

这前二句是废话,直接优化掉了;      
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:MARK: zhi kan ji shu

274

主题

2761

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部