Advertisement
Guest User

Untitled

a guest
Jun 14th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <locale.h>
  3.  
  4. int main()
  5. {
  6. setlocale(LC_ALL, "rus");
  7. char x1, x2, x3;
  8. printf("Введите набор значений {x1, x2, x3}\n");
  9. scanf("%c %c %c", &x1, &x2, &x3);
  10. __asm
  11. {
  12. //Строка в "C" выглядит так: символы + "\0" на конце
  13. //Чтобы ассемблер мог проводить операции с этими записями, требуется убрать "\0"
  14. mov al, x1; //раскладываем x1, x2, x3 по регистрам
  15. mov bl, x2;
  16. mov cl, x3;
  17. sub al, '0'; //вычитаем 0, чтобы ассемблер мог проводить над х1 вычисления
  18. sub bl, '0'; //вычитаем 0, чтобы ассемблер мог проводить над х2 вычисления
  19. sub cl, '0'; //вычитаем 0, чтобы ассемблер мог проводить над х3 вычисления
  20. cmp al, bl; //проверка на равенство первой и второй цифры
  21. je a150; //если они равны, программа переходит к строке а150
  22. jne a160; //если нет, то к строке а160
  23. a150: mov dl, '1'; //кладём единицу в регистр dl
  24. sub dl, '0'; //вычитаем "0", чтобы ассемблер мог проводить над dl вычисления
  25. cmp cl, dl; //сравниваем 3-ю цифру с 1, чтобы при вычитании заменить её на 9
  26. je a170; //равны -- выполняется а170
  27. jne a180; //нет -- а180
  28. a180: mov dl, '0'; //аналогичные действия с нулем
  29. sub dl, '0';
  30. cmp cl, dl; //проверка, является ли 3-я цифра 0, чтобы при вычитании заменить её на 8 (как требуется по заданию)
  31. je a171; //ноль -- а171
  32. jne a190; //нет -- а190
  33. a170: mov cl, '9'; //аналогично прошлым цифрам вводим 9
  34. sub cl, '0';
  35. add cl, '0'; //прибавляем 0, чтобы восстановить читаемость для C
  36. mov x3, cl; //перемещаем девятку в х3
  37. add al, '0'; //прибавляем 0, чтобы восстановить читаемость для C
  38. mov x1, al; //перемещаем из al в х1
  39. add bl, '0'; //прибавляем 0, чтобы восстановить читаемость для C
  40. mov x2, bl; //аналогично
  41. jmp ex; //выход из програмы
  42. a171:mov cl, '8'; //аналогчно 9, все также происходит, но вместо 9-ки на место х3 встаёт 8-ка
  43. sub cl, '0';
  44. add cl, '0';
  45. mov x3, cl;
  46. add al, '0';
  47. mov x1, al;
  48. add bl, '0';
  49. mov x2, bl;
  50. jmp ex;
  51. a190: dec cl; //если у нас цифры больше 1, то вычитаем из них 2, как и требуется по заданию
  52. dec cl;
  53. add cl, '0'; //прибавляем 0, чтобы восстановить читаемость для С
  54. mov x3, cl;
  55. add al, '0';
  56. mov x1, al;
  57. add bl, '0';
  58. mov x2, bl;
  59. jmp ex; //выход
  60. a160: add cl, '0'; //меняем местами цифры, восстанавливаем вид для С и перемещаем в регистры, как требуется по заданию
  61. mov x3, cl;
  62. add al, '0';
  63. mov x2, al;
  64. add bl, '0';
  65. mov x1, bl;
  66. jmp ex;
  67. ex: nop; //nop -- команда ничего не делать
  68. }
  69. printf("Результат:\n");
  70. printf("{%c %c %c}\n", x1, x2, x3);
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement