PDA

View Full Version : طراحی منوی خیلی ساده



csharpprogramer88
چهارشنبه 25 آبان 1390, 23:12 عصر
سلام

من چطور باید یک منو تعریف کنم بطوریکه 3 تا انتخاب داشته باشهو کاربر از ورودی 1 یا 2 یا 3 را وارد کنه بعد کارش را انجام بده



انتخاب سوم که خروجه و دو تا حالت دیگه

آیا باید از پروسیجر استفاده کنم ؟

آیا نمونه کد ساده دارید؟

xman_1365_x
جمعه 27 آبان 1390, 00:12 صبح
اول جستجو کنید!!!

طراحی منو در همین بخش
و
8086 Assembly cls clrscr or clear the screen (http://muruganad.com/8086/8086-Assembly-cls-clrscr-or-clear-the-screen.html)

نمونه گرافیکی (http://forum.persiantools.com/t46790.html#post1312567)

gotoxy (http://barnamenevis.org/showthread.php?151173-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-gotoxy)

بنویسید مشکلی بود کدتون رو بزارین راهنمایی میکنم
الگوریتم کار سادست یه حلقه بینهایت میزارین و داخلش باید برنامه رو کنترل کنی با شرط های منطقی که همون گزینه منو هست بعد به پروسیجر های مربوطش پرش میکنه و حلقه ادامه داره تا گزینه خروج زده شه
برای پروسیجر اجباری نیست اما کدتون تمیز و خوانا میشه و ساخت یافته اونطوری پرش هایی انجام میشه که وقتی برنامه طولانی شه خودتون نمیدونین داره چه اتفاقی میوفته
کد هم توی گوگل میزدید زیاده

Delphi Coder
جمعه 27 آبان 1390, 10:53 صبح
سلام

من چطور باید یک منو تعریف کنم بطوریکه 3 تا انتخاب داشته باشهو کاربر از ورودی 1 یا 2 یا 3 را وارد کنه بعد کارش را انجام بده



انتخاب سوم که خروجه و دو تا حالت دیگه

آیا باید از پروسیجر استفاده کنم ؟

آیا نمونه کد ساده دارید؟

اگر سوالتون رو کامل بپرسید کسی که تاپیک رو میخونه مجبور نیست حدس بزنه شما دنبال چی هستید. اسمبلی تحت DOS منظورتون هست یا تحت ویندوز؟ یا اگر تکه کدی اگر داشتیم میخواید با masm اسمبل کنید یا tasm

csharpprogramer88
جمعه 27 آبان 1390, 14:43 عصر
با tasm البته asm هم باشه خوبه تحت داس میخام

ممنونم

xman_1365_x
شنبه 28 آبان 1390, 23:06 عصر
نمونه گرفیکی رو که پست داده بودم و نمونه متنی رو براتون نوشتم چون برای شما و دیگر دوستان میتونه مفید باشه
اگر برای 80386 هم دیگر دوستان بخوان هیچ فرقی با این کد من نداره فقط بجای وقفه ها از توابع api در kernel32 استفاده میشه و میتونین از ثبات های 32 بیتی هم استفاده کنند.



gotoxy macro row,col
mov ah,02h
mov dh,row
mov dl,col
mov bh,0
int 10h
endm

.model medium

.data
cret equ 13
newl equ 10
tab equ 09

pkey db cret,newl,"press any key for exit...$"
tablemunu db "1.proc1:)",13,10
db "2.proc2:)",13,10
db "3.Exit Program",13,10
db cret,newl,tab,"your select:",'$'
numselect db 0
selproc1 db "proc1 body$"
selproc2 db "proc2 body$"
.stack dw 128 dup(0)

.code
start:
.startup

main proc far

loopForEver:
call clrScr
call showMenu
call getYourSelect

cmp numselect,1
je select1
cmp numselect,2
je select2
cmp numselect,3
je select3
jmp resume

select1:
call proc1
jmp resume
select2:
call proc2
jmp resume
select3:
call exitProgram
resume:

jmp loopForEver

main endp

proc2 proc near
call clrScr
mov ah,09
lea dx,selproc2
int 21h
; wait for any key....
mov ah, 1
int 21h
ret
proc2 endp

proc1 proc near
call clrScr
mov ah,09
lea dx,selproc1
int 21h
; wait for any key....
mov ah, 1
int 21h
ret
proc1 endp

getYourSelect proc near
mov ah, 1
int 21h
sub al,30h
mov numselect,al
ret
getYourSelect endp


showMenu proc near
mov ah,9
lea dx,tablemunu
int 21h
ret
showMenu endp

clrScr proc near
mov ax,0600h
mov bh,07h
xor cx,cx
mov dx,184fh
int 10h
gotoxy 0,0
ret
clrscr endp

exitProgram proc near
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
exitProgram endp

ends

end start ; set entry point and stop the assembler.



موفق باشی

csharpprogramer88
یک شنبه 29 آبان 1390, 18:18 عصر
آقا تشکر که جواب دادی من اسمبلی وارد نیستم با asm , tasm اجرا کردم ارور داره با asm 4 تا ارور داره

خواهشا راهنمایی کنید چه کار کنم

xman_1365_x
یک شنبه 29 آبان 1390, 18:53 عصر
آقا تشکر که جواب دادی من اسمبلی وارد نیستم با asm , tasm اجرا کردم ارور داره با asm 4 تا ارور داره

خواهشا راهنمایی کنید چه کار کنم

بله من با emu8086 نوشتم و با tasm تست کردم روی خط 24 که پشته تعریف شده خطا داره به صورت زیر تصحیح بفرمایید.

.stack 128
هنگامی که شما در هنگام اسمبل یا لینک کردن فایل با خطایی روبرو شدین پیغام مربوطه رو بخونید اگر در خط مشخص شده متوجه خطای خودتون شدین که هیچ در غیر اینصورت خطا را در گوگل جستجو کنید شما رو راهنمایی میکنه
اگر در زمان اجرا خطایی رخ داد با دیباگ در ویندوز یا emu8086 برنامه رو بررسی میکنید البته با دیباگ ویندوز کاری سخت و وقت گیر هست (برای برنامه های نوشته شده برای پردازنده 8086)
موفق باشی