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

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

;可以这样考虑:
;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...

怎么从键盘上输入一串字符,将其逆向显示?
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语言实现 从键盘输入一个一个以回车符结束的字符串,然后将其逆序输...
buf[i] = buf[len - 1 - i];buf[len - 1 - i] = temp;} printf("%s", buf);}

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 上测试...

用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,"...

利用DOS的OAH功能从键盘输入一串字符,并将此字符串在显示屏上显示出来...
1 2016-07-09 从键盘输入字符串ABCDE按回车结束输入,使输入字符串的A和... 2010-12-30 在进行字符串显示的DOS功能调用时,要求字符串的最后一个字符... 2010-06-04 从键盘输入一个字符串在下一行逆序输出用汇编语言如何实现 1 2014-10-27 java从键盘接收用户输入的字符串,然后逆序输出 如用户输入... ...

C语言编程, 使从键盘中输入的三位数倒着输出。
C语言:从键盘输入一个三位数,以逆序输出。例如:输入456,输出654 如图:

C语言:从键盘上输入一行字符,将其中的大写字母改成小写字母后逆序输出...
using namespace std;void main (){ cout<<"请输入一组字符串:";string line;cin>>line;int i;for(i=0;i<line.length();i++)if(line[i]>='A' && line[i]<='Z')line[i]=line[i]-'A'+'a';cout<<"转换后的字符串逆序输出为: ";for(i=line.length()-1;i>=0;i--)cou...

从键盘上输入一行字符(以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++) \/*从键盘输入字符并依次存到数组中 当输入'\/...

这是汇编题… 利用10号功能调用从键盘输入长度为8的字符串,回车键结束...
DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV DX,DATA MOV DS,DX MOV AH,0AH MOV DX,OFFSET BUF INT 21H LEX BX,BUF MOV CX,[BX+1]ADD BX,9 LOOP1:MOV DL,[BX]MOV AH,02H INT 21H LOOP LOOP1 MOV AH,4CH INT 21H CODE ENDS END START ...

相似回答