2

不適切なオペランド型とはどういう意味ですか?

一部の C++ コードをアセンブラーに変換しようとしています

     temp_char = OChar[i]         //temp_char is a character and OChar is array and i is the index

私はもう試した

     mov eax, i
     mov temp_char, [eax+OChar]

そしてまた

     mov eax, i
     movsx temp_char, [eax+OChar]

不適切なオペランド型を回避する方法を誰かが説明できますか?

これは完全なコードです

                  char temp_char;                       
                   int i;

   __asm{       

            mov i,0
            jmp checkend

     startfor:      mov eax,i   
            add eax,1
            mov i,eax



   checkend:        cmp i,length    
            jge endloop     
            movsx   temp_char, [eax+OChars] 

            //encryption of string//
            push eax                
            and eax,0xAA            
            not al                  
            mov edx,eax             
            pop eax                 
            and eax,0x55            

            xor ecx,edx             
            xor ecx,eax             
            rol cl,2                

            sub al,0x20
                            pop ebp                             

            //end of encryption//
            movsx   [eax+EChars], temp_char 
            jmp startfor        
   endloop:     ret

}   
4

1 に答える 1

5

x86では、メモリからメモリに直接移動することはできません-レジスタを通過する必要があります-次の行に沿って:

 mov eax, i
 mov bx, word ptr [eax+OChar]
 mov temp_char, bx
于 2013-05-06T20:30:51.560 に答える