Necesito convertir el siguiente código de ensamblaje PIC (a continuación) en un ensamblaje 8051. Es un código de ensamblaje en línea. En realidad, tengo la intención de convertirlo a C. No estoy familiarizado con el MCU PIC, por lo que no entiendo mucho de lo que sucede. Si puedo comprender cada instrucción, intentaré ingresar el ensamblaje equivalente. O mejor aún, apreciaré si puedo obtener un código de ensamblaje 8051 equivalente. "toRotate" es una variable de 32 bits. Gracias
_asm
movlb toRotate
bcf STATUS,0,0
btfsc toRotate+3,7,1
bsf STATUS,0,0
rlcf toRotate+0,1,1
rlcf toRotate+1,1,1
rlcf toRotate+2,1,1
rlcf toRotate+3,1,1
_endasm
Este es el código completo a continuación ... Realmente quiero saber qué se hace aquí. Mi intención es convertirlo en lenguaje C.
DWORD leftRotateDWORD(DWORD val, BYTE bits)
{
BYTE i, t;
DWORD_VAL toRotate;
toRotate.Val = val;
for(i = bits; i >= 8u; i -= 8)
{
t = toRotate.v[3];
toRotate.v[3] = toRotate.v[2];
toRotate.v[2] = toRotate.v[1];
toRotate.v[1] = toRotate.v[0];
toRotate.v[0] = t;
}
for(; i != 0u; i--)
{
_asm
movlb toRotate
bcf STATUS,0,0
btfsc toRotate+3,7,1
bsf STATUS,0,0
rlcf toRotate+0,1,1
rlcf toRotate+1,1,1
rlcf toRotate+2,1,1
rlcf toRotate+3,1,1
_endasm
}
return toRotate.Val;
}