Удалить лишние пробелы между словами - 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 ...............