从键盘输入一个字符串在下一行逆序输出用汇编语言如何实现

从键盘输入一个字符串在下一行逆序输出用汇编语言如何实现

;可以这样考虑:
;1.利用dos 21h中断的A号功能,读取一个字符串,这样可以取得字符串的长度N。
;2.mov cx,N,利用Loop指令,倒序输出字符串。
;代码如下:
; multi-segment executable file template.

data segment
  buf0 db 255   ;字符串最大长度
       db 0     ;输入的字符串的实际长度
  buf1 db 255 dup(0)
  lf   db 0dh, 0ah, '$'
data ends

code segment
    assume cs:code, ds:data
start:
    mov ax, data
    mov ds, ax

    lea dx, buf0  ;read a string
    mov ah, 0ah   ;
    int 21h       ;

    lea dx,lf     ;输出回车换行
    mov ah,9      ;
    int 21h    

    xor cx,cx
    mov cl,buf0+1 ;cx存入字符串长度,循环计数
    mov bx,cx

    mov ah,0eh    ;10h中断,0eh子功能,输出al中的字符
L1: dec bx
    mov al,buf1[bx]
    int 10h
    loop L1

    mov ax, 4c00h
    int 21h    

code ends
end start

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-06-02
从键盘输入一个字符串在下一行逆序输出用汇编语言可用如下方法实现:
;汇编语言输入一串字符串,可以调用DOS功能中断INT 21H的06H功能。
;程序功能:输入一串字符,以回车符结束,输入字符串最大长度200字符;
; 输入结束在下一行倒序输出此字符串。
data segment;定义数据段
str db 201 dup (0dh)
data ends

code segment
assume cs:code,ds:data
main proc far
start:
mov ax,data
mov ds,ax
lea si,str
mov cx,200
inpstr: mov ah,06h
int 21h
jnz inpstr;无字符可读
mov [si],a1;存储输入字符
inc si;指向下一字节
xor al,0dh;判断输入是否结束
jz endinp;输入结束
loop inpstr;未结束继续输入

endinp: mov dl,0ah;回车换行
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h

output: dec si;逆序输出字符串
mov dl,[si];取一个字符
mov ah,02h;输出到屏幕
int 21h
mov ax,si
cmp ax,offset str;比较字符串起始地址
jnz output;未到起始地址,继续输出

mov ah,4ch;输出完毕,结束程序
int 21h
ret
main endp
code ends
end start
第2个回答  2015-06-03
编个小程序,即可实现。

楼主选择了错误的答案。你所选择的,不是用汇编语言编写的。

正确程序如下:

;================================================

DSEG SEGMENT
SHOW DB 'Please input a string: $'
NAM DB 200
DB ?
DB 200 DUP(0)
DSEG ENDS

CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START:
MOV AX, DSEG
MOV DS, AX

MOV DX, OFFSET SHOW
MOV AH, 09H
INT 21H

MOV DX, OFFSET NAM
MOV AH, 0AH
INT 21H

MOV DL, 0AH
MOV AH, 02H
INT 21H
MOV DL, 0DH
MOV AH, 02H
INT 21H

MOV CL, NAM + 1
MOV CH, 0
CMP CX, 0
JE EXIT

MOV SI, OFFSET NAM + 2
ADD SI, CX
MOV AH, 02H
L1:
DEC SI
MOV DL, [SI]
INT 21H
LOOP L1
EXIT:
MOV AH, 4CH
INT 21H
CSEG ENDS
END START

;================================================

本程序执行结果如下:

输入:ABCD
输出:DCBA

;================================================
第3个回答  推荐于2016-10-19
#include <stdio.h>
struct text
{
char c;
struct text *next;
};
void main()
{
text *head = new text;
text *current = head;
text *next = NULL;
char c;
while(1)
{
if((current->c = getchar()) == '\n')
break;
//printf("%c:%d\n", current->c, current->c);
next = new text;
current->next = next;
current = current->next;
}
current->next = NULL;
current = head;
while(current->c != '\n')
{
printf("%c:%2x\n", current->c, current->c);
current = current->next;
}
}
//无论多么长字符串均可本回答被提问者采纳

从键盘输入一个字符串在下一行逆序输出用汇编语言如何实现
;可以这样考虑:;1.利用dos 21h中断的A号功能,读取一个字符串,这样可以取得字符串的长度N。;2.mov cx,N,利用Loop指令,倒序输出字符串。;代码如下:; multi-segment executable file template.data segment buf0 db 255 ;字符串最大长度 db 0 ;输入的字符串的实际长度 buf1 db 2...

用java语言编写程序,任意输入一个字符串,从最后一个字符开始倒序输出他...
System.out.println("请输入字符并以回车结束:"); \/\/读入键盘输入 s = br.readLine(); StringBuffer ss = new StringBuffer(s); ss.reverse();\/\/StringBuffer类的逆序函数 s1 = ss.toString(); System.out.println("你输入的是:" + s); System.out.println("逆序以后是:" + s1); } catch (IOExc...

从键盘上输入一行字符(以ENTER为结束),将其中的大写字母改为小写字母...
我用C编了一个 include<stdio.h> define maxsize 150 main(){ char s[maxsize]={0}; \/*定义一个字符数组来保存输入的字符串 最多输入maxsize个*\/ int i;printf("please input\\n");for(i=1;s[i-1]!='\\n'&&i<maxsize;i++) \/*从键盘输入字符并依次存到数组中 当输入'\/...

C语言:编写一个程序实现从键盘接收一个字符串,并将这个字符逆序输出
改进一下 用字符数组实现,字符串长度有限制 include<conio.h> include<stdio.h> int main(void){ int i;int ch[128];for (i = 0; (ch[i] = getchar()) != '\\n'; i++);printf("\\n");for (; i >= 0; i--)printf("%c", ch[i]);getch();return 0;} 在 TC 上测试...

怎么从键盘上输入一串字符,将其逆向显示?
include <iostream>using namespace std;char mystr[1000];void nixing()\/\/\/逆序输出{int i;gets(mystr);\/\/输入字符串for(i=strlen(mystr)-1;i>=0;i--)cout<<mystr[i];}int main(){nixing();return 0;}

c语言从键盘输入一个三位数,输出该数的逆序数。
在C语言中,当你需要从用户键盘输入一个三位数,并将其逆序输出,可以使用以下简单的代码实现。这段代码首先会提示用户输入,然后通过计算和格式化输出,展示逆序的数字。下面是具体的步骤:首先,你需要在C程序中引入头文件,以便使用输入和输出功能。在main函数中,定义一个整型变量x来存储用户输入的三...

从键盘输入一个数如428,编程将其逆序数输出824 用c语言
1 输入到整型变量,然后,通过取出各个位值进行反序。include <stdio.h>int main(){ int v; scanf("%d",&v);\/\/输入值。 while(v) { printf("%d",v%10); v\/=10; }\/\/逆序输出每位的值。 return 0;} 2 将数字按照字符串输入,然后反序输出字符串。include <...

用JAVA编写一程序:从键盘输入多个字符串到程序中,并将它们按逆序输出在...
输出:Bejing to welcome 追答 import java.util.*;public class laji1 { public static void main(String[] args) { int n=100; Scanner scanner = new Scanner(System.in); System.out.print("请输入字符串: "); String yy = scanner.nextLine(); StringTokenizer fenxi1 = new StringTokenizer(yy,"...

编写一个程序,从键盘输入一个三位整数,将它们逆序输出。例如输入127...
include<stdio.h> include<math.h> int main(){ int number,digit;scanf("%d",&number);while(number!=0){ digit=number%10;printf("%d",digit);number\/=10;};return 0;}

编写一个程序,要求从键盘输入一个3位整数,然后将它们逆序输出。
个位:number%10 include<conio.h> include<stdio.h> void main(){ int number;printf("input number(100~999):");scanf("%d",&number);if(number>=100&&number<=999)printf("%d%d%d",number%10,(number\/10)%10,number\/100);else printf("Error Input(100~999)\\n");getch();} ...

相似回答