求一个字符串反转的例子!!!

ming6424 2005-10-19 09:57:16
尝试使用movsb,std没有成功
...全文
204 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
derek 2005-10-21
  • 打赏
  • 举报
回复
不知这样可否,请教:
data segment
string db 'hello world!!!',10,13,'$'
stringr db dup $-string (?)
strlen =stringr-string
data ends

code segment
assume cs:code
assume ds:data
start: push ds
xor ax,ax
push ax

mov ax,data
mov ds,ax
mov si,0
mov cs,strlen-1
Lop:
mov ax,string[strlen-si]
mov stringr[si],ax
inc si
loop lop

code ends
end start
derek 2005-10-21
  • 打赏
  • 举报
回复
data segment
string db 'hello world!!!',10,13,'$'
stringr db dup $-string (?)
strlen =stringr-string
data ends

code segment
assume cs:code
assume ds:data
start: push ds
xor ax,ax
push ax

mov ax,data
mov ds,ax
mov si,0

Lop:
mov ax,string[strlen-si]
mov stringr[si],ax
loop
ming6424 2005-10-20
  • 打赏
  • 举报
回复
.model small,c
DATA segment
msg DB 'After reversing...',0DH,0AH,'$'
string DB 'ABCD',0DH,0AH,'$','0'
string2 DB 20 Dup('0')
DATA ends
CODE segment
assume cs:code,ds:data
strlen proc uses AX BX,string0:PTR BYTE
mov bx, string0
xor cx, cx
mov al, [bx]
.while al != 0
inc cx
inc bx
mov al, [bx]
.endw
ret
strlen endp


strrev proc uses SI SI,strSrc:PTR BYTE,strDest:PTR BYTE
lea si, strSrc
lea di, strDest
add si, cx
again:
mov di,si
dec si
inc di
loop again
mov di, '$'
ret
strrev endp

start:
mov ax,data
mov ds,ax
mov dx,offset string
mov ah,9h
int 21h

mov dx,offset msg
mov ah,9h
int 21h

invoke strlen ,ADDR string
invoke strrev ,ADDR string, ADDR string2

mov dx, offset string2
mov ah, 9h
int 21h

mov ah,4ch
int 21h
CODE ends
end start


大家帮忙看一下啊
大熊猫侯佩 2005-10-20
  • 打赏
  • 举报
回复
data segment
string db 'hello world!!!',10,13,'$'
strlen = $ - string - 1
data ends

code segment
assume cs:code,ds:data
start:
push ds ;定位 int 20h 与后面 retf 相对应,
xor ax,ax ;未退出做准备。
push ax

mov ax,data ;初始化 ds 段寄存器。
mov ds,ax

lea dx,string ;显示倒序之前的字符串
mov ah,09h
int 21h

mov cl,strlen ;确定倒序操作次数。
shr cl,1
xor bx,bx
lop:
mov al,string[bx] ;倒序操作,核心使用使用 xchg 指令完成倒序。
push bx
mov dx,strlen
sub dx,bx
mov bx,dx
xchg al,string[bx-1]
pop bx
mov string[bx],al
inc bx

loop lop

lea dx,string ;显示倒序之后的字符串。
mov ah,09h
int 21h

retf ;退出。
code ends
end start
deping_chen 2005-10-20
  • 打赏
  • 举报
回复
xchg
VxD1 2005-10-20
  • 打赏
  • 举报
回复
你找mydo(坎道斯|Kinds)或者csdsjkk()帮你看看
他们很厉害,我是菜鸟
VxD1 2005-10-20
  • 打赏
  • 举报
回复
mov bx, string0 ?string0在哪定义的?
你的程序哪有问题?
你用debug调试一下
这些天比较忙

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧