Advertisement
mamamaria

BIT+ASS3

Feb 11th, 2021
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.89 KB | None | 0 0
  1. #include <iostream>
  2. //4-батовое поле посчитать количество 1
  3. #include <ctime>
  4. using namespace std;
  5. //На вход программы случайная строка, состоящая из n бит.Написать программу, вычисляющую оценку вероятности того,
  6. //что в этой строке есть точно две одинаковых непересекающихся подстроки длины m;
  7.  
  8. const int n = 15; const int m = 4;
  9.  
  10. void genStr(int mas[], int l) {
  11.     for (int i = 0; i < l; i++)
  12.         mas[i] = rand() % 2;
  13. }
  14. void output(int str[], int l) {
  15.     for (int i = 0; i < l; i++) {
  16.         cout << str[i];
  17.     }
  18. }
  19.  
  20. int main()
  21. {
  22.  
  23.     /*srand(time(NULL));*/
  24.     int str[n]; int subs[m];
  25.     bool check = true; int counter = 0, gcounter = 0; double GK = 0; int N = 1000000;
  26.     int k=0; int i=0; int j=0;
  27.     __asm {
  28.         lea esi, str //вбрасываем массив str
  29.         lea edi, sub // subs
  30.        
  31.         FOR_K:
  32.         //внутренности for (int k = 0; k < N; k++) {
  33.             FOR_S:
  34.  
  35.             //for (int s = 0; s < n; s++) - генерация элементов массива str
  36.             call rand//call rand;
  37.             and eax,1//%2
  38.  
  39.             mov edx, ecx
  40.             mov ebx, ecx //5 ПРИКОЛЬНЫХ ИНСТРУКЦИЙ
  41.             and ebx, 31
  42.             sar edx, 5
  43.             cmp eax, 1
  44.  
  45.             jne skip1S
  46.             bts[esi + edx * 4], ebx
  47.             jmp skip2S
  48.                 skip1S:
  49.             btr[esi + edx * 4], ebx
  50.                 skip2S:
  51.  
  52.             inc s //s++
  53.             mov ecx, s //для cmp сохраняем s в ecx
  54.             cmp ecx, n // сравниваем с n
  55.             jne FOR_S // если не равно n, повторяет все внутри FOR_S:
  56.            
  57.             FOR_T :
  58.  
  59.             //for (int s = 0; s < n; s++) - генерация элементов массива str
  60.             call rand//call rand;
  61.             and eax, 1//%2
  62.  
  63.             mov edx, ecx
  64.             mov ebx, ecx //5 ПРИКОЛЬНЫХ ИНСТРУКЦИЙ
  65.             and ebx, 31
  66.             sar edx, 5
  67.             cmp eax, 1
  68.  
  69.             jne skip1T
  70.             bts[esi + edx * 4], ebx
  71.             jmp skip2T
  72.             skip1T :
  73.             btr[esi + edx * 4], ebx
  74.             skip2T :
  75.  
  76.             inc t //s++
  77.             mov ecx, t //для cmp сохраняем s в ecx
  78.             cmp ecx, m // сравниваем с n
  79.             jne FOR_S // если не равно n, повторяет все внутри FOR_S:
  80.  
  81.            
  82.         inc k //k++
  83.         mov ecx,k //для cmp сохраняем k в ecx
  84.         cmp ecx,N // сравниваем с N
  85.         jne FOR_K //если не равно N, повторяет все внутри FOR_K:
  86.  
  87.        
  88.     }
  89.  
  90.  
  91. }
  92.  
  93.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement