注册 登录
编程论坛 汇编论坛

新手求教,将此C语言翻译成汇编。

爱问小静 发布于 2012-04-27 22:31, 854 次点击
各位论坛大神,帮个忙。这一点地方完全不能理解。我计算机大一新生,以前完全没有接触过这些。这一点程序搞了一天了,都没有弄出来。求好心的大神帮忙翻译一下,如果有讲解就更好了。几个字,几句话也成。谢谢各位大神了!

void GenCRC(char *data,char *crc,int len)
{
     int bitlen,hbit;
     char buf[100];

     memcpy(buf,data,len);      buf[len]=buf[len+1]=0;  len+=2;
     for(bitlen=len*8;bitlen>16;bitlen--)
     {
         hbit=buf[0] & 0x80;
         LShift(buf,len);
         if(hbit)
         {
             buf[0]^=0x80;      buf[1]^=0x05;
         }
     }
     
     memcpy(crc,buf,2);
}
8 回复
#2
zjsxwc2012-04-27 23:30
二进制数据转c r c 码,楼主想问什么?
#3
爱问小静2012-04-28 12:27
hbit=buf[0] & 0x80这句什么意思啊,没接触过crc码啊,就给出了c让我们翻译
#4
爱问小静2012-04-28 12:32
回复 2楼 zjsxwc
没接触过crc啊,就直接让我们翻译成汇编, hbit=buf[0] & 0x80,这句什么意思啊
#5
zklhp2012-04-28 12:41
以下是引用爱问小静在2012-4-28 12:32:52的发言:

没接触过crc啊,就直接让我们翻译成汇编, hbit=buf[0] & 0x80,这句什么意思啊

看不懂说明C语言学的不行

貌似是作业罢 这个我不管的。。

关于这个 请翻阅C语言逻辑运算部分。。
#6
pklpklong0072012-04-28 14:00
LShift    proc     buf,len
            pushad
            local    newhbit
            local    oldhbit
            local    i
            mov        esi,buf
            mov        al,byte ptr [esi]
            movzx    ax,al
            div        80h            ;16位除法,al存商,ah存余数
            movzx    eax,al
            mov        oldbit,eax
            mov        ecx,len
            mov        esi,ecx
            dec        esi
for:
            mov        al,byte ptr [esi]
            movzx    ax,al
            div        80h
            movzx    eax,al
            mov        newhbit,eax
            shl        al,1
            movzx    eax,al
            xor        eax,oldhbit
            mov        [esi],al
            mov        eax,oldhbit
            mov        newhbit,eax
            dec        esi
            loop    for
            
            popad
LShift    endp

希望正确,大家指点一下吧
#7
bingghost2012-04-28 16:23
下断点   查看反汇编窗口  
okay   汇编代码就出来了  嘿嘿  
#8
Alar302012-05-01 16:39
LS的太邪恶了……
#9
于祥2012-05-01 17:11
回复 7楼 bingghost
给力!
1