Ошибки в ассемблерной вставке - C (СИ)

Узнай цену своей работы

Формулировка задачи:

в 24 и 25 строке ругается, что недопустимое число операторов
Листинг программы
  1. #include "iostream"
  2. #include "windows.h"
  3. #include "stdlib.h"
  4. #include <stdio.h>
  5. /*На промежутке от 1 до 100 000
  6. Подсчитать количество таких чисел X, что (Х+X-2) - делится на 3 без остатка*/
  7. int main()
  8. {
  9. short int x=0,ko=0;
  10. int k = 0, l = 0;
  11. _asm
  12. {
  13. mov di,3
  14. mov si,2
  15. mov cx, 100000
  16. t1:
  17. mov bx, cx
  18. mov cx, 100000
  19. t2:
  20. mov ax,cx
  21. add bx
  22. sub si
  23. div di
  24. cmp dx, 1
  25. jne m1
  26. inc ko
  27. cmp ko, 200
  28. je m2
  29. m1 :
  30. loop t2
  31. mov cx, bx
  32. loop t1
  33. jmp e
  34. m2 :
  35. mov x, bx
  36. je m1
  37. e :
  38. }
  39.  
  40. for (int i=0; i<=100000;i++)
  41. {
  42. if ((i+i-2)%3==0)
  43. {
  44. k++;
  45. if (k == 200)
  46. {
  47. l = i;
  48. }
  49. };
  50. }
  51. printf("Proverka na C++:\n");
  52. printf("k=%d\n",k);
  53. if (k < 200) printf("Chisel menshe dvuhsot");
  54. else printf("Dvuhsotoe chislo=%d\n", l);
  55. system("pause");
  56. return 0;
  57. }

Решение задачи: «Ошибки в ассемблерной вставке»

textual
Листинг программы
  1. mov ax,cx
  2. add ax,bx
  3. sub ax,si
  4. div di
  5. cmp ax, 1

Объяснение кода листинга программы

  1. mov ax,cx - Перемещение значения регистра cx в регистр ax
  2. add ax,bx - Добавление значения регистра bx к значению регистра ax
  3. sub ax,si - Вычитание значения регистра si из значения регистра ax
  4. div di - Деление значения регистра ax на значение регистра di
  5. cmp ax, 1 - Сравнение значения регистра ax с 1 Данный код выполняет последовательность операций над регистрами процессора, где ax используется как промежуточный регистр для выполнения операций сложения, вычитания и деления, а cx, bx и di используются как исходные и конечные значения для этих операций. Регистр si, по-видимому, используется как временная переменная в операции вычитания, а регистра dx в коде нет. Также в коде отсутствует какая-либо обработка ошибок или контроль за состоянием флагов регистра flags, что может привести к неопределенному поведению при делении на ноль или при выполнении операции вычитания с отрицательным значением.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы