تو بخش equal
ADD operator,30h
کو؟ چرا حذفش کردید ؟
لطفا رو همون کدی که بهتون دادم توابع تقسیم و ضرب و کم رو کامل کنید و تست کنید . و نتیجه رو اعلام کنید
تو بخش equal
ADD operator,30h
کو؟ چرا حذفش کردید ؟
لطفا رو همون کدی که بهتون دادم توابع تقسیم و ضرب و کم رو کامل کنید و تست کنید . و نتیجه رو اعلام کنید
توکل بخدا
http://DeepLearning.ir
اولین و تنها مرجع یادگیری عمیق ایران
هرکس از ظن خود شد یار من
از درون من نجست اسرار من
من تو پست قبلیم یه سوال ازتون کردم و بعد گفتم اون کدی که بهتون دادم رو سعی کنید کاملش کنید . ببنید باز ارور دارید یا نه .
من سرم شلوغ شده و سریع نمیتونم بکارتون برسم پس خودتونم کمی کمک کنید که کارا سریعتر پیش بره .
این کاری که گفتمو انجام بدید نتیجشو بهم بگید ببینم چیکار باید بکنید.
توکل بخدا
http://DeepLearning.ir
اولین و تنها مرجع یادگیری عمیق ایران
هرکس از ظن خود شد یار من
از درون من نجست اسرار من
نمیدونم چرا اپراتور نمیاد اونچه که کاربر میخواد رو انجام بده؟
;;;;;;;;;SEE WHICH BUTTON(COLOR) WAS CLICKED;;;
cmp al,9
je godown ;equalsign
;jmp mouse
cmp al,1
je one
cmp al,2
je two
cmp al,3
je three
cmp al,4
je four
cmp al,5
je five
cmp al,6
je six
cmp al,7
je seven
cmp al,8
je eight
cmp al,10
je nine
cmp al,11
je zero
;cmp al,13;;;;;;
;call subsign ;
;jmp mouse ;
;
cmp al,14 ;
call mulsign ;
jmp mouse ;
;
;
;cmp al,15 ;
;call divsign ;;;;;;;;;>> ba seda kardane tavabe miad alamat gozari anjam midahad
jmp mouse ;
;
;cmp al,12 ;
;call addsign ;
;jmp mouse ;
nine1:
jmp nine
zero1:
jmp zero
;--------------------------
one:
mov digit,'1'
call getdigit
jmp mouse
;----------------------------
two:
mov digit,'2'
call getdigit
jmp mouse
;---------------------------
three:
mov digit,'3'
call getdigit
jmp mouse
;---------------------------
goDown:
call equalsign ;do_add;
jmp mouse
;--------------------------
four:
mov digit,'4'
call getdigit
jmp mouse
;--------------------------
five:
mov digit,'5'
call getdigit
jmp mouse
;----------------------------
six:
mov digit,'6'
call getdigit
jmp mouse
;----------------------------
seven:
mov digit,'7'
call getdigit
jmp mouse
;----------------------------
eight:
mov digit,'8'
call getdigit
jmp mouse
;----------------------------
nine:
mov digit,'9'
call getdigit
jmp mouse
;----------------------------
zero:
mov digit,'0'
call getdigit
jmp mouse
;---------------------------
exit:
;;;;;;;;;;ReStore Graphic Mode;;;;;;;;;;;;
pop ax
mov ah,0
int 10h
mov ax,4c00h
int 21h
main endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;function;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============addsign==============;;;;;;;;
;
;addsign proc ;
;mov status,2 ;
;mov operator,'+' ;
;mov counter,0 ;
;ret
;addsign endp ;
;
;=============subsign============== ;
;
;subsign proc ;
;mov status,2 ;
;mov operator,'-'
;mov ah,02h
;mov dl,operator
;int 21h
;mov counter,0 ;
;ret ;
;subsign endp ;
;
;=============mulsign============== ;
;
mulsign proc ;
mov status,2 ;
mov operator,'*'
mov ah,02h
mov dl,operator
int 21h ;;;;;;;;;>> anjame amaliate alamat gozari
mov counter,0 ;
ret ;
mulsign endp ;
;
;===============divsign============ ;
;
;divsign proc ;
;mov status,2 ;
;mov operator,'%'
;mov ah,02h
;mov dl,operator
;int 21h ;
;mov counter,0 ;
;ret ;
;divsign endp ;
;
;==============equalsign=========== ;
;
equalsign proc
;cmp operator,'+'
;je do_add1
;cmp operator,'-'
;je do_sub1
cmp operator,'*'
je do_mul1
;cmp operator,'%'
;je do_div1
;do_add1:
;call do_add
;jmp exit_proc
;do_sub1:
;call do_sub
;jmp exit_proc
do_mul1:
call do_mul
jmp exit_proc
;do_div1:
;call do_div
;jmp exit_proc
exit_proc:
ret
equalsign endp
;
;==================================;;;;;;;;
;do_add PROC
;atoi string ;
;mov bx,ax ;
;atoi string2 ;
;;add ax,bx ;
;itoa cresult,ax
;gotoxy 20,20
;lea si,cresult
;call puts
;ret ;s is not recognized as an internal or external command,operable program or batch file.
;do_add ENDP
;==========================================
;do_sub PROC
;atoi string ;
;mov bx,ax ;
;atoi string2 ;
;sub bx,ax ;
;itoa cresult,bx
;gotoxy 10,20
;lea si,cresult
;call puts
;ret
;do_sub ENDP
;===========================================
do_mul PROC
atoi string ;
mov bx,ax ;
atoi string2 ;
imul bx ;
itoa cresult,ax
gotoxy 10,20
lea si,cresult
call puts
ret
do_mul ENDP
;===================================
;do_div PROC
;atoi string ;
;mov bx,ax ;
;atoi string2
;xchg ax,bx
;cwd ;
;idiv bx ;
;itoa cresult,ax
;gotoxy 10,20
;lea si,cresult
;call puts
;ret
;do_div ENDP
;=================get digit========;;;;;;;;
;
GETDigit PROC ;
;
CMP STATUS, 1 ;
JG NUM2 ;
LEA DI, STRING ;
LEA SI, STRING ;
JMP RESTOFCODE ;
NUM2: ;
LEA DI,STRING2 ;
LEA SI,STRING2 ;
RESTOFCODE: ;;;;;>> makani ke reshteha va etelaate morede nazar ra dar khod daryaft mikonad
MOV DL,DIGIT ;
MOV BX,COUNTER ;
CMP BX,8 ;
JG Ex ;
MOV BYTE PTR[DI+BX] , DL ;
INC BX ;
MOV COUNTER ,BX ;
GOTOXY 8,20 ;
CALL PUTS ;
Ex: ;
RET ;
GETDigit ENDP ;
;
;===================================;;;;;;;
ویرایش توسط NIIT : 15th August 2011 در ساعت 11:18 PM
بر اساس صحبت هایی که در پیام خصوصی کردید در مورد مشکلتون هم باید بگم زیر هر فراخونی تابع یه jmp هست درسته ؟ این جامپها همه رو غیر فعال کنید به غیر از اخرین jmp
یعنی یک همچین چیزی دارید شما:
CMP AL,13
CALL SUBSIGN
JMP MOUSE
CMP AL,14
CALL MULSIGN
JMP MOUSE
CMP AL,15
CALL DIVSIGN
JMP MOUSE
CMP AL,12
CALL ADDSIGN
JMP MOUSE ;
به غیر از اخرین جامپ که بعد از ADDSIGN هست بقیه رو کامنت کنید . دلیل این که این اتفاق براتون می افته همینه . چون وقتی به اولین مقایسه میرسه اگر برابر بود تابع مربوطه فراخونی میشه و اگر نبود دوباره میپره به ابتدای تابع! باز دوباره میاد رنگها رو چک کنه به اولی که میرسه میبینه نیست دوباره میپره میاد اول موس و الی اخر و اینطور هست که مشکل ایجاد میشه .
این اشتباه از طرف من بود و بخاطر کم حواسی من براتون بوجود اومد شرمنده . خوب شد یاداوری کردید اصلا بهش توجه نکرده بودم .
فقط یه نکته دیگه اگر دیدید اتفاقهای عجیب غریبی می افته تو برنامتون بعد از این تغییرات وارد هر تابع که میشید ابتدای اون تابع از push regs استفاده کنید و وقتی میخواید Ret کنید . دقیقا قبل از دستور Ret شما pop regs کنید . اینها رو نوشتم و توی کدتون هست .
امیدوارم موفق باشید .
توکل بخدا
http://DeepLearning.ir
اولین و تنها مرجع یادگیری عمیق ایران
هرکس از ظن خود شد یار من
از درون من نجست اسرار من
نه....، دوباره نشد آقای master ، من اونطوری که شما فرموده بودین رو انجام دادم ، اول بار که همه jmpها جز jmp مربوط به addsign رو coment کردم ، اومد عملیات جمع رو انجام داد اما وقتی خواستم عملیاتای دیگه ای رو دوباره بعد از باز کردن برنامه جدید امتحان کنم دیدم دوباره جمع رو انجام میده ، روی این حساب اومدم عملیات جمع رو coment کردم و بعد از امتحان دوباره دیدم که دوباره اومد همون کار قبلی رو که خدمتتون عرض کرده بودم انجام داد، یعنی اومد از اول چک کرد به اولین مقایسه که رسید اومد operator رو متناسب با اون مقدار دهی کرد و عملیات رو انجام داد بدون توجه به خواسته کاربر . تصور میکنم اینطور باشه و اگه نظرم اشتباه هست بفرمایید تا دنبال ایده ی دیگه ای باشم ، اینکه :
باتوجه به گفته ای که خدمتتون گفتم من به این نتیجه رسیدم که operator نمیاد به خوسته کاربر توجهی داشته باشه و میاد براساس ترتیبی که از بالا به پایین چک میکنه مقدار operator رو قرار میده ،یعنی operator یه ظرفه که وقتی بار اول پر بشه دیگه خالی نمیشه ، یعنی بار اول که مقدارش صفر بود میاد مقدار میذاره و دیگه همون مقدار در اون fix ، ثابت میمونه، پس ما باید کاری کنیم که بیاد بعد از هر بار خواسته کاربر مقدار operator رو صفر کنه و گوش به زنگ خواسته کاربر باشه ، و باید الان دنبال این جایگاه باشم (جایگاهی مناسب که بتونه مقدار oprerator رو صفر کنه)، فقط سوالی که برام الان ایجاد شده اینه که ، وقتی برنامه بسته میشه و دوباره run میشه چرا باید برنامه همون مقدار قبلی ای که operator داشته رو انجام بده؟
ممنون میشم راهنمایی بفرمایین
بااحترام از شما
;;;;;;;;;;;READ PIXEL UNDER CURSOR;;;;;;;;;
dec cx
mov ah,0dh
mov bh,0
int 10h
inc cx
;;;;;;;;;SEE WHICH BUTTON(COLOR) WAS CLICKED;;;
cmp al,9
je godown ;equalsign
;jmp mouse
cmp al,1
je one
cmp al,2
je two
cmp al,3
je three
cmp al,4
je four
cmp al,5
je five
cmp al,6
je six
cmp al,7
je seven
cmp al,8
je eight
cmp al,10
je nine
cmp al,11
je zero
cmp al,13;;;;;;
call subsign ;
;jmp mouse ;
;
cmp al,14 ;
call mulsign ;
;jmp mouse ;
;
;
cmp al,15 ;
call divsign ;;;;;;;;;>> ba seda kardane tavabe miad alamat gozari anjam midahad
;jmp mouse ;
;
;cmp al,12 ;
;call addsign ;
jmp mouse ;
nine1:
jmp nine
zero1:
jmp zero
;--------------------------
one:
mov digit,'1'
call getdigit
jmp mouse
;----------------------------
two:
mov digit,'2'
call getdigit
jmp mouse
;---------------------------
three:
mov digit,'3'
call getdigit
jmp mouse
;---------------------------
goDown:
call equalsign ;do_add;
jmp mouse
;--------------------------
four:
mov digit,'4'
call getdigit
jmp mouse
;--------------------------
five:
mov digit,'5'
call getdigit
jmp mouse
;----------------------------
six:
mov digit,'6'
call getdigit
jmp mouse
;----------------------------
seven:
mov digit,'7'
call getdigit
jmp mouse
;----------------------------
eight:
mov digit,'8'
call getdigit
jmp mouse
;----------------------------
nine:
mov digit,'9'
call getdigit
jmp mouse
;----------------------------
zero:
mov digit,'0'
call getdigit
jmp mouse
;---------------------------
exit:
;;;;;;;;;;ReStore Graphic Mode;;;;;;;;;;;;
pop ax
mov ah,0
int 10h
mov ax,4c00h
int 21h
main endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;function;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============addsign==============;;;;;;;;
;
;addsign proc ;
;mov status,2 ;
;mov operator,'+' ;
;mov counter,0 ;
;ret
;addsign endp ;
;
;=============subsign============== ;
;
subsign proc ;
mov status,2 ;
mov operator,'-'
;mov ah,02h
;mov dl,operator
;int 21h
mov counter,0 ;
ret ;
subsign endp ;
;
;=============mulsign============== ;
;
mulsign proc ;
mov status,2 ;
mov operator,'*'
;mov ah,02h
;mov dl,operator
;int 21h ;;;;;;;;;>> anjame amaliate alamat gozari
mov counter,0 ;
ret ;
mulsign endp ;
;
;===============divsign============ ;
;
divsign proc ;
mov status,2 ;
mov operator,'%'
;mov ah,02h
;mov dl,operator
;int 21h ;
mov counter,0 ;
ret ;
divsign endp ;
;
;==============equalsign=========== ;
;
equalsign proc
;cmp operator,'+'
;je do_add1
cmp operator,'-'
je do_sub1
cmp operator,'*'
je do_mul1
cmp operator,'%'
je do_div1
;do_add1:
;call do_add
;jmp exit_proc
do_sub1:
call do_sub
jmp exit_proc
do_mul1:
call do_mul
jmp exit_proc
do_div1:
call do_div
jmp exit_proc
exit_proc:
ret
equalsign endp
;
;==================================;;;;;;;;
;do_add PROC
;pushreg
;atoi string ;
;mov bx,ax ;
;atoi string2 ;
;add ax,bx ;
;itoa cresult,ax
;gotoxy 20,20
;lea si,cresult
;call puts
;popreg
;ret ;s is not recognized as an internal or external command,operable program or batch file.
;do_add ENDP
;==========================================
do_sub PROC
pushreg
atoi string ;
mov bx,ax ;
atoi string2 ;
sub bx,ax ;
itoa cresult,bx
gotoxy 10,20
lea si,cresult
call puts
popreg
ret
do_sub ENDP
;===========================================
do_mul PROC
pushreg
atoi string ;
mov bx,ax ;
atoi string2 ;
imul bx ;
itoa cresult,ax
gotoxy 10,20
lea si,cresult
call puts
popreg
ret
do_mul ENDP
;===================================
do_div PROC
pushreg
atoi string ;
mov bx,ax ;
atoi string2
xchg ax,bx
cwd ;
idiv bx ;
itoa cresult,ax
gotoxy 10,20
lea si,cresult
call puts
popreg
ret
do_div ENDP
;=================get digit========;;;;;;;;
;
GETDigit PROC ;
;
CMP STATUS, 1 ;
JG NUM2 ;
LEA DI, STRING ;
LEA SI, STRING ;
JMP RESTOFCODE ;
NUM2: ;
LEA DI,STRING2 ;
LEA SI,STRING2 ;
RESTOFCODE: ;;;;;>> makani ke reshteha va etelaate morede nazar ra dar khod daryaft mikonad
MOV DL,DIGIT ;
MOV BX,COUNTER ;
CMP BX,8 ;
JG Ex ;
MOV BYTE PTR[DI+BX] , DL ;
INC BX ;
MOV COUNTER ,BX ;
GOTOXY 8,20 ;
CALL PUTS ;
Ex: ;
RET ;
GETDigit ENDP ;
;
;===================================;;;;;;;
ویرایش توسط NIIT : 16th August 2011 در ساعت 01:40 AM
شما تو تعریف متغییرتون مقدار پیشفرض operator + هست . اونو بردارید دوباره تست کنید . ( این در مورد اینکه فکر میکنید بعد از اینکه برنامه رو میبنید بازم اپراتور مقدارش حفظ میشه! )
در مورد اینکه اپراتورها دریافت نمیشن میتونید یه کاری کنید . تو هر کدوم از توابعی که علامت اپراتور باید تغییر کنه (مثل subsign و سه تای دیگه )مقدار جدید اپراتور رو چاپ کنید . اینطور میتونید بفهمید که آیا اصلا مقادیر اپراتور در طول برنامه تغییر میکنن یا نه .
نتیجش رو بگید تا بعد ببینم چیکار باید کرد.
بعد نکته دیگه اینکه چرا شما تو تابع
;
equalsign proc
;cmp operator,'+'
;je do_add1
cmp operator,'-'
je do_sub1
cmp operator,'*'
je do_mul1
cmp operator,'%'
je do_div1
;do_add1:
;call do_add
;jmp exit_proc
do_sub1:
call do_sub
jmp exit_proc
do_mul1:
call do_mul
jmp exit_proc
do_div1:
call do_div
jmp exit_proc
exit_proc:
ret
equalsign endp
ابتدای تابع این دستوررو حذف کردین ؟ADD OPERATOR,30H
توکل بخدا
http://DeepLearning.ir
اولین و تنها مرجع یادگیری عمیق ایران
هرکس از ظن خود شد یار من
از درون من نجست اسرار من
الان همین کاری که فرمودین رو انجام دادم ، به ازای هر بار کلیکی که روی هر کدوم از عملیاتها انجام میدم میاد هر سه نماد +،*،% رو نمایش میده و در آخر میاد کار تفریق رو انجام میده
;;;;;;;;;SEE WHICH BUTTON(COLOR) WAS CLICKED;;;
cmp al,9
je godown ;equalsign
;jmp mouse
cmp al,1
je one
cmp al,2
je two
cmp al,3
je three
cmp al,4
je four
cmp al,5
je five
cmp al,6
je six
cmp al,7
je seven
cmp al,8
je eight
cmp al,10
je nine
cmp al,11
je zero
cmp al,13;;;;;;
call subsign ;
;jmp mouse ;
;
cmp al,14 ;
call mulsign ;
;jmp mouse ;
;
;
cmp al,15 ;
call divsign ;;;;;;;;;>> ba seda kardane tavabe miad alamat gozari anjam midahad
;jmp mouse ;
;
;cmp al,12 ;
;call addsign ;
jmp mouse ;
nine1:
jmp nine
zero1:
jmp zero
;--------------------------
one:
mov digit,'1'
call getdigit
jmp mouse
;----------------------------
two:
mov digit,'2'
call getdigit
jmp mouse
;---------------------------
three:
mov digit,'3'
call getdigit
jmp mouse
;---------------------------
goDown:
call equalsign ;do_add;
jmp mouse
;--------------------------
four:
mov digit,'4'
call getdigit
jmp mouse
;--------------------------
five:
mov digit,'5'
call getdigit
jmp mouse
;----------------------------
six:
mov digit,'6'
call getdigit
jmp mouse
;----------------------------
seven:
mov digit,'7'
call getdigit
jmp mouse
;----------------------------
eight:
mov digit,'8'
call getdigit
jmp mouse
;----------------------------
nine:
mov digit,'9'
call getdigit
jmp mouse
;----------------------------
zero:
mov digit,'0'
call getdigit
jmp mouse
;---------------------------
exit:
;;;;;;;;;;ReStore Graphic Mode;;;;;;;;;;;;
pop ax
mov ah,0
int 10h
mov ax,4c00h
int 21h
main endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;function;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============addsign==============;;;;;;;;
;
;addsign proc ;
;mov status,2 ;
;mov operator,'+' ;
;mov counter,0 ;
;ret
;addsign endp ;
;
;=============subsign============== ;
;
subsign proc ;
mov status,2 ;
mov operator,'-'
mov ah,02h
mov dl,operator
int 21h
mov counter,0 ;
ret ;
subsign endp ;
;
;=============mulsign============== ;
;
mulsign proc ;
mov status,2 ;
mov operator,'*'
mov ah,02h
mov dl,operator
int 21h ;;;;;;;;;>> anjame amaliate alamat gozari
mov counter,0 ;
ret ;
mulsign endp ;
;
;===============divsign============ ;
;
divsign proc ;
mov status,2 ;
mov operator,'%'
mov ah,02h
mov dl,operator
int 21h ;
mov counter,0 ;
ret ;
divsign endp ;
;
;==============equalsign=========== ;
;
equalsign proc
add operator,30h
;cmp operator,'+'
;je do_add1
cmp operator,'-'
je do_sub1
cmp operator,'*'
je do_mul1
cmp operator,'%'
je do_div1
;do_add1:
;call do_add
;jmp exit_proc
do_sub1:
call do_sub
jmp exit_proc
do_mul1:
call do_mul
jmp exit_proc
do_div1:
call do_div
jmp exit_proc
exit_proc:
ret
equalsign endp
;
;==================================;;;;;;;;
;do_add PROC
;pushreg
;atoi string ;
;mov bx,ax ;
;atoi string2 ;
;add ax,bx ;
;itoa cresult,ax
;gotoxy 20,20
;lea si,cresult
;call puts
;popreg
;ret ;s is not recognized as an internal or external command,operable program or batch file.
;do_add ENDP
;==========================================
do_sub PROC
pushreg
atoi string ;
mov bx,ax ;
atoi string2 ;
sub bx,ax ;
itoa cresult,bx
gotoxy 10,20
lea si,cresult
call puts
popreg
ret
do_sub ENDP
;===========================================
do_mul PROC
pushreg
atoi string ;
mov bx,ax ;
atoi string2 ;
imul bx ;
itoa cresult,ax
gotoxy 10,20
lea si,cresult
call puts
popreg
ret
do_mul ENDP
;===================================
do_div PROC
pushreg
atoi string ;
mov bx,ax ;
atoi string2
xchg ax,bx
cwd ;
idiv bx ;
itoa cresult,ax
gotoxy 10,20
lea si,cresult
call puts
popreg
ret
do_div ENDP
;=================get digit========;;;;;;;;
;
GETDigit PROC ;
;
CMP STATUS, 1 ;
JG NUM2 ;
LEA DI, STRING ;
LEA SI, STRING ;
JMP RESTOFCODE ;
NUM2: ;
LEA DI,STRING2 ;
LEA SI,STRING2 ;
RESTOFCODE: ;;;;;>> makani ke reshteha va etelaate morede nazar ra dar khod daryaft mikonad
MOV DL,DIGIT ;
MOV BX,COUNTER ;
CMP BX,8 ;
JG Ex ;
MOV BYTE PTR[DI+BX] , DL ;
INC BX ;
MOV COUNTER ,BX ;
GOTOXY 8,20 ;
CALL PUTS ;
Ex: ;
RET ;
GETDigit ENDP ;
;
;===================================;;;;;;;
سلام، وقتتون بخیر، متاسفانه ما هنوز نتونستیم به جوابی برای سوال قبلیمون برسیم،با این حال در انجام باقی پروژه به یه سوال دیگه ای که برامون ایجاد شده ،اینه که ما میخوایم یه menu طراحی کنیم که میاد غالب کلی رو در خودش نگه داره و وقتی اومدیم روی دکمه مورد نظر کلیک کردیم بیاد مثلا منوی file رو بهمون نشون بده اما وقتی میخوایم براش تعیین کنیم که با زدن این رنگ بیا این کار رو انجام بده ، اون قسمتی که علامت سوال گذاشتیم در اون قسمت اذیت میکنه و برامون انجام نمیده
ممنون میشم راهنمایی کنین
include io.h
;;;;;;;;;;;;;macro;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;-------------------------------------------
;;;;;;;;;;;;;;;;;;Button;;;;;;;;;;;;;;;;
window macro color,x1,y1,x2,y2
mov ah,06h
mov bh,color
mov ch,x1
mov cl,y1
mov dh,x2
mov dl,y2
int 10h
endm
;;;;;;;;;;;;;;;save registers;;;;;;;;;;;;;;;
pushreg macro
push ax
push bx
push cx
push dx
endm
;;;;;;;;;;;;;;;;loads registers;;;;;;;;;;;;;;
popreg macro
pop dx
pop cx
pop bx
pop ax
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
print_msg macro msg
mov dx,offset msg
mov ah,9h
int 21h
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
gotoxy macro x1,y1
mov ah,2
mov dl,x1
mov dh,y1
mov bh,0
int 10h
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cls macro color
mov ax,0600h
mov bh,color
mov cx,0000h
mov dx,204fh
int 10h
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
delay macro time
local lbldelay2
local lbldelay1
local lbldelay0
mov bx,time
lbldelay2:
mov dx,time
lbldelay1:
mov cx,time
lbldelay0:
nop
loop lbldelay0
dec dx
jnz lbldelay1
dec bx
jnz lbldelay2
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MENUSHAPE macro
cls 16
window 18,4,20,7,35;file
window 30,4,42,7,57;excute
;window 19,8,20,11,35;open
;window 20,12,20,15,35;save
;window 25,16,20,19,35;search
window 35,8,42,11,57
window 40,12,42,15,57
;---------------------------------
gotoxy 27,6
print_msg msg15 ;file
;gotoxy 27,10
;print_msg msg16 ;open
;gotoxy 27,14
;print_msg msg17 ;save
;gotoxy 27,18
;print_msg msg18 ;search
;------------------
gotoxy 47,6
print_msg msg19 ;calculator
gotoxy 45,10
print_msg msg20 ;excute
gotoxy 50,14
print_msg msg21 ;exit
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
menufile macro
cls 16
window 19,8,20,11,27
window 20,12,20,15,27
window 25,16,20,19,27
gotoxy 27,10
print_msg msg16 ;open
gotoxy 27,14
print_msg msg17 ;save
gotoxy 27,18
print_msg msg18 ;search
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;menuexcute macro
;cls 16
;window 35,8,30,11,37
;window 40,12,30,15,37
;endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;stack segment;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STACK SEGMENT
Dw 100H DUP(?)
STACK ENDS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;data segment;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
data segment
msg15 db 'file',"$"
msg16 db 'open',"$"
msg17 db 'save',"$"
msg18 db 'search',"$"
msg19 db 'excute',"$"
msg20 db 'calculator',"$"
msg21 db 'exit',"$"
;operator db 'very very good'
DIGIT DB 0
STRING DB 10 DUP('0'),0
counter dw 0
data ends
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;code segment;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
code segment
main proc far
assume cs:code,ds:data,ss:stack
mov ax,seg data
mov ds,ax
;;;;;;;;;;;;Get Current Graphic Mode;;;;;;;;;
mov ah,0fh
int 10h
mov ah,0
push ax
;;;;;;;;;;;;new Graphic Mode;;;;;;;;;;;;;;;;;
mov ah,00h
mov al,12h
int 10h
MENUSHAPE
;;;;;;;;;Show Mouse;;;;;;;;;;;;;;
mov ax,01h
int 33h
mouse:
mov ax,03h;; mode grafici
int 33h
pushreg
delay 500
popreg
cmp bx,0001h
jne mouse
;;;;;;;;;;;READ PIXEL UNDER CURSOR;;;;;;;;;
dec cx
mov ah,0dh
mov bh,0
int 10h
inc cx
;;;;;;;;;SEE WHICH BUTTON(COLOR) WAS CLICKED;;;
cmp al,18
je file ;equalsign
jmp mouse
file:
menufile ;????
jmp mouse
;;;;;;;;;;ReStore Graphic Mode;;;;;;;;;;;;
pop ax
mov ah,0
int 10h
mov ax,4c00h
int 21h
main endp
;;;;;;;;;;;;;;;putc;;;;;;;;;;;;;;;;;;;
putc proc
push ax
push bx
mov ah,0eh
mov bl,07h
mov bh,00h
int 10h
pop bx
pop ax
ret
putc endp
;;;;;;;;;;;;;;;puts;;;;;;;;;;;;;;;;;;;
puts proc
push ax
_put:
lodsb
cmp al,0
jz _exit
call putc
jmp _put
_exit:
pop ax
ret
puts endp
;==============end code=============
code ends
end main
ویرایش توسط NIIT : 16th August 2011 در ساعت 09:43 PM
اون مشکل اولتون رو که من هم هنوز نفهمیدم چرا اینطوریه!
در مورد مشکل دومتون علامت سوال کجاست ؟
توکل بخدا
http://DeepLearning.ir
اولین و تنها مرجع یادگیری عمیق ایران
هرکس از ظن خود شد یار من
از درون من نجست اسرار من
علاقه مندی ها (Bookmarks)