程序需求:有一个首地址为string的字符串 ,剔除string中所有的空格字符。请从字符串最后一个字符开始逐个向前判断、并进行处理。
编程思路:假设串以0作为结束标志,从右向左扫描,遇到空格后, 将其后的所有字符向前移动一个位置,直到该字符为止。 由于串长是动态变化的,所以需要设置三个指针,tailP指向串尾, 扫描用的指针scanP,及移动时用的指针moveP。汇编中esi==scanP,edi==tailP,ebx==moveP。
开发环境
Win10 + VS2017
C语言代码实现如下:
#include <stdio.h>
#include <string.h>
char string[] = "hello world ni hao shi jie!";
int main()
{
int scanP, tailP;
scanP = tailP = strlen(string);
while (scanP >= 0)
{
if (string[scanP] == ' ')
{
for (int i = scanP; i < tailP; i++)
{
string[i] = string[i + 1];
}
tailP--;
}
scanP--;
}
printf("%s\n", string);
return 0;
}
汇编语言代码实现如下:
INCLUDELIB kernel32.lib
INCLUDELIB ucrt.lib
INCLUDELIB legacy_stdio_definitions.lib
.386
.model flat,stdcall
ExitProcess PROTO,
dwExitCode:DWORD

本文介绍了一个在汇编语言中实现的程序,用于从字符串的末尾开始,删除所有空格字符。程序利用了三个指针变量,分别用于跟踪字符串尾部、扫描位置和移动字符。在Windows 10环境下,使用VS2017编译并通过C语言和汇编语言两种方式展示了实现过程。
5375

被折叠的 条评论
为什么被折叠?



