Login
Помогите написать короткий код на ассемблере
502 просмотров
Перейти к просмотру всей ветки
in Antwort Малютка_Э 21.05.13 14:29
о каком ассемблере какого процессора идет речь? в зависимости от этого может быть тысячи решений.
в общем я бы сначала сохранил бы содержание исходного регистра в стеке, и очистил бы выходной регистр,
а потом сделал бы цикл в котором данные копировались бы в промежуточный регистер очищались бы все биты кроме верхних 8и
оператор "или" на выходной регистр и смещение входного и выходного регистра на 8 бит на лево и на право... и так четыре раза
PUSH eax
MOV COUNTER, #0x00000004 // counter = 4;
CLR ebx // ebx=0;
Begin:
MOV TMP, еах // tmp=eax;
AND TMP, #0xFF000000 // tmp &= 0xff000000;
OR ebx, TMP // ebx |= tmp;
DEC COUNTER, #0x00000001 // counter-- ;
JUMPIFZERO End // if (counter==0 ) End;
SHL eax, 8 // eax = eax <<8;
SHR ebx, 8 // ebx = ebx >>8;
JUMP Begin // Begin:
End: POP еах
в общем я бы сначала сохранил бы содержание исходного регистра в стеке, и очистил бы выходной регистр,
а потом сделал бы цикл в котором данные копировались бы в промежуточный регистер очищались бы все биты кроме верхних 8и
оператор "или" на выходной регистр и смещение входного и выходного регистра на 8 бит на лево и на право... и так четыре раза
PUSH eax
MOV COUNTER, #0x00000004 // counter = 4;
CLR ebx // ebx=0;
Begin:
MOV TMP, еах // tmp=eax;
AND TMP, #0xFF000000 // tmp &= 0xff000000;
OR ebx, TMP // ebx |= tmp;
DEC COUNTER, #0x00000001 // counter-- ;
JUMPIFZERO End // if (counter==0 ) End;
SHL eax, 8 // eax = eax <<8;
SHR ebx, 8 // ebx = ebx >>8;
JUMP Begin // Begin:
End: POP еах
все что вы сделаете в интернете может быть использовано против вас!