PDA

View Full Version : مبتدی: سلام من یه سوال داشتم یعنی یه کمک میخواستم از دوستان



hosein320
یک شنبه 03 دی 1391, 13:27 عصر
سلام من یه سوال داشتم یعنی یه کمک میخواستم از دوستان یه برنامه دارم که میخوام با روال بنویسمش
البته برنامه آماده است فقط میخوام با روال بنویسمش ممنون میشم کمکم کنید:قلب:

اینم کد برنامه است که باید با روال نوشته بشه:لبخندساده:

http://uploadkon.ir/?file=Project%20III.rar

hosein320
یک شنبه 03 دی 1391, 15:23 عصر
کسی نیست کمک کنه:گریه:
خیلی فوریه خواهش میکنم

rayarasool
یک شنبه 03 دی 1391, 19:15 عصر
روال منظورتون زیر برنامست؟؟

hosein320
یک شنبه 03 دی 1391, 22:09 عصر
روال منظورتون زیر برنامست؟؟

اره فکر کنم
شبیه تابع تو بقیه زبونا

rayarasool
دوشنبه 04 دی 1391, 20:21 عصر
فکر میکنم اگه کد رو بزارید بهتر باشه !!!

اینجوری هم من میتونم ببینم هم همه ی دوستان .

اینجوری لینک ندید (لطفا)

hosein320
دوشنبه 04 دی 1391, 23:35 عصر
اینم کدش
فط من عجله دارم


datasg segment 'data'
buf db 49 dup('$')

satr db ?
sotoon db ?

datasg ends
codesg segment
main proc far
assume cs:codesg,ds:datasg
mov bx,datasg
mov ds,bx
;ßÇÏÑ Çæá
mov ch,0
mov cl,0
mov dh,24
mov dl,79
mov bh,20h
mov al,25
mov ah,6h
int 10h

;ßÇÏÑÏæã
mov ch,10
mov cl,5
mov dh,16
mov dl,11
mov bh,40h
mov al,7
mov ah,6h
int 10h

mov dh,10
mov dl,5
mov bh,0
mov ah,2h
int 10h

mov satr,dh
mov sotoon,dl


mov si,offset buf


a1:

mov ah,8h
int 21h

cmp al,'e'
je del
cmp al,'q'
jne en
jmp end

en:

cmp al,'r'
je right
cmp al,'l'
je leftt
cmp al,'u'
je upp
cmp al,0dh
je ent
cmp al,'d'
je downn
jne def

def:

cmp al,61h
jae if
jmp else

if:

cmp al,7ah
jbe iff
jmp else

iff:

mov [si],al
mov dl,[si]
mov ah,2h
int 21h

jmp right

else:

cmp al,41h
jae ifff
jmp else1

ifff:

cmp al,5ah
jbe iffff
jmp else1

iffff:

mov [si],al
mov dl,[si]
mov ah,2h
int 21h
jmp right

else1:

jmp a1

del:

mov dl,' '
mov ah,2h
int 21h
mov cl,'$'
mov [si],cl
jmp right

endd:

jmp end

leftt:

jmp left

upp:

jmp up

downn:

jmp down

ent:

mov bl,'$'
cmp [si],bl
je a1
mov bl,[si]
xor bl,20h
mov [si],bl
mov dl,[si]
mov ah,2h
int 21h

jmp right

right:

cmp sotoon,11
je f
jb right1

f:

cmp satr,16
je right3
jne right2

right1:

add sotoon,1
inc si
mov dh,satr
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h
cmp sotoon,11
ja right2

jmp a1

right2:

cmp satr,16
je right3

add satr,1
mov sotoon,5
inc si
mov dh,satr
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h

jmp a1

right3:

mov dh,16
mov dl,11
mov bh,0
mov ah,2h
int 10h
jmp a1
mov si,49

jmp a1


left:

cmp sotoon,5
je ff
ja left1

ff:

cmp satr,10
je left3
jne left2

left1:

sub sotoon,1
dec si
mov dh,satr
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h
cmp sotoon,5
jb left2

jmp a1

left2:

cmp satr,10
je left3
sub satr,1
dec si
mov sotoon,11
mov dh,satr
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h

jmp a1

left3:

mov dh,10
mov dl,5
mov bh,0
mov ah,2h
int 10h
mov si,0

jmp a1

up:

cmp satr,10
je up1
ja up2

up2:

sub si,7
dec satr
mov dh,satr
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h
cmp satr,10
je up1
jmp a1

up1:

mov dh,10
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h
jmp a1


down:

cmp satr,16
je down1
ja down2

down2:

add si,7
inc satr
mov dh,satr
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h
jmp a1

down1:

mov dh,16
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h
jmp a1


end:

mov ah,4ch
int 21h
main endp
codesg ends
end main
end

rayarasool
سه شنبه 05 دی 1391, 08:28 صبح
با سلام

متاسفانه برنامه شما خیلی زیاد و من هم نمیتونم براتون همشو بنویسم اما یه بخشیش رو انتخاب کردم تا نحوه رو یادتون بدم.

در کد زیر :

cmp satr,16
je down1 //در اینجا میشه از نوشتن جامپ خودداری کرد , و اون رو به call تغییر داد .
ja down2 //این جا هم به همین صورت...

down2: حالا این عبارت را برداشته و کل کارهایی که مخصوص down2 هست رو بیرون برنامه اصلی که احتمالا با اسم main هست مینویسیم ما باید برای این کار مثل main خط زیر را بنویسید (اما فراخوانی اش با همان برچسب گذاری در جامث ها فرقی نمیکند. خطی که باید اضافه شود:
(down2 proc near )

البته دقت داشته باشید که درون زیربرنامه متغیر های که استفاده شده اند و نمیخواهید در کل برنامه تغییر کنند را در ابتدا درون استک ریخته و در پایان بردارید.

add si,7
inc satr
mov dh,satr
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h
jmp a1

down1: //برای این روال هم همان کار بالا را انجام دهید .

mov dh,16
mov dl,sotoon
mov bh,0
mov ah,2h
int 10h
jmp a1

در آخر call هم دستور ret را قرار داده و در برنامه اصلی پرش های jmp a1 را قرار دهید .

موفق باشید.