Ошибки в ассемблерной вставке - C (СИ)
Формулировка задачи:
в 24 и 25 строке ругается, что недопустимое число операторов
Листинг программы
- #include "iostream"
- #include "windows.h"
- #include "stdlib.h"
- #include <stdio.h>
- /*На промежутке от 1 до 100 000
- Подсчитать количество таких чисел X, что (Х+X-2) - делится на 3 без остатка*/
- int main()
- {
- short int x=0,ko=0;
- int k = 0, l = 0;
- _asm
- {
- mov di,3
- mov si,2
- mov cx, 100000
- t1:
- mov bx, cx
- mov cx, 100000
- t2:
- mov ax,cx
- add bx
- sub si
- div di
- cmp dx, 1
- jne m1
- inc ko
- cmp ko, 200
- je m2
- m1 :
- loop t2
- mov cx, bx
- loop t1
- jmp e
- m2 :
- mov x, bx
- je m1
- e :
- }
- for (int i=0; i<=100000;i++)
- {
- if ((i+i-2)%3==0)
- {
- k++;
- if (k == 200)
- {
- l = i;
- }
- };
- }
- printf("Proverka na C++:\n");
- printf("k=%d\n",k);
- if (k < 200) printf("Chisel menshe dvuhsot");
- else printf("Dvuhsotoe chislo=%d\n", l);
- system("pause");
- return 0;
- }
Решение задачи: «Ошибки в ассемблерной вставке»
textual
Листинг программы
- mov ax,cx
- add ax,bx
- sub ax,si
- div di
- cmp ax, 1
Объяснение кода листинга программы
mov ax,cx
- Перемещение значения регистра cx в регистр axadd ax,bx
- Добавление значения регистра bx к значению регистра axsub ax,si
- Вычитание значения регистра si из значения регистра axdiv di
- Деление значения регистра ax на значение регистра dicmp ax, 1
- Сравнение значения регистра ax с 1 Данный код выполняет последовательность операций над регистрами процессора, где ax используется как промежуточный регистр для выполнения операций сложения, вычитания и деления, а cx, bx и di используются как исходные и конечные значения для этих операций. Регистр si, по-видимому, используется как временная переменная в операции вычитания, а регистра dx в коде нет. Также в коде отсутствует какая-либо обработка ошибок или контроль за состоянием флагов регистра flags, что может привести к неопределенному поведению при делении на ноль или при выполнении операции вычитания с отрицательным значением.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д