80x86 汇编语言:实现两个字符串内容交换
来源:互联网 发布:windows ad域管理软件 编辑:程序博客网 时间:2024/05/18 01:03
在data segment段定义了有两个字符串StringA和StringB,
程序执行的时候,从键盘输入为二者赋值了。
然后我想交换StringA与StringB字符串的内容,这个在汇编中怎么实现呢?
莫非只能一个字符一个字符的复制到中间变量,然后再给寄存器,再交换?
求简洁的方法与代码!
题目链接:http://zhidao.baidu.com/question/551073803.html
做而论道回答如下: (2013-05-17 13:17 提问者采纳)
可以为它们分别定义起始地址变量,即地址指针。
需要交换时,交换一下指针即可。
追问:2013-05-17 13:29
能不能给具体点代码或者思路???
回答:2013-05-17 15:01
两个字符串,不等长,才有普遍意义。
代码如下:
;================================================
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 13, 10, 'STR 1 is : $'
MSG2 DB 13, 10, 'STR 2 is : $'
MSG3 DB 13, 10, 13, 10, 'Have Exchanged. ', 13, 10, 36
STR1 DB '13579@#!^&%^!@!@~!@. $' ;这是两个不等长的字符串
STR2 DB '24680asdfdfgdfgdfhghghfgfghargregfdghf. $'
SP_STR1 DW STR1 ;定义两个字符串的指针
SP_STR2 DW STR2
DATA ENDS
;----------------------------------
CODE SEGMENT
START: ;主程序开始.
MOV AX, DATA
MOV DS, AX
;-----------------------------
CALL PROGRAM ;数据处理(仅仅是显示而已)
PUSH SP_STR1 ;交换两个指针
PUSH SP_STR2
POP SP_STR1
POP SP_STR2
MOV DX, OFFSET MSG3
MOV AH, 9
INT 21H
CALL PROGRAM ;再次调用同一个程序,可看出,显示内容,已经交换了
EXIT:
MOV AH, 4CH
INT 21H ;返回DOS
;-----------------------
PROGRAM:
MOV DX, OFFSET MSG1
MOV AH, 9
INT 21H
MOV DX, SP_STR1 ;取起始地址
MOV AH, 9
INT 21H
MOV DX, OFFSET MSG2
MOV AH, 9
INT 21H
MOV DX, SP_STR2 ;取起始地址
MOV AH, 9
INT 21H
RET
;-----------------------
CODE ENDS
END START ;程序结束
;----------------------------------
提问者评价:你给了我一种思路。但貌似你这个对于结构体数组的里面的成员字符串不可以直接交换。
做而论道评论:楼主采纳后,才提出不满足的意见,实际上,这是节外生枝。
交换【结构体数组的里面的成员字符串】,也是可以的。在定义时,也采用指针即可。
- 80x86 汇编语言:实现两个字符串内容交换
- 交换两个字符串内容
- 80x86汇编语言:字符串移动
- 80x86 汇编语言:查找字符串
- 80x86汇编语言编程:两个矩阵相乘
- 80x86汇编语言:输入字符串、转换、输出
- 80x86 汇编语言:键入字符串,然后存盘
- C语言 实现两个数组内容交换
- 【80X86汇编语言学习】【字符串处理】字符串操作指令REP
- 【80X86汇编语言学习】【字符串处理】字符串操作举例strcat
- 80x86汇编语言编程:查找字符串中的最大、最小值
- 80x86 汇编语言编程:输入字符串,排序输出
- 用80x86汇编语言:在字符串中删除一个字符
- 80x86 汇编语言:输入字符串、显示其中数字
- 80x86 汇编语言基础教程
- java怎么实现两个对象内容的交换
- 交换两个字符串
- 交换两个字符串
- 【单片机】求用汇编语言写
- 80x86汇编语言:INT 10H 的应用
- 用单片机实现位逻辑运算
- 51 单片机:按键控制灯亮灭和闪烁
- 51 单片机:在 P0 口接上 8 个 LED,实现每次亮两个灯的流水灯
- 80x86 汇编语言:实现两个字符串内容交换
- 京东电商API
- C语言:500 以内最大 10 个素数并求和
- 51单片机基于 Proteus 制作 10 以内加减的计算器
- 51单片机 汇编语言电子琴
- 在 51 单片机系统中使用 8155(2)
- 【Java并发编程】深入分析volatile(四)
- 80x86 汇编语言:组合 BCD 码的乘法
- 80x86 汇编语言编程:要求显示完整的算式