Advertisement
Glebzok

2 Assembler Lab (remastered)

Dec 8th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.73 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <math.h>
  4.  
  5. main()
  6. {
  7.     int n;
  8.     char x, z;
  9.     short y, v_c, v_as;
  10.     setlocale(LC_ALL, "RUS");
  11.  
  12.  
  13.     printf("Введите номер теста (1 или 2)\t");
  14.     scanf("%d", &n);
  15.     switch (n)
  16.     {
  17.     case 1:
  18.     {
  19.         x = -0x2;
  20.         y = 0x1;
  21.         z = 0x4;
  22.     }
  23.     break;
  24.     case 2:
  25.     {
  26.         x = -0x7E;
  27.         y = 0x6000;
  28.         z = 0x7D;
  29.     }
  30.     break;
  31.     }
  32.     v_c = (-2 + y*(x - 3)) / (z + 3);
  33.     _asm
  34.     {
  35.         mov AL, x;//в al - x
  36.         cbw;//в ax - x
  37.         sub AX, 3;//в ax x-3
  38.         imul y;//в dx:ax y*(x-3)
  39.         sub ax, 2;//в ax -2+y*(x-3)                      
  40.         adc DX, 0;//                                            -2+y(x-3)
  41.         xchg BX, AX;//временно меняем местами ах и bx       v = —————————
  42.         mov AL, z;//в al z                                        z+3
  43.         cbw;//в ax z
  44.         add AX, 3;//в ax z-3
  45.         xchg AX, BX;//обратно меняем ax и bx
  46.         idiv BX;//делим числитель на знаменатель
  47.         mov v_as, AX;//возвращаем v в v_as
  48.     }
  49.     printf("\n\nРезультаты в шестнадцатеричной системе без условий при выводе:");
  50.     printf("\nTrue:%Xh\nC:%Xh\nAssembler:%Xh",v_true, v_c, v_as);
  51.     printf("\n\nРезультаты в шестнадцатеричной системе с условиями при выводе:");
  52.     printf("\nTrue:%s%xh", v_true<0?"-":"", v_true<0?-(unsigned)v_true:v_true);
  53.     printf("\nC=%s%xh", v_c<0?"-":"", v_c<0?-(unsigned)v_c:v_c);
  54.     printf("\nAssembler=%s%xh\n", v_as<0?"-":"", v_as<0?-(unsigned)v_as:v_as);
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement