PDA

View Full Version : معكوس كردن رشته



Reza,M
شنبه 14 خرداد 1390, 16:02 عصر
باسلام من ميخوام يه رشته از ورودي بگيرم و معكوس كردن نمايش بدم
مثلا
reza ---> azer
اين كد براش نوشتم ولي چرا جواب نميده ؟



data segment

n db "Enter Your String :$"
n1 db 30
n2 db ?
n3 db 30 dup(?)
m db 30 dup(?)
ends

stack segment
dw 128 dup(0)
ends

code segment
start:

mov ax, data
mov ds, ax
mov es, ax


lea dx,n
mov ah,09
int 21h
lea dx,n1
mov ah,0ah
int 21h

mov dl,10
mov dh,1
mov bh,0
mov ah,02h
int 21h

mov cl,n2
mov ch,0
std
lea si,n3
cld
lea di,m
rep movsb
lea dx,m
mov cl,n2
mov ch,0
mov bx,1
mov ah,40h
int 21h

;;;;;;;;;;;;;;;;;;;;;;;

mov ah, 1
int 21h

mov ax, 4c00h
int 21h
ends

end start

Reza,M
یک شنبه 15 خرداد 1390, 14:55 عصر
البته به اين روش بدستش آوردم اما يه روش ديگه ميخوام ؟؟؟؟!!!!!



data segment
n db "Enter Your String :$"
n1 db 30
n2 db ?
n3 db 30 dup(?)
ends

stack segment
dw 128 dup(0)
ends

code segment
start:
mov ax, data
mov ds, ax
mov es, ax
;;;;;;;;;;;;;;;
lea dx,n
mov ah,09
int 21h
lea dx,n1
mov ah,0ah
int 21h
mov dl,10
mov dh,1
mov bh,0
mov ah,02h
int 21h
mov cl,n2
mov ch,0
mov si,offset n3
add si,cx
dec si

l1: mov dl,[si] ; reza --> azer
mov ah,02h
int 21h
dec si
loop l1
;;;;;;;;;;;;;;;;
mov ah, 1
int 21h

mov ax, 4c00h
int 21h
ends
end start

Reza,M
دوشنبه 16 خرداد 1390, 18:49 عصر
نا اميدم كردين لااقل يه نظري بدين !!

unknown.unforgiven
سه شنبه 17 خرداد 1390, 21:57 عصر
البته به اين روش بدستش آوردم اما يه روش ديگه ميخوام
مگه مشکل این روش چیه که یکی دیگه میخوای؟

اين كد براش نوشتم ولي چرا جواب نميده؟
تا اونجایی که من میدونم دستور movsb به ترتیب از اول آدرس مبدا شروع به کپی کردن تو آدرس دوم میکنه (یه واحد یه واحد میره جلو)، ولی تو میخوای از آخر مبدا به اول مقصد کپی کنی. من که بعید میدونم بشه با دستورات پردازش رشته این کار رو کرد یا اگرم بشه من بلد نیستم. اما برنامه اولی که نوشتی همون کاریو میکنه که باید بکنه، یه رشته میگیره، اونو تو یه رشته دیگه کپی میکنه و کپیش رو روی صفحه چاپ میکنه