Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int main()
- {
- const int N = 3;
- int mas[] = { 0,1,1,0,1,0,0,1 };
- int pow = 1; bool check = true; int i; int halfpow = 0; int checkss = 0;
- /*pow <<= N;
- for (i = 0; i < pow / 2; i++) {
- if (mas[i] != mas[(pow - 1) - i]) check = true;
- else check = false;
- if (check == false) {
- cout << "no";
- break;
- }
- }
- if (check == true) cout << "yas";*/
- __asm {
- lea esi, mas //закидываем массив
- mov pow, 1 //создаем pow
- mov ebx, pow //закидываем pow в регистр
- mov ecx, N //в Cl кладем N
- sal ebx, cl //Побитово сдвигаем влево (эквивалент возвездения в степень)
- mov pow, ebx //обновляем pow
- mov i, 0 //i=0
- //for (i = 0; i < pow / 2; i++) {
- FOR_I: //пошло тело цикла
- mov eax, i //5 ПРИКОЛЬНЫХ ИНСТРУКЦИЙ
- mov ebx, i //mas[i]
- and eax, 31
- sar ebx, 5
- bt[esi + ebx * 4], eax
- setc ch
- mov eax, pow //(pow - 1) - i]
- dec eax
- sub eax, i
- mov ebx, eax
- and eax, 31 // mas[(pow - 1) - i])
- sar ebx, 5
- bt[esi + ebx * 4], eax
- setc cl
- cmp ch, cl //полученные значения регистров сравниваем
- je ELSE //если не равно, то идем в else
- mov checkss,1
- ELSE: //else check = false;
- mov checkss, 0
- inc i //i++
- mov ebx, pow
- sar ebx, 1 //pow/2
- cmp i, ebx //сравниваем i и pow/2
- jge FOR_I //если больше либо равно, то заканчиваем
- }
- cout << checkss;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement