Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //4-батовое поле посчитать количество 1
- #include <ctime>
- using namespace std;
- //На вход программы случайная строка, состоящая из n бит.Написать программу, вычисляющую оценку вероятности того,
- //что в этой строке есть точно две одинаковых непересекающихся подстроки длины m;
- const int n = 15; const int m = 4;
- void genStr(int mas[], int l) {
- for (int i = 0; i < l; i++)
- mas[i] = rand() % 2;
- }
- void output(int str[], int l) {
- for (int i = 0; i < l; i++) {
- cout << str[i];
- }
- }
- int main()
- {
- /*srand(time(NULL));*/
- int str[n]; int subs[m];
- bool check = true; int counter = 0, gcounter = 0; double GK = 0; int N = 1000000;
- int k=0; int i=0; int j=0;
- __asm {
- lea esi, str //вбрасываем массив str
- lea edi, sub // subs
- FOR_K:
- //внутренности for (int k = 0; k < N; k++) {
- FOR_S:
- //for (int s = 0; s < n; s++) - генерация элементов массива str
- call rand//call rand;
- and eax,1//%2
- mov edx, ecx
- mov ebx, ecx //5 ПРИКОЛЬНЫХ ИНСТРУКЦИЙ
- and ebx, 31
- sar edx, 5
- cmp eax, 1
- jne skip1S
- bts[esi + edx * 4], ebx
- jmp skip2S
- skip1S:
- btr[esi + edx * 4], ebx
- skip2S:
- inc s //s++
- mov ecx, s //для cmp сохраняем s в ecx
- cmp ecx, n // сравниваем с n
- jne FOR_S // если не равно n, повторяет все внутри FOR_S:
- FOR_T :
- //for (int s = 0; s < n; s++) - генерация элементов массива str
- call rand//call rand;
- and eax, 1//%2
- mov edx, ecx
- mov ebx, ecx //5 ПРИКОЛЬНЫХ ИНСТРУКЦИЙ
- and ebx, 31
- sar edx, 5
- cmp eax, 1
- jne skip1T
- bts[esi + edx * 4], ebx
- jmp skip2T
- skip1T :
- btr[esi + edx * 4], ebx
- skip2T :
- inc t //s++
- mov ecx, t //для cmp сохраняем s в ecx
- cmp ecx, m // сравниваем с n
- jne FOR_S // если не равно n, повторяет все внутри FOR_S:
- inc k //k++
- mov ecx,k //для cmp сохраняем k в ecx
- cmp ecx,N // сравниваем с N
- jne FOR_K //если не равно N, повторяет все внутри FOR_K:
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement