Удалить лишние пробелы между словами - Assembler
Формулировка задачи:
Есть программа на C++ с ассемблерным кодом. В задании нужно удалить лишние пробелы, т.е. если между пробелами больше одного пробела - всё удалить, пока не останется одного. Методом ассемблерной вставки код работает, а так нет, хотя я там использовал не string , а char* .
Листинг программы
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- extern "C" string spaceasm(string S, string E);
- int main()
- {
- string S, E;
- S = "We have a string, who haves a maaany spaces";
- E = "";
- string D = spaceasm(S, E);
- system("pause");
- return 0;
- }
Листинг программы
- .686
- .MODEL FLAT, C
- .DATA
- .CODE
- public spaceasm
- spaceasm PROC s:dword, e:dword
- mov cx, 41
- lea esi, S
- lea edi, E
- xor ebx, ebx
- xor eax, eax
- xor edx, edx
- jmp mark3
- mark1 :
- mov[edi], al
- inc di
- jmp mark2
- mark2 :
- inc si
- dec cx
- cmp cx, 0
- je mark4
- mark3 :
- mov bl, al
- mov al, [esi]
- cmp al, 32
- jne mark1
- cmp al, bl
- jne mark1
- jmp mark2
- mark4 :
- ret
- spaceasm ENDP
- END
Решение задачи: «Удалить лишние пробелы между словами»
textual
Листинг программы
- .386
- .MODEL FLAT, C
- ;
- INCLUDE \Masm32\Include\Kernel32.inc
- INCLUDELIB \Masm32\Lib\Kernel32.lib
- ;
- .CODE
- ...............
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д