Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main(int argc, char **argv) {
- system("chcp 1251");
- short count = 0, _count = 0;
- short x = -127, y = -127;
- short x200 = 0, y200 = 0, _x200 = 0, _y200 = 0;
- _asm {
- start: // Метка начала
- mov ax, x; // Перемещаем ячейку памяти "x" в регистр "ax"
- cmp ax, 128; // Сравневем "ax" с 128
- je finish; // Если сравнение истинно, то переходим к метке "finish" , т.е. завершаем вставку
- add ax, y; // Складываем значение "y" с "ax", т.е "x+y=eax"
- cmp ax, 80; // Сравниваем "ax" с 80
- jne loopY; // Если сравнение сложно, то переходим к метке "loopY"
- inc count; // Инкрементируем счётчик "count"
- mov ax, x; // Перемещаем ячейку памяти "x" в регистр "eax"
- mov bx, y; // Перемещаем ячейку памяти "y" в регистр "ebx"
- cmp count, 100; // Сравниваем счётчик "count" с 200
- jne loopY; // Если сравнение ложно, переходим к метке "loopY"
- mov x200, ax; // Иначе перемещаем значение регистра "ax" в ячейку памяти "x200"
- mov y200, bx; // ... перемещаем значение регистра "bx" в ячейку памяти "y200"
- jmp loopY; // Безусловный переход к метке "loopY"
- loopY: // Вложенный цикл
- inc y; // Инкрементируем значение "y"
- cmp y, 128; // Сравниваем его с 128, т.е. крайним значением цикла
- jne start; // Если сравнение ложно, переходим к метке "start", т.е. начинаем сначала
- jmp loopX; // Иначе безусловный переход к метке "loopX"
- loopX: // Главный цикл
- inc x; // Инкрементируем значение "x"
- mov y, -127; // Возвращаем к "y" начальному значению "-127"
- jmp start; // Безусловный переход к метке "start", т.е. к началу
- finish: // Метка конца
- }
- /*Вывод результатов*/
- printf("\nКоличество пар: %d\n", count);
- ((x200 == 0) && (y200 == 0)) ?
- printf("Искомых пар меньше двух сотен") : printf("200-ая пара: (%d,%d)", x200, y200);
- /*Проверка на языке высокого уровня*/
- int i, j;
- for (i = -127; i < 128; i++)
- for (j = -127; j < 128; j++) {
- if (i + j == 80 && ++_count == 100) {
- _x200 = i;
- _y200 = j;
- }
- }
- /*Вывод проверки*/
- (count == _count) ? printf("\n\nПроверка выполнена. Количество пар: %d\n", _count) : printf("\n\nПроверка не выполнена. Количество пар: %d\n", _count);
- ((x200 == _x200) && (y200 == _y200)) ?
- (((_x200 == 0) && (_y200 == 0)) ?
- printf("Проверка выполнена. Искомых пар меньше двух сотен") : printf("Проверка выполнена. 200-ая пара: (%d,%d)", _x200, _y200)) :
- (((_x200 == 0) && (_y200 == 0)) ?
- printf("Проверка не выполнена. Искомых пар меньше двух сотен") : printf("Проверка не выполнена. 200-ая пара: (%d,%d)", _x200, _y200));
- printf("\n\nПуть: %s\n", *argv);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement