Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 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.  
  32. MOV ESI, input; загружаем адреса строк
  33. MOV EDI, result
  34.  
  35. BEGINCYCLE :
  36. LODSB
  37. CMP AL, 0
  38. JE ENDPROG
  39. CMP AL, 46h; если другой символ, то добавляем в строку без изменений
  40. JA SYMBOL
  41. CMP AL, 41h;
  42. JB NUMBER
  43.  
  44. sub al, 31h
  45. JMP TRANSFORMATION
  46.  
  47. NUMBER :
  48. CMP AL, 30h; проверяем символ на число
  49. JB SYMBOL
  50. CMP AL, 39h
  51. JA SYMBOL
  52. SUB AL, 48
  53.  
  54. TRANSFORMATION:
  55. XOR CX, CX
  56. CYCLE:
  57. mov bx, 1
  58. AND Bl, AL
  59. PUSH BX
  60. INC CX
  61. SHR AX, 1
  62. CMP AL, 0
  63. JNE CYCLE
  64.  
  65. SETBIT:
  66. POP AX
  67. STOSB
  68. loop SETBIT
  69.  
  70. jmp BEGINCYCLE
  71.  
  72. SYMBOL:
  73. STOSB
  74. JNE BEGINCYCLE
  75.  
  76. ENDPROG:
  77. mov AL, 0
  78. stosb
  79. pop edi
  80. pop esi
  81.  
  82. }
  83. }
  84.  
  85.  
  86. int main() {
  87. setlocale(LC_ALL, "Russian");
  88.  
  89. SetConsoleCP(1251);
  90. SetConsoleOutputCP(1251);
  91.  
  92. string inputStr = "";
  93. ofstream fout;
  94.  
  95. init();
  96.  
  97. cout << "Введите строку:" << endl;
  98. cin >> inputStr;
  99.  
  100. if (inputStr.size() == 0) {
  101. cout << "Строка пустая" << endl;
  102. return -1;
  103. }
  104.  
  105. size_t size = inputStr.size() + 1;
  106. char* resultStr = new char[size*5];
  107. cout << size;
  108. transformation(inputStr.data(), resultStr);
  109.  
  110. cout << endl << "Введённая строка: " << inputStr << endl;
  111. cout << "Преобразованная строка: " << resultStr << endl;
  112.  
  113. fout.open("result.txt");
  114. if (!fout.is_open()) {
  115. cout << "Файл не удалось открыть!" << endl;
  116. return 1;
  117. }
  118.  
  119. fout << "Исходная строка: " << inputStr << endl;
  120. fout << "Преобразованная строка: " << resultStr << endl;
  121. fout.close();
  122.  
  123. delete [] resultStr ;
  124.  
  125. system("pause");
  126. return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement