Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // AssTest2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #include <iostream>
- using namespace std;
- int main()
- {
- const int H = 5; const int W = 7; const int h = 3;
- /*bool mas[] = {0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,0, 1, 0, 1, 0, 1, 1,0, 1, 0, 1, 0, 0, 0,0, 1, 0, 0, 0, 0, 0};*/
- int mas[] = { 559592514, 0 };
- int j; int i;
- bool checkl=false; int countr = 0; int gcountr = 0;
- __asm {
- lea esi, mas //сохраняем массив
- //for (int j = 0 ...
- mov ebx, 0 //инициализация j
- mov j, ebx //сохраняем текщуий j
- A: //внутренности for (int j = 0; j < W; j++) {
- mov ecx, 0 // инициализация i
- mov i, ecx //сохраняем текущий i
- B: //внутренности for (int i = 0; i < H; ) {
- //начинается if ((i != 0) && (mas[(i - 1)*W+j] == 0)) {
- mov ecx, i //сохранили в ecx текущий i
- cmp ecx,0 //if ((i != 0)
- je B_IF //если не равно нулю, выходит из if-а
- //сейчас будем считать индекс для mas[(i - 1)*W+j]
- dec ecx //(i-1)
- mov eax, W //сохраняем W в регистр для умножения
- mul ecx // (i - 1)*W
- add ecx,j //(i - 1)*W+j
- mov eax, ecx //5 ПРИКОЛЬНЫХ ИНСТРУКЦИЙ
- and eax, 31
- sar ecx, 5
- bt[esi + ecx * 4], eax
- jc B_IF
- B_IF//конец первого if-a (под меткой B)
- mov ecx, i //возвращаем текщий i
- cmp ecx, H
- JNE B
- mov ebx, j //возвращаем текщий j
- inc ebx //j++
- mov j, ebx //сохраняем увеличенный j
- cmp ebx, W // j<W
- jne A // если != W, повторяется
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement