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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы