Вход на сайт
Помогите написать короткий код на ассемблере
502
NEW 21.05.13 14:29
Привет! Нужно написать код, который перевернёт биты числа! Например:
В регистре еах записано число 0x56378976. Его нужно перевернуть и записать в ebx, т.е. число 0x76893756.
Как это сделать? Уровень знаний минимальный.
Спасибо заранее :)
В регистре еах записано число 0x56378976. Его нужно перевернуть и записать в ebx, т.е. число 0x76893756.
Как это сделать? Уровень знаний минимальный.
Спасибо заранее :)
NEW 21.05.13 15:20
в ответ Малютка_Э 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 еах
все что вы сделаете в интернете может быть использовано против вас!
NEW 09.06.13 17:45
в ответ Малютка_Э 21.05.13 14:29