PDA

View Full Version : نمایش پیغام در کادر



fatimah
یک شنبه 09 بهمن 1384, 14:12 عصر
دوستان سلام . برنامه ای که اینجا نوشتم به این منظوره که :
اول صفحه نمایش رو پای کنه ، یه کادری بکشه بعد اسم و فامیل و شماره دانشجویی رو بنویسه وسط اون . بعد براش یه منوی رنگی در نظر بگیره که بتونیم روش حرکت کنیم ( یعنی وقتی جهت
نمای بالا و پایین رو می زنمیم منومون رنگی بشه و انتخاب بشه ) . بعد اگه که کلید اسکیپ رو زدیم خارج بشه ( چون نمی دونشتم کدش چیه به جاش از کیو استفاده کردم . وقتی این کلید زده شده از ما با نمایش پیغامی بالای اون کادره بنویسه که آیا می خوای خارج بشه یا نه ؟ اگه وای رو زدیم خارج و اگه ان رو زدیم اون پیغامه بره . البته با استفاده از ماکرو . من برنامه رو نوشتم . تا یه حدیش . نمی دونم چقدرش درسته چون نمی دونم ماکروم ایراد داره یا نه ؟ چون از ماکرو و نام اون ایراد میگیره . خواهشا بگین ایراداش کجاست ؟ تا فردا بیشتر وقت ندارم . اگه منوی رنگی هم نداشته باشم طوری نیست که لا اقل اونای دیگش جواب بده . این بر خلاف قوانین نیست دیگه . پس تو رو خدا یکی ایراداش رو برام درست کنه . ممنون میشم .
موفق باشین .....


datasg segment
cr equ 0dh
lf equ 0ah
msg1 db "Fatimah$"
msg2 db "D.... $"
msg3 db "99 .... $"
msg4 db " are you sure to exit ? "
empty db ' ' ;; در نظر گرفتن فضای خالی برای چاپ آن به منظور پاک کردن پیغام خروج
menu db 0dah,40 dup(0c4h),0bfh,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0c0h,40 dup(0c4h),0d9h,'$'
datasg ends
codesg segment
main proc far
assume ds:datasg,cs:codesg
mov ax,datasg
mov ds,ax
clrscr
mov ah,02h
mov dl,20
mov dh,20
int 10h
;; رسم کادر
mov ah,09h
mov dx,offset menu
int 21h
curser 20,28
prt msg1
curser 21,28
prt msg2
curser 22,28
prt msg3
mov ah,01h
int 16h
mov ah,0h
int 16h
cmp al,'q'
curser 6,28
prt msg4
mov ah,0h
int 16h
cmp al,'y'
je exit
curser 6,28
prt empty
exit:
mov ah,4ch
int 21h
main endp
codesg ends
;; کد مربوط به ماکروی پاک کردن صفحه نمایش
clrscr macro
mov ah,06h
mov al,0
mov bl,07
cx,00
mov dx,184f
int 10h
endm
;; کد مربوط به ماکروی چاپ نام ، فامیل و شماره دانشجویی
prt macro text
mov ah,09h
mov bx,offset text
int 10h
endm
;; کد مربوط به ماکروی بردن کرسر به سطر و ستون خاص
curser macro r,l
mov ah,02h
mov bh,0h
mov dl,c
mov dh,r
int 10h
endm
end main

من به این برنامه نیاز دارم . پس خواهشا ...

fatimah
دوشنبه 10 بهمن 1384, 16:11 عصر
چرا هیچ کی کمک نمی کنه ؟؟؟؟

aakh1361
سه شنبه 11 بهمن 1384, 14:32 عصر
datasg segment
cr equ 0dh
lf equ 0ah
msg1 db "Fatimah$"
msg2 db "D.... $"
msg3 db "99 .... $"
msg4 db " are you sure to exit ? ","$"
empty db ' ' ;; در نظر گرفتن فضای خالی برای چاپ آن به منظور پاک کردن پیغام خروج
menu db 0dah,40 dup(0c4h),0bfh,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf
db 0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0c0h,40 dup(0c4h),0d9h,'$'
datasg ends
codesg segment
;; کد مربوط به ماکروی پاک کردن صفحه نمایش
clrscr macro
mov ah,06h
mov al,0
mov bh,7
mov bl,8
mov cx,00
mov dx,184fH
int 10h
endm
;; کد مربوط به ماکروی چاپ نام ، فامیل و شماره دانشجویی
prt macro textstr
mov ah,09h
lea dx,textstr
int 21h
endm
;; کد مربوط به ماکروی بردن کرسر به سطر و ستون خاص
curser macro r0,l0
mov ah,02h
mov bh,0h
mov dl,l0
mov dh,r0
int 10h
endm
main proc far
assume ds:datasg,cs:codesg
mov ax,datasg
mov ds,ax
Start:
clrscr
mov ah,02h
mov bh,0
mov dl,20
mov dh,20
int 10h
;; رسم کادر
mov ah,09h
lea dx,menu
int 21h
curser 20,28
prt msg1
curser 21,28
prt msg2
curser 22,28
prt msg3
mov ah,01h
int 16h
; Check If Preess Q
Q1:
mov ah,0h
int 16h
cmp al,'q'
jnz Q1
curser 6,28
prt msg4


CheckStatusExit:
mov ah,0h
int 16h
cmp al,'y'
jz _exit
cmp al,'Y'
jz _exit
cmp al,'n'
jz ReStart
cmp al,'N'
jz ReStart
jmp CheckStatusExit


curser 6,28
prt empty
_exit:
mov ah,4ch
int 21h
ReStart:
Jmp Start
main endp
codesg ends
end main


تا حدودی اصلاح شد

fatimah
چهارشنبه 12 بهمن 1384, 18:22 عصر
سلام .
با تشکر فراوان از دوست خوبمون aakh . این برنامه ای که این جا نوشتم همون برنامه بالاییه . فقط ببینین ایرادش کجاست که منو رو برام رنگی نمی کنه . دستورش هست ولی هیچ عملی در این زمینه انجام نمی ده . خواهشا اگه کسی میتونه بهم بگه که خیلی بهش نیاز دارم . ممنون میشم ..

datasg segment
cr equ 0dh
lf equ 0ah
msg1 db "Fatimah$"
msg2 db "D. $"
msg3 db "9985 $"
msg4 db " are you sure to exit ? y/n ","$"
empty db ' ' ;; در نظر گرفتن فضای خالی برای چاپ آن به منظور پاک کردن پیغام خروج
menu db 0dah,40 dup(0c4h),0bfh,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf
db 0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0b3h,40 dup(?),0b3h,cr,lf,0c0h,40 dup(0c4h),0d9h,'$'
datasg ends
codesg segment
;; Clear Screen
clrscr macro
mov ah,06h
mov al,0
mov bh,7
mov bl,8
mov cx,00
mov dx,184fH
int 10h
endm
;; Print Of name , family , id
prt macro textstr
mov ah,09h
lea dx,textstr
int 21h
endm
;; Goto Curser
curser macro r0,l0
mov ah,02h
mov bh,0h
mov dl,l0
mov dh,r0
int 10h
endm
main proc far
assume ds:datasg,cs:codesg
mov ax,datasg
mov ds,ax
mov di,1508
mov ah,07h
mov al,0dah
mov es:[di],ax
inc di
inc di

mov cx,12
next2:mov ah,07h
mov al,0c4h
mov es:[di],ax
inc di
inc di

loop next2
mov ah,07h
mov al,0bfh
mov es:[di],ax

mov di,1668
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,1828
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,1988
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2148
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2308
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2468
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2628
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2788
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2948
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov ah,07h
mov al,0c0h
mov es:[di],ax
inc di
inc di

mov cx,12
next3:mov ah,07h
mov al,0c4h
mov es:[di],ax
inc di
inc di
loop next3

mov ah,07h
mov al,0d9h
mov es:[di],ax
inc di
inc di

mov di,1694
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,1854
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2014
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2174
mov ah,08h
mov al,0b3h
mov es:[di],ax

mov di,2334
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2494
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2654
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2814
mov ah,07h
mov al,0b3h
mov es:[di],ax

mov di,2150
mov cx,12
mov al,''
mov ah ,13h
l1: mov es:[di],ax
inc di
inc di
loop l1
Start:
clrscr
;; mov ah,02h
;; mov bh,0
;; mov dl,20
;; mov dh,20
;; int 10h
;; Drawing Rectangle
curser 8,0
mov ah,09h
lea dx,menu
int 21h
curser 11,15
prt msg1
curser 13,15
prt msg2
curser 15,15
prt msg3
mov ah,01h
int 16h
;; Check If Preess Q
Q1:
again2:mov ah,0h
int 16h
cmp ax,011bh
jnz Q1
curser 4,6
prt msg4


CheckStatusExit:
mov ah,0h
int 16h
cmp al,'y'
jz _exit
cmp al,'Y'
jz _exit
cmp al,'n'
jz ReStart
cmp al,'N'
jz ReStart
jmp CheckStatusExit

curser 4,6
prt empty
NEXTg1: CMP AX,48E0H ;UP
JNE NEXTg2
mov di,2150
mov cx,12
mov al,''
mov ah ,07h
lu1: mov es:[di],ax
inc di
inc di
loop lu1


NEXTg2: CMP AX,4DE0H
JNE NEXTg3 ;RIGHT
;.....

NEXTg3: CMP AX,50E0H ;DOWN
JNE NEXTg4

NEXTg4: CMP AX,4BE0H ;LEFT
JNE again2

jmp again2


_exit:
curser 20,0
mov ah,4ch
int 21h
ReStart:
Jmp Start
main endp
codesg ends
end main