Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <stdio.h>
- #include <cstring>
- #include <string>
- #include <iostream>
- #include <fstream>
- #include <conio.h>
- #include <Windows.h>
- using std::cin;
- using std::cout;
- using std::endl;
- using std::ofstream;
- using std::string;
- void init() {
- cout << "Лабораторная работа №4." << endl;
- cout << "Тема: Изучение программирования обработки символьной информации с использованием команд пересылки строк" << endl;
- cout << "Выполнила студент группы 8304 Николаева М. А." << endl;
- cout << "Вид преобразования: Преобразование введенных во входной строке шестнадцатиричных цифр в двоичную СС" << endl << endl;
- }
- void transformation(const char* input, char* result) {
- _asm
- {
- CLD
- push ESI
- push EDI
- push EAX
- push EBX
- push ECX
- MOV ESI, input
- MOV EDI, result
- BEGINCYCLE :
- LODSB
- CMP AL, 0
- JE ENDPROG
- CMP AL, 46h
- JA SYMBOL
- CMP AL, 41h;
- JB NUMBER
- SUB AL, 31h
- JMP TRANSFORMATION
- NUMBER :
- CMP AL, 30h
- JB SYMBOL
- CMP AL, 39h
- JA SYMBOL
- SUB AL, 30h
- TRANSFORMATION:
- XOR ECX, ECX
- CYCLE:
- mov EBX, 1
- AND Bl, AL
- add BL, '0'
- PUSH EBX
- INC CX
- SHR AL, 1
- CMP AL, 0
- JNE CYCLE
- SETBIT :
- POP EAX
- STOSB
- loop SETBIT
- jmp BEGINCYCLE
- SYMBOL :
- STOSB
- JMP BEGINCYCLE
- ENDPROG :
- xor AL, AL
- stosb
- pop ECX
- pop EBX
- pop EAX
- pop EDI
- pop ESI
- }
- }
- int main() {
- setlocale(LC_ALL, "Russian");
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- string inputStr = "";
- ofstream fout;
- init();
- cout << "Введите строку:" << endl;
- cin >> inputStr;
- if (inputStr.size() == 0) {
- cout << "Строка пустая" << endl;
- return -1;
- }
- size_t size = inputStr.size() + 1;
- char* resultStr = new char[size * 8];
- transformation(inputStr.data(), resultStr);
- cout << endl << "Введённая строка: " << inputStr << endl;
- cout << "Преобразованная строка: " << resultStr << endl;
- fout.open("result.txt");
- if (!fout.is_open()) {
- cout << "Файл не удалось открыть!" << endl;
- return 1;
- }
- fout << "Исходная строка: " << inputStr << endl;
- fout << "Преобразованная строка: " << resultStr << endl;
- fout.close();
- delete[] resultStr;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement