Удалить лишние пробелы между словами - 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 ...............
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д