سورس داس (Dos) با زبان اسمبلی
در این بخش سورس داس (Dos) با زبان اسمبلی برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی Assembly نوشته شده است. در ادامه می توانید توضیحات، تصاویر و فیلمی از نحوه اجرای پروژه را مشاهده کنید.
توضیحات پروژه
در این پروژه، بعد از اجرا شدن برنامه محیط داس شبیه سازی می شود و کاربر می تواند از دستورات مشخص شده در داخل آن استفاده کنید. این دستورات عبارت اند از:
- cls : صفحه برنامه پاک می کند.
- exit : از برنامه خارج می شود.
- help : لیست دستورات موجود را چاپ می کند.
- del : برای حذف فایل استفاده می شود.
- rd : برای حذف یک دایرکتوری استفاده می شود.
- move : برای تغییر نام و یا جا به جایی فایل استفاده می شود.
- find : یک فایل را در داخل درایو جستجو می کند.
- print : برای چاپ رشته استفاده می شود.
- cd : برای تغییر دایرکتوری فعلی استفاده می شود.
- . : یک دایرکتوری به عقب باز می گردد.
- cd\ : به دایرکتری روت می رود.
شما با مشاهده سورس کد این پروژه می توانید مطالب بسیار مفید و کاربردی مانند کاربر با فایل ها و دایرکتوری ها، چاپ مقادیر بر روی صفحه، پاک کردن صفحه و غیره را یاد بگیرید. این برنامه با استفاده از برنامه Emu8086 نوشته شده است که می توانید آن را از لینک مورد نظر دانلود کنید.
قسمت های از سورس کد
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | .286c ;*************************** exit macro mov ax,intruptexit ;exit this prpgram int 21h endm ;*************************** cls macro countline,row1,col1,row2,col2,color mov ah,intruptclrscr ;clrscr mov al,countline ;count line mov ch,row1 ;row1 mov cl,col1 ;col1 mov dh,row2 ;row2 mov dl,col2 ;col2 mov bh,color ;attribute int 10h endm ;*************************** gotoxy macro row,col mov ah,intruptgotoxy ;gotoxy mov dh,row ;row mov dl,col ;col mov bh,0 ;number page int 10h endm ;*************************** showerror macro call newline lea dx,strerror ;save address strerror to dx mov ah,intruptprint ;print string int 21h endm ;*************************** showmessage macro message call newline lea dx,message ;save address message to dx mov ah,intruptprint ;print string int 21h endm ;*************************** converttolowstring macro addressstring,len mov bx,addressstring mov cx,0 mov cl,len loopconverttolowstring: mov ah,[bx] cmp ah,41h jb skipconverttolowstring cmp ah,5ah ja skipconverttolowstring xor ah,00100000b mov [bx],ah skipconverttolowstring: inc bx loop loopconverttolowstring endm stkseg segment 'stack' db 128 dup("stack") stkseg ends ;------------------------------------------ dataseg segment para 'code' cr equ 13 ;code down line lf equ 10 ;code go left line tab equ 9 ;code tab keyenter equ 13 ;code enter intruptcreatedirectory equ 39h ;intrupt create directory intruptdeletedirectory equ 3ah ;intrupt delete directory intruptchangedirectory equ 3bh ;intrupt change directory intruptdeletefile equ 41h ;intrupt delete file intruptcurrentdrive equ 19h ;intrupt get current drive intruptwritechar equ 02h ;intrupt write char intruptcurrentpath equ 47h ;intrupt get current path intruptprint equ 09h ;intrupt print string intruptgetcursorxy equ 03h ;intrupt get xy cursor intruptclrscr equ 06h ;intrupt clrscr intruptgotoxy equ 02h ;intrupt gotoxy intruptexit equ 4c00h ;intrupt exit program intruptgetstring equ 0ah ;intrupt exit program intruptgetchar equ 01h ;intrupt exit program intruptchangedrive equ 0eh ;intrupt change drive intruptmovefile equ 56h ;intrupt move file intruptprinter equ 40h ;intrupt print string intruptfindfile equ 4eh ;intrupt find file gonewline db cr,lf,"$" borderup db 0dah,78 dup(0c4h),0bfh db 0b3h,tab,tab,tab,'Welcome To Program Dos(Version 1.00)',19 dup(' '),0b3h db 0c3h,78 dup(0c4h),0b4h,"$" bordermid db 0b3h,78 dup(' '),0b3h,"$" borderdown db 0c0h,78 dup(0c4h),0d9h,"$" help db 78 dup(0c4h),0b3h db 0b3h,'Cls: Clear The Screen Page, Without Parameters.',cr,lf db 0b3h,'Exit: Exit The Program And Return To Dos, Without Parameters.',cr,lf db 0b3h,'Help: Display List Of Command Program, Without Parameters.',cr,lf db 0b3h,'Del: Delete File. (Del pathfile) ',cr,lf db 0b3h,'RD: Remove Directory. (RD Directory) ',cr,lf db 0b3h,'Move: Rename Or Move File. (Move oldname newname) ',cr,lf db 0b3h,'Find: Find File In Drive (Find filename) ',cr,lf db 0b3h,'Print: Print The String (Print String) ',cr,lf db 0b3h,'CD: Change Directory. (CD Directory) ',cr,lf db 0b3h,'CD..: Go Back Directory. (CD..) ',cr,lf db 0b3h,'CD\: Go Root. (CD\) ',cr,lf db 0b3h,78 dup(0c4h),0b3h,"$" line db cr,lf,80 dup(0c4h),cr,lf,"$" ;-------------------------------------------- commandexit db 'exit',"$" commandcls db 'cls',"$" commandhelp db 'help',"$" commandcd db 'cd',"$" commandrd db 'rd',"$" commanddel db 'del',"$" commandmove db 'move',"$" commandmk db 'md',"$" commandprint db 'print',"$" commandfind db 'find',"$" commandcdb db 'cd\',"$" commandcd2dot db 'cd..',"$" drivea db 'a:',"$" driveb db 'b:',"$" drivec db 'c:',"$" drived db 'd:',"$" drivee db 'e:',"$" drivef db 'f:',"$" ;-------------------------------------------- strerror db 'Error To Run Command.$' messagefindyes db cr,lf,0b3h,' File Find.',cr,lf,"$" messagedelyes db cr,lf,0b3h,' File Deleted.',cr,lf,"$" messagemoveyes db cr,lf,0b3h,' File Rename Or Moved.',cr,lf,"$" messagerdyes db cr,lf,0b3h,' Directory Delete.',cr,lf,"$" messagemdyes db cr,lf,0b3h,' Create Directory.',cr,lf,"$" messageprintyes db cr,lf,0b3h,' String Print.',cr,lf,"$" messagefindno db cr,lf,0b3h,' File Not Find.',cr,lf,"$" messagedelno db cr,lf,0b3h,' File Deleted Error.',cr,lf,"$" messagemoveno db cr,lf,0b3h,' File Rename Or Moved Error.',cr,lf,"$" messagerdno db cr,lf,0b3h,' Directory Delete Error.',cr,lf,"$" messagemdno db cr,lf,0b3h,' Create Directory Error.',cr,lf,"$" messageprintno db cr,lf,0b3h,' String Print Error.',cr,lf,"$" ;-------------------------------------------- skipcommand db ? pathcurrentdrive db 64 dup("$") getpathdrive db 64 dup("$") lenstring dw ? lencurrentpath dw ? strtemp1 db 30 dup('$') parameter1 db 30 dup('$') parameter2 db 30 dup('$') commandline db 30 dup("$") lencommand db ? rootpath db 3 dup(?),00h recordstrcommand label byte max1 db 30 len1 db ? command db 30 dup('$') dataseg ends ;*************************** codeseg ends end main |
هیچ نظری ثبت نشده است