Advertisement
mamamaria

ass3test

Feb 10th, 2021
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. // AssTest2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7.  
  8. int main()
  9. {
  10.     const int H = 5; const int W = 7; const int h = 3;
  11.     /*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};*/
  12.     int mas[] = { 559592514, 0 };
  13.    
  14.     int j; int i;
  15.    
  16.     bool checkl=false; int countr = 0; int gcountr = 0;
  17.  
  18.     __asm {
  19.         lea esi, mas //сохраняем массив
  20.         //for (int j = 0 ...
  21.         mov ebx, 0 //инициализация j
  22.         mov j, ebx //сохраняем текщуий j
  23.  
  24.             A: //внутренности for (int j = 0; j < W; j++) {
  25.             mov ecx, 0 // инициализация i
  26.             mov i, ecx //сохраняем текущий i
  27.  
  28.                 B: //внутренности for (int i = 0; i < H; ) {
  29.                 //начинается if ((i != 0)  && (mas[(i - 1)*W+j] == 0)) {
  30.                 mov ecx, i //сохранили в ecx текущий i
  31.                 cmp ecx,0 //if ((i != 0)
  32.                 je B_IF //если не равно нулю, выходит из if-а
  33.                 //сейчас будем считать индекс для mas[(i - 1)*W+j]
  34.                 dec ecx //(i-1)
  35.                 mov eax, W //сохраняем W в регистр для умножения
  36.                 mul ecx // (i - 1)*W
  37.                 add ecx,j //(i - 1)*W+j
  38.                
  39.                 mov eax, ecx //5 ПРИКОЛЬНЫХ ИНСТРУКЦИЙ
  40.                 and eax, 31
  41.                 sar ecx, 5
  42.                 bt[esi + ecx * 4], eax
  43.                 jc B_IF
  44.  
  45.  
  46.  
  47.  
  48.                
  49.  
  50.  
  51.                 B_IF//конец первого if-a (под меткой B)
  52.  
  53.  
  54.             mov ecx, i //возвращаем текщий i
  55.             cmp ecx, H
  56.             JNE B
  57.  
  58.         mov ebx, j //возвращаем текщий j
  59.         inc ebx //j++
  60.         mov j, ebx //сохраняем увеличенный j
  61.         cmp ebx, W // j<W
  62.         jne A // если != W, повторяется
  63.  
  64.     }
  65.  
  66.    
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement