Advertisement
Guest User

Untitled

a guest
May 27th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.01 KB | None | 0 0
  1. int main(int argc, char **argv) {
  2.     system("chcp 1251");
  3.  
  4.     short count = 0, _count = 0;
  5.     short x = -127, y = -127;
  6.     short x200 = 0, y200 = 0, _x200 = 0, _y200 = 0;
  7.  
  8.     _asm {
  9.     start:                 // Метка начала
  10.  
  11.         mov ax, x;        // Перемещаем ячейку памяти "x" в регистр "ax"
  12.         cmp ax, 128;      // Сравневем "ax" с 128
  13.         je finish;         // Если сравнение истинно, то переходим к метке "finish" , т.е. завершаем вставку
  14.  
  15.         add ax, y;        // Складываем значение "y" с "ax", т.е "x+y=eax"
  16.         cmp ax, 80;       // Сравниваем "ax" с 80
  17.         jne loopY;         // Если сравнение сложно, то переходим к метке "loopY"
  18.  
  19.         inc count;         // Инкрементируем счётчик "count"
  20.         mov ax, x;        // Перемещаем ячейку памяти "x" в регистр "eax"
  21.         mov bx, y;        // Перемещаем ячейку памяти "y" в регистр "ebx"
  22.         cmp count, 100;    // Сравниваем счётчик "count" с 200
  23.         jne loopY;         // Если сравнение ложно, переходим к метке "loopY"
  24.         mov x200, ax;     // Иначе перемещаем значение регистра "ax" в ячейку памяти "x200"
  25.         mov y200, bx;     // ... перемещаем значение регистра "bx" в ячейку памяти "y200"
  26.         jmp loopY;         // Безусловный переход к метке "loopY"
  27.  
  28.     loopY:                 // Вложенный цикл
  29.         inc y;             // Инкрементируем значение "y"
  30.         cmp y, 128;        // Сравниваем его с 128, т.е. крайним значением цикла
  31.         jne start;         // Если сравнение ложно, переходим к метке "start", т.е. начинаем сначала
  32.         jmp loopX;         // Иначе безусловный переход к метке "loopX"
  33.  
  34.     loopX:                 // Главный цикл
  35.         inc x;             // Инкрементируем значение "x"
  36.         mov y, -127;       // Возвращаем к "y" начальному значению "-127"
  37.         jmp start;         // Безусловный переход к метке "start", т.е. к началу
  38.  
  39.     finish:                // Метка конца
  40.     }
  41.  
  42.     /*Вывод результатов*/
  43.     printf("\nКоличество пар: %d\n", count);
  44.     ((x200 == 0) && (y200 == 0)) ?
  45.         printf("Искомых пар меньше двух сотен") : printf("200-ая пара: (%d,%d)", x200, y200);
  46.  
  47.     /*Проверка на языке высокого уровня*/
  48.     int i, j;
  49.     for (i = -127; i < 128; i++)
  50.         for (j = -127; j < 128; j++) {
  51.             if (i + j == 80 && ++_count == 100) {
  52.                 _x200 = i;
  53.                 _y200 = j;
  54.             }
  55.         }
  56.  
  57.     /*Вывод проверки*/
  58.     (count == _count) ? printf("\n\nПроверка выполнена. Количество пар: %d\n", _count) : printf("\n\nПроверка не выполнена. Количество пар: %d\n", _count);
  59.     ((x200 == _x200) && (y200 == _y200)) ?
  60.         (((_x200 == 0) && (_y200 == 0)) ?
  61.             printf("Проверка выполнена. Искомых пар меньше двух сотен") : printf("Проверка выполнена. 200-ая пара: (%d,%d)", _x200, _y200)) :
  62.             (((_x200 == 0) && (_y200 == 0)) ?
  63.                 printf("Проверка не выполнена. Искомых пар меньше двух сотен") : printf("Проверка не выполнена. 200-ая пара: (%d,%d)", _x200, _y200));
  64.  
  65.     printf("\n\nПуть: %s\n", *argv);
  66.     system("pause");
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement