(练手备忘)汇编实现将输入的字符串中的空格去掉后反序输出

功能:任意输入一个字符串,去掉其中的空格后反序输出

注:使用 int 21h 里的 0AH 功能 输入一个字符串时,字符串的第一个字节存储的是字符串的最大长度,第二个字节存储的是实际读入字符的个数

编译器使用的是MASMPlus

;#Mode = DOS

MAXLEN = 64    ;设置字符串的最大长度
SPACE  = ‘ ‘   ;空格

datasg segment
	buffer db MAXLEN+1,0,MAXLEN+1 dup(0)   ;字符串输入缓冲区
	string db MAXLEN+3 dup(0)              ;字符串反序后的结果
datasg ends

assume cs:codesg,ds:datasg
codesg segment
start:
	;ds:dx指向输入缓冲区首址
	mov ax,datasg
	mov ds,ax
	mov dx,offset buffer

	;输入字符串
	mov ah,10
	int 21h

	;判断字符串长度是否为0
	xor ch,ch
	mov cl, buffer[1]     ;cl为字符串长度
	jcxz ok  ;长度为0则结束

	;长度不为0

	mov si,offset buffer
	xor bh,bh
	add bl,buffer[1]
	add si,bx
	inc si                        ;设置ds:si指向字符串末尾  

	mov ax,datasg
	mov es,ax
	mov di,offset string          ;设置es:di指向翻转字符串首地址

	;翻转字符串
	xor ah,ah
	mov al,SPACE
ok1:
	cmp al,BYTE ptr [si]
	jz ok2                        ;去掉空格
	mov bl,BYTE ptr [si]
	mov BYTE ptr [di],bl
	inc di
ok2:
	dec si
	loop ok1

	;计算字符串长度
	mov cx,di
	sub cx,offset string
	;---------------------------------------------------自定义输出--------------------------------------------------------
	;ds:si 指向源地址
	mov ax,datasg
	mov ds,ax
	mov si,offset string

	;es:di 指向目的地址
	mov ax,0b800h
	mov es,ax
	mov di,160*5+2*10   ;设置显示的位置

	;输出
   mov bh,02h    ;设置显示字体的属性
next:
	mov bl,BYTE ptr ds:[si]
	mov BYTE  ptr es:[di],bl
	inc di
	mov BYTE ptr es:[di],bh
	inc si
	inc di
	loop next
	;---------------------------------------------------自定义输出--------------------------------------------------------

;  输出翻转后的字符串
;	mov BYTE ptr [di],‘$‘
;	mov dx,offset string
;	mov ah,09h
;	int 21h

s: jmp s                         ;死循环,防止一闪而过,看不到结果

;程序结束
ok:
	mov ax,4c00h
	int 21h
codesg ends
end start

(练手备忘)汇编实现将输入的字符串中的空格去掉后反序输出,布布扣,bubuko.com

时间: 2024-10-05 05:11:58

(练手备忘)汇编实现将输入的字符串中的空格去掉后反序输出的相关文章

字符串-----输入十个整数而后反序输出的两种实现方式

//输入十个整数而后反序输出的实现方式一(最直接式) #include"stdafx.h" #include<iostream> using namespace std; void main(){ int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; cout << "Input 10 integers:\n"; cin >> a1 >> a2 >> a3 >>

统计输入任意字符串中字符的个数

1 import java.util.ArrayList; 2 import java.util.HashSet; 3 import java.util.Iterator; 4 import java.util.List; 5 import java.util.Set; 6 7 /** 8 * 9 * @author trfizeng 10 */ 11 public class CountStr { 12 13 //统计任意字符串出现的次数 14 public static List<Strin

[备忘] OSX 10.7.5安装MediaWiki中的php53-apc

Mac Mini OSX 10.7.5系统在安装MediaWiki的过程中遇到了下面的apc未安装的问题. 采用brew方法进行安装如下:命令为  brew install php53-apc apache2 brew install php53-apc ==> Installing php53-apc from homebrew/homebrew-php ==> Downloading http://pecl.php.net/get/APC-3.1.10.tgz Already downlo

Java 测试:将用户输入的字符串中的敏感字和谐成星星

|--需求说明 |--实现方式 1.将要和谐的关键字设置为数组: 2.遍历数组,对比用户输入是否包含关键字,如果包含,就替换成星号 |--代码内容 1 import java.util.*; 2 3 /** 4 * @auther::9527 5 * @Description: 6 * @program: 多线程 7 * @create: 2019-08-08 18:45 8 */ 9 public class Exam { 10 public static void main(String[]

输入字符串反序输出

#include<stdio.h> #include<string.h> int main() { char str[100],ch; int i,j,k; printf("please input a string:\n"); scanf("%s",&str); k = strlen(str); for(i=0,j=k-1;i<k/2;i++,j--) { ch = str[i]; str[i] = str[j]; str[j

查找输入字符串中出现字符次数最多的那个字和重复次数

public class chongfu { //找出字符串中重复次数最多的那个字符: /** * public static void main(String[] args){ System.out.println("请输入字符串"); Scanner a = new Scanner(System.in); String b=a.nextLine(); int count=0; int d=0; char t = 0; for(int i=0;i<b.length();i++)

【字符串处理算法】将输入字符串中的各个单词反序的算法设计及C代码实现

一.需求描述 输入一个字符串,编写程序将该字符串中的各个单词反序拼装并输出.例如,如果输入的字符串是"Hello, how do you do",那么输出的字符串为"do you do how Hello,".注意保留各个单词之间的空格及相应的标点符号. 二.算法设计 通过观察示例字符串(即"Hello, how do you do"),我们可以看到该字符串中各个单词与空格之间的关系为:单词总数=空格总数+1.也就是说,示例字符串中的空格总数为4

【C】字符串的输入,求输入字符串中最长的单词

首先,基本目标很简单,就是利用C语言:编写一个函数,输入一行字符,将此行字符中的最长的单词输出. 代码如下: #include<stdio.h> void input(char s[]){ int i=0; for(int c;(c=getchar())!='\n';i++){ s[i]=c; } s[i]='\0';//读取完成,记得对这个字符数组封口 } char* findmax(char s[]){ int max=0,word_length=0,p=0,i=0;//这个p是用来记录最

20150912华为机考1之&quot;输入一个字符串,将其中出现次数最多的字符输出&quot;

不吐槽华为的服务器了,直接上正文 输入:字符串(英文字母),长度不超过128 输出:出现频率最高的字母 思路写在注释文档 /* Input a string * Output the most frequent character * * The way of thinking: * using ASCII, count the number of each character * then find out the max number(max_num) * and its according