Advertisement
fferum

asm1

May 30th, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <cstdio>
  3. #include <ctime>
  4. #include <iostream>
  5. int main()
  6. {
  7.     char b1, b2, b3, b4;
  8.     short w1, w2, w3;
  9.     int d1, res, temp1, temp2;
  10.     setlocale(LC_ALL, "Russian");
  11.     printf("Данная программа вычисляет значение выражения ((b1*(w1 - b2) - w2 * b3) / w3 + d1 / b4)\n");
  12.     printf("Введите целое число b1: ");
  13.     scanf_s("%hhd", &b1);
  14.     printf("Введите целое число b2: ");
  15.     scanf_s("%hhd", &b2);
  16.     printf("Введите целое число b3: ");
  17.     scanf_s("%hhd", &b3);
  18.     printf("Введите целое число b4: ");
  19.     scanf_s("%hhd", &b4);
  20.     printf("Введите целое число w1: ");
  21.     scanf_s("%hd", &w1);
  22.     printf("Введите целое число w2: ");
  23.     scanf_s("%hd", &w2);
  24.     printf("Введите целое число w3: ");
  25.     scanf_s("%hd", &w3);
  26.     printf("Введите целое число d1: ");
  27.     scanf_s("%d", &d1);
  28.     res = ((b1 * (w1 - b2) - w2 * b3) / w3 + d1 / b4);
  29.     __asm {
  30.         //1- (w1 - b2)
  31.         mov al, b2
  32.         cbw
  33.         sub w1, ax
  34.         //2- b1*1
  35.         mov al, b1
  36.         cbw
  37.         imul w1
  38.         mov word ptr temp1, ax
  39.         mov word ptr temp1 + 2, dx
  40.  
  41.         //3- w2*b3
  42.         mov al, b3
  43.         cbw
  44.         imul w2
  45.         //4- (2-3)
  46.         mov bx, word ptr temp1
  47.         mov cx, word ptr temp1 + 2
  48.         sub bx, ax
  49.         sbb cx, dx
  50.         mov word ptr temp1, bx
  51.         mov word ptr temp1 + 2, cx
  52.         mov ax, word ptr temp1,
  53.         mov dx, word ptr temp1 + 2
  54.         //5- (4/w3)
  55.         idiv w3
  56.         mov w3, ax
  57.  
  58.         //6- (d1/b4)
  59.         mov al, b4
  60.         cbw
  61.         mov bx, ax
  62.         mov ax, word ptr d1
  63.         mov dx, word ptr d1 + 2
  64.         idiv bx
  65.         //7- (5+6)
  66.         add ax, w3
  67.         mov w3, ax
  68.     }
  69.     printf("Результат вычислений на языке ассемблера: %d\n", w3);
  70.     printf("Результат вычислений на языке C/C++: %d\n", res);
  71.     system("pause");
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement