Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.56 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <cstring>
  4. #include <string>
  5. #include <iostream>
  6. #include <fstream>
  7. #include <conio.h>
  8. #include <Windows.h>
  9.  
  10. using std::cin;
  11. using std::cout;
  12. using std::endl;
  13. using std::ofstream;
  14. using std::string;
  15.  
  16.  
  17. void init() {
  18. cout << "Лабораторная работа №4." << endl;
  19. cout << "Тема: Изучение программирования обработки символьной информации с использованием команд пересылки строк" << endl;
  20. cout << "Выполнила студент группы 8304 Николаева М. А." << endl;
  21. cout << "Вид преобразования: Преобразование введенных во входной строке шестнадцатиричных цифр в двоичную СС" << endl << endl;
  22. }
  23.  
  24.  
  25. void transformation(const char* input, char* result) {
  26. _asm
  27. {
  28. CLD
  29. push ESI
  30. push EDI
  31. push EAX
  32. push EBX
  33. push ECX
  34.  
  35. MOV ESI, input
  36. MOV EDI, result
  37.  
  38. BEGINCYCLE :
  39. LODSB
  40. CMP AL, 0
  41. JE ENDPROG
  42.  
  43. CMP AL, 46h
  44. JA SYMBOL
  45. CMP AL, 41h;
  46. JB NUMBER
  47.  
  48. SUB AL, 31h
  49. JMP TRANSFORMATION
  50.  
  51. NUMBER :
  52. CMP AL, 30h
  53. JB SYMBOL
  54. CMP AL, 39h
  55. JA SYMBOL
  56. SUB AL, 30h
  57.  
  58. TRANSFORMATION:
  59. XOR ECX, ECX
  60. CYCLE:
  61. mov EBX, 1
  62. AND Bl, AL
  63. add BL, '0'
  64. PUSH EBX
  65. INC CX
  66. SHR AL, 1
  67. CMP AL, 0
  68. JNE CYCLE
  69.  
  70. SETBIT :
  71. POP EAX
  72. STOSB
  73. loop SETBIT
  74.  
  75. jmp BEGINCYCLE
  76.  
  77. SYMBOL :
  78. STOSB
  79. JMP BEGINCYCLE
  80.  
  81. ENDPROG :
  82. xor AL, AL
  83. stosb
  84.  
  85. pop ECX
  86. pop EBX
  87. pop EAX
  88. pop EDI
  89. pop ESI
  90. }
  91. }
  92.  
  93.  
  94. int main() {
  95. setlocale(LC_ALL, "Russian");
  96.  
  97. SetConsoleCP(1251);
  98. SetConsoleOutputCP(1251);
  99.  
  100. string inputStr = "";
  101. ofstream fout;
  102.  
  103. init();
  104.  
  105. cout << "Введите строку:" << endl;
  106. cin >> inputStr;
  107.  
  108. if (inputStr.size() == 0) {
  109. cout << "Строка пустая" << endl;
  110. return -1;
  111. }
  112.  
  113. size_t size = inputStr.size() + 1;
  114. char* resultStr = new char[size * 8];
  115. transformation(inputStr.data(), resultStr);
  116.  
  117. cout << endl << "Введённая строка: " << inputStr << endl;
  118. cout << "Преобразованная строка: " << resultStr << endl;
  119.  
  120. fout.open("result.txt");
  121. if (!fout.is_open()) {
  122. cout << "Файл не удалось открыть!" << endl;
  123. return 1;
  124. }
  125.  
  126. fout << "Исходная строка: " << inputStr << endl;
  127. fout << "Преобразованная строка: " << resultStr << endl;
  128. fout.close();
  129.  
  130. delete[] resultStr;
  131.  
  132. system("pause");
  133. return 0;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement