PDA

View Full Version : سوال: مشکل در معکوس کردن رشته



imanss
دوشنبه 29 آذر 1389, 19:38 عصر
.model small
.stack 32h
.data
strlist label byte
max db 2
len db ?
buffer d 20 dup(?)

.code
main proc far

mov ax,@data
mov ds,ax




mov bx,offset strlist
mov chr1,bx

k1: mov ah,0ah
lea dx,strlist
int 21h

mov al,[bx]

cmp al,'$'
ja k2

inc bx

jmp k1

k2: dec bx
mov al,[bx]

mov ah,02h
int 21h

mov chr1,bx
je fine

jmp k2



fine: mov ah,4ch
int 21h

main endp
end main


mov ah,4ch
int 21h



main endp

end main

xman_1365_x
دوشنبه 29 آذر 1389, 23:59 عصر
اين برنامه كه شما نوشتي پر خطاي گرامر هست و با درست كردنشم به جواب نميرسي
اين درستش فقط گذاشتم ببيني چه اشتباهاتي داشتي كه ديگه تكرار نكني


.model small
.stack 32h
.data
strlist label byte
max db 2
len db ?
buffer db 20 dup(?)
chr1 dw ?

.code
main proc far

mov ax,@data
mov ds,ax




mov bx,offset strlist
mov chr1,bx

k1: mov ah,0ah
lea dx,strlist
int 21h

mov al,[bx]

cmp al,'$'
ja k2

inc bx

jmp k1

k2: dec bx
mov al,[bx]

mov ah,02h
int 21h

mov chr1,bx
je fine

jmp k2



fine: mov ah,4ch
int 21h

main endp
end main


mov ah,4ch
int 21h



main endp

براي اين كار شما يك حلقه نياز داري كه n تا كاراكتر با وقفه بگيره بريزي توي يك آرايه از نوع بايت
بعد اگر بگيم
str1 db 20 dup(?)خوب خونه اول كه آدرسش در str1 هست بخاي بري خانه آخر كافيه يك حلقه معكوس بزاري از آدرس شروع + n-1 شروع كنه و با وقفه چاپ كني و يك واحد از n كم كني
(به طور ساده يعني شما بجاي چاپ از اول آرايه رفتي از خونه آخر داري مياي به اول)

imanss
سه شنبه 30 آذر 1389, 11:25 صبح
.model small
.stack 32h
.data
strlist label byte
max db 2
len db ?
buffer db 20 dup(?)
chr1 dw ?
.code
main proc far
mov ax,@data
mov ds,ax


mov bx,offset strlist
mov chr1,bx
mov cx,1

k1: mov ah,0ah
lea dx,strlist
int 21h

mov dl,[bx]
mov ah,02h
int 21h

cmp cx,12
je k2

inc bx
inc cx

jmp k1

k2: cmp cx,1
je fine

mov dl,[bx]
mov ah,02h
int 21h

dec bx
dec cx

jmp k2

fine: mov ah,4ch
int 21h
main endp
end main

imanss
سه شنبه 30 آذر 1389, 11:34 صبح
این که نوشتم برا 12 کاراکتر که از ورودی میگیره بعد از خون 1 میره به خونه 12 دوباره یک حلقه نوشتم که برنامه عکس بشه میدونم اشتباه میخوام راهنماییم کنی

xman_1365_x
سه شنبه 30 آذر 1389, 15:42 عصر
خوب مسلما مشكل داره اما خودت دقت كن پيداش كن
چون با وقفه اي براي گرفتن ليستي از كاراكتر نوشتي منم برات همينطور نوشتم نه اينكه بياد يكي يكي بگيره
با نگاه كردن به اين بايد مشكلت حل شه(اين برنامه دقيقا همون چيزي هست كه مي خواي!)
من اين برنامه رو در پست هاي قبل با گرفتن ورودي به صورت كاراكتري نوشته بودم اينجا شد رشته اي از كاراكتر

سورس را برداشتم تا افرادي كه از الان ميان كمي تحقيق كنند تا ياد بگيرند!

imanss
سه شنبه 30 آذر 1389, 23:21 عصر
مرسی آقا xman واقعا ممنونم tanks

imanss
سه شنبه 30 آذر 1389, 23:22 عصر
.model small
.stack 32h
.data

msg db '*****','$'
msg1 db '',13,10,'$'

.code
main proc far


mov ax,@data
mov ds,ax

mov bx,offset msg
mov cx,2

p1: mov dl,[bx]
mov ah,02h
int 21h
cmp cx,1
je p2



p2: mov ah,09h
lea dx,msg1
int 21h

mov cx,2

cmp cx,1
je p3


mov dl,[bx]
mov ah,02h
int 21h


inc bx
dec cx

jmp p2

p3: mov ah,09h
lea dx,msg1
int 21h

mov cx,3

cmp cx,1
je p4

mov dl,[bx]
mov ah,02h
int 21h

inc bx
dec cx

jmp p3

p4: mov ah,09h
lea dx,msg1
int 21h


mov cx,4

cmp cx,1
je p5


mov dl,[bx]
mov ah,02h
int 21h

inc bx
dec cx

jmp p4

p5: mov ah,09h
lea dx,msg1
int 21h



mov cx,5

cmp cx,1
je p6


mov dl,[bx]
mov ah,02h
int 21h


inc bx
dec cx

jmp p5

p6: mov ah,09h
lea dx,msg1
int 21h


mov cx,4

cmp cx,1
je p7


mov dl,[bx]
mov ah,02h
int 21h

inc bx
dec cx

jmp p6


p7: mov ah,09h
lea dx,msg1
int 21h


mov cx,3


cmp cx,1
je p8


mov dl,[bx]
mov ah,02h
int 21h


inc bx
dec cx

jmp p7

p8: mov ah,09h
lea dx,msg1
int 21h


mov cx,2

cmp cx,1
je p9


mov dl,[bx]
mov ah,02h
int 21h


inc bx
dec cx

jmp p8

p9: mov ah,09h
lea dx,msg1
int 21h

mov dl,[bx]
mov ah,02h
int 21h


mov cx,1

cmp cx,1
je f1


f1: mov ah,4ch
int 21h

main endp

end main

imanss
سه شنبه 30 آذر 1389, 23:33 عصر
با این برنامه میخوام ستاره را به صورت لوزی چاپ کنم نمیدونم چرا درست اجرا نمیشه
*
**
***
****
*****
****
***
**
*

imanss
سه شنبه 30 آذر 1389, 23:39 عصر
اول برنامه باید مینوشتم mov cx,1 یعنی از یک ستاره شروع کنه

xman_1365_x
چهارشنبه 01 دی 1389, 00:26 صبح
اينجا جاش نيست بايد تاپيك جداگانه بزنيد،فردا شب وقت شد ميام راهنمايي مي كنم اما اين يكي رو برات نمي نويسما،بايد سعي كني خودت حلش كني!
ضمنا اين برنامه هايي كه خودت نوشتي ميگم برو مشكلشو پيدا كن اصلا ميري؟:چشمک:
الان خوابم مياد،فردا هم امتحان دارم هيچي نخوندم با اين حال ميام اينجا جواب ميدم:لبخند:
براي تشكر هم كافبه پايين كامنتم بزنيد تشكر
موفق باشي