Удалить лишние пробелы между словами - Assembler

Узнай цену своей работы

Формулировка задачи:

Есть программа на C++ с ассемблерным кодом. В задании нужно удалить лишние пробелы, т.е. если между пробелами больше одного пробела - всё удалить, пока не останется одного. Методом ассемблерной вставки код работает, а так нет, хотя я там использовал не string , а char* .
Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include "stdafx.h"
  5. #include <iostream>
  6. using namespace std;
  7. extern "C" string spaceasm(string S, string E);
  8. int main()
  9. {
  10. string S, E;
  11. S = "We have a string, who haves a maaany spaces";
  12. E = "";
  13. string D = spaceasm(S, E);
  14. system("pause");
  15. return 0;
  16. }
Листинг программы
  1. .686
  2. .MODEL FLAT, C
  3. .DATA
  4. .CODE
  5. public spaceasm
  6. spaceasm PROC s:dword, e:dword
  7. mov cx, 41
  8. lea esi, S
  9. lea edi, E
  10. xor ebx, ebx
  11. xor eax, eax
  12. xor edx, edx
  13. jmp mark3
  14. mark1 :
  15. mov[edi], al
  16. inc di
  17. jmp mark2
  18. mark2 :
  19. inc si
  20. dec cx
  21. cmp cx, 0
  22. je mark4
  23. mark3 :
  24. mov bl, al
  25. mov al, [esi]
  26. cmp al, 32
  27. jne mark1
  28. cmp al, bl
  29. jne mark1
  30. jmp mark2
  31. mark4 :
  32. ret
  33. spaceasm ENDP
  34. END

Решение задачи: «Удалить лишние пробелы между словами»

textual
Листинг программы
  1. .386
  2. .MODEL FLAT, C
  3. ;
  4. INCLUDE \Masm32\Include\Kernel32.inc
  5. INCLUDELIB \Masm32\Lib\Kernel32.lib
  6. ;
  7. .CODE
  8. ...............

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


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

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

15   голосов , оценка 3.867 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы