سلام دوستان همون طور كه از تيتر تاژپيك معلومه من يه برنامه مي خوام كه يك آدمك چاپ بشه و توسط صفحه كليد حركت كنه . اين پروژه پايان ترمم هستش و خيلي هم عجله دارم . لطفا كمك كنيد
موضوعات مشابه:
سلام دوستان همون طور كه از تيتر تاژپيك معلومه من يه برنامه مي خوام كه يك آدمك چاپ بشه و توسط صفحه كليد حركت كنه . اين پروژه پايان ترمم هستش و خيلي هم عجله دارم . لطفا كمك كنيد
موضوعات مشابه:
توکل بخدا
http://DeepLearning.ir
اولین و تنها مرجع یادگیری عمیق ایران
هرکس از ظن خود شد یار من
از درون من نجست اسرار من
سلام من برنامه با اسمبلی رو نوشتم به طرف راست وپایین حرکت میکنه خب پس برعکس دستور راست میشه چپ ام وقتی دستورات رو در محل چپ کپی میکنم که بر عکشون کنم هنگام کامپایل خطا میده یعنی اصلا اجرا نمیشه من نمی فهمم چرا ؟ کمکم کنید در قسمت get key قسمت چپ ;cmp ah, 4bh ; ; jz go_left رو غیر فعال راستی emulator نوشتم تو اسمبلی تازه واردم اینجا بد کپی میشه بیا اینجا
سلام من برنامه رو نوشتم به طرف راست وپایین حرکت میکنه اما خب پس برعکس دستور راست میشه چپام وقتی دستورات رو در محل چپ کپی میکنم هنگام کامپایل خطا میده یعنی اصلا اجرا نمیشه من نمی فهمم چرا ؟ کمکم کنید
;HELLO WORLD SAMPLE!
;STANDARD HEADER:
#MAKE_COM#
ORG 100H
JMP START
DOLLAR EQU '$'
MSG DB " () ",DOLLAR
MSG1 DB " ||",DOLLAR
MSG2 DB " /\",DOLLAR
CLEARSCREEN MACRO COLOR
MOV AX , 0600H
MOV BH , COLOR
MOV CX , 0000H
MOV DX , 204FH
INT 10H
ENDM
;;
START:
; WAIT FOR ANY KEY....
PUSH DX
PUSH BX
PUSH CX
CLEARSCREEN 6
POP CX
POP BX
POP DX
;SAR
MOV AH,02
INC CL
INC DL
;MOV DL,CL
INT 10H
PUSH DX
LEA DX, MSG
MOV AH, 9
INT 21H
POP DX
;TANE
PUSH DX
MOV AH,02
INC CL
INC DH
INC DL
;MOV DL,CL
INT 10H
PUSH DX
LEA DX, MSG1
MOV AH, 9
INT 21H
POP DX
;;;PA
MOV AH,02
INC DH
;INC DL
;MOV DL,CL
INT 10H
PUSH DX
LEA DX, MSG2
MOV AH, 9
INT 21H
POP DX
POP DX
GET_KEY:
MOV AH, 00H
INT 16H
CMP AH, 48H
JE GO_UP
CMP AH, 50H
JZ GO_DOWN
;CMP AH, 4BH
; JE GO_LEFT
CMP AH, 4DH
JZ GO_RIGHT
;GO_UP
GO_UP:
JMP GET_KEY
;GO_DOWN:
GO_DOWN:
PUSH DX
PUSH BX
PUSH CX
CLEARSCREEN 6
POP CX
POP BX
POP DX
;SAR
MOV AH,02
INC DH
PUSH DX
DEC DL
INT 10H
POP DX
PUSH DX
LEA DX, MSG
MOV AH, 9
INT 21H
POP DX
;TANE
PUSH DX
MOV AH,02
INC DH
;INC DL
INT 10H
PUSH DX
LEA DX, MSG1
MOV AH, 9
INT 21H
POP DX
;PA
PUSH DX
MOV AH,02
INC DH
INT 10H
PUSH DX
LEA DX, MSG2
MOV AH, 9
INT 21H
POP DX
POP DX
JMP GET_KEY
;GO RIGHT
GO_RIGHT:
;CLEAR
PUSH DX
PUSH BX
PUSH CX
CLEARSCREEN 6
POP CX
POP BX
POP DX
;SAR
MOV AH,02
INC CL
INC DL
;MOV DL,CL
INT 10H
PUSH DX
LEA DX, MSG
MOV AH, 9
INT 21H
POP DX
;TANE
PUSH DX
MOV AH,02
INC CL
INC DH
INC DL
;MOV DL,CL
INT 10H
PUSH DX
LEA DX, MSG1
MOV AH, 9
INT 21H
POP DX
;;;PA
MOV AH,02
INC DH
;INC DL
;MOV DL,CL
INT 10H
PUSH DX
LEA DX, MSG2
MOV AH, 9
INT 21H
POP DX
POP DX
JMP GET_KEY
;GO_LEFT
GO_LEFT:
JMP GET_KEY
;END
;EXIT TO OPERATING SYSTEM:
MOV AH, 4CH
INT 21H
ویرایش توسط Hossein : 3rd June 2012 در ساعت 12:15 AM
لطفا کدهاتون رو بین تگ مناسب قرار بدین از این به بعد . اینطور خوندنش راحت تره .
در مورد اجراش شما تو چه محیطی اجراش میکنید ؟ و چه اروری دریافت میکنید ؟
توکل بخدا
http://DeepLearning.ir
اولین و تنها مرجع یادگیری عمیق ایران
هرکس از ظن خود شد یار من
از درون من نجست اسرار من
دلیل ارورت بخاطر اینه تو جامپ شرطی نمیتونی بیشتر از 128 بایت بپری ! محدودیت داری . ( هر دستوری که مینویسی یک یا چند بایت اشغال میکنه پس اگه بین یک جامپ شرطی مثل je یا ja و امثالهم کلی دستور نوشته شده باشه که جمعا از 128 بایت بزنه بالاتر دیگه دستور جامپت کار نمیکنه . این هم محدودیت در حالت بلادرنگ هست )
برای اینکه مشکل پرشت حل بشه میتونی تو دو مرحله این کار رو انجام بدی .
یعنی اول بپری به یه مکان نزدیک تر و بعد از اونجا jmp کنی به جای اصلی که مد نظرت هست .
فرض کن دستوراتت مثل زیر هست و ارور جامپ میگیری :
CMP AX,DX
JE MAKANE_ASLI
ADD AX,CX
....;
;KOLI DASTOR DIGE
...;
KOLI DASTORE DIGE
...;
;TA BE KHAD BE INJA BERESE ERROR MIDE
MAKANE_ASLI:
DASTORATE MOREDE NAZARE KHODET
خب ما برای اینکه مشکل محدودیت رو برطرف کنیم . بعد از چک کردن شرط وقتی خواستیم جامپ کنیم دیگه مستقیما به مکان اصلی نمیپریم قبلش به یه مکان نزدیکتر میپریم که ارور نده و بعد از اون به یه پرش غیرشرطی به مکان اصلی میریم . اگه تعداد خط ها زیاد باشه بجای پرش دو مرحله ای - این کار رو چند بار انجام میدیم . )
CMP AX,DX
JE NEAR
ADD AX,CX
....
;KOLI DASTOR DIGE
NEAR:
JMP MAKANE_ASLI
...
KOLI DASTORE DIGE
...;
MAKANE_ASLI:
DASTORATE MOREDE NAZARE KHODET
خب این شد از اینکه چطوریاین ارور رو از بین ببری.
من پیشنهاد میکنم بجای اینکه دستورات رو چند بار تکرار کنی هی تو سورس کدت یک تابع بنویسی و بعد اون تابع رو فراخونی کنی . جلو و عقب و بالا و پایین هم بخوای حرکت بدی کافیه قبل از فراخونی تابع ثباتها یا متغییرهای استفاده شده تو تابع رو مقدار دهی کنی .
تو این تاپیک هم میتونی نحوه تعریف تابع رو ببینی و هم از نزدیک ببینی مشکلی که خودت تو پرش شرطها داری اونجا دقیقا به همین صورتی که گفتم مرتفع شده . نمونه پروژه اسمبلی (ماشین حساب - کار با فایل - رسم شکل) (اینجا هم منحصرا همین مشکل در پرش شرطی را داشتن عین شما : مشکل در جمع اعداد بخونید تا بیشتر متوجه بشید ) .
من امشب دارم میرم پادگان و تا دو هفته دیگه انشاالله دوباره برگردم نیستم . در غیاب من میتونید از دوستانی مثل @MoJTaBa و @pouya.d کمک بگیرید .
(آقا پویا و آقا مجتبی لطفا هر کمکی از دستتون بر اومد و وقتتون اجازه داد از این دوستمون دریغ نکنید )
در پناه حق
توکل بخدا
http://DeepLearning.ir
اولین و تنها مرجع یادگیری عمیق ایران
هرکس از ظن خود شد یار من
از درون من نجست اسرار من
علاقه مندی ها (Bookmarks)