سورس برنامه ویرایشگر متن به زبان اسمبلی
در این بخش سورس برنامه ویرایشگر متن به زبان اسمبلی را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی Assembly نوشته شده است. در ادامه می توانید توضیحات، تصاویر مربوط به پروژه را مشاهده کنید.
توضیحات پروژه
اسمبلی یک زبان برنامه نویسی سطح پایین برای یک کامپیوتر یا سایر دستگاه های قابل برنامه نویسی است. در مقایسه با بسیاری از زبان های برنامه نویسی سطح بالا که معمولا در چندین سیستم قابل اجرا هستند، زبان اسمبلی، توسط یک برنامه کاربردی به نام اسمبلر (مانند NASM و MASM) به کد ماشین تبدیل می شود. در این زبان از نماد های خاص برای انجام عملیات مختلف استفاده می شود.
این پروژه یک ویرایشگر متن ساده را ایجاد می کند که در آن با فشردن کلید های ترکیبی Ctrl+F منوی مربوط به فایل فعال می شود و با انتخاب شدن هر یک از گزینه های منو، نام آن در پایین صفحه نمایش داده می شود. همچنین با فشردن کلید Backspace هم می توانید آخرین کاراکتر تایپ شده را پاک کنید.
سورس کد این پروژه برای یادگیری زبان اسمبلی بسیار مناسب و کاربردی است و برای افراد علاقه مند به یادگیری این زبان می تواند بسیار مفید باشد. همچنین برای راحت تر شدن کار، سعی شده است تا کارها به صورت ماکرو پیاده سازی شوند. این برنامه با استفاده از برنامه 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 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | ;---------------------- exit macro mov ax,4c00h int 21h endm ;---------------------- pushreg macro push ax push bx push cx push dx push si push di endm ;---------------------- popreg macro pop di pop si pop dx pop cx pop bx pop ax endm ;---------------------- showmainmenu macro pushreg gotoxy 1,1 prints menu popreg endm ;---------------------- gets macro str pushreg lea dx,str mov ah,0ah int 21h popreg endm ;---------------------- prints macro str pushreg lea dx,str mov ah,09h int 21h popreg endm ;---------------------- getc macro ch1,ch2 pushreg mov ah,00h int 16h mov ch1,al mov ch2,ah popreg endm ;---------------------- putc macro c pushreg mov ah,02h mov dl,c popreg endm ;---------------------- cls macro countline,row1,col1,row2,col2,color pushreg mov ah,06h ;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 popreg endm ;---------------------- gotoxy macro row,col pushreg mov ah,02h ;gotoxy mov dh,row ;row mov dl,col ;col mov bh,0 ;number page int 10h popreg endm ;---------------------- insertchar macro text1,char1 pushreg local for1,end1,noinsert mov n,1 lea si,text1 for1:cmp byte ptr[si],'$' je end1 inc si inc n cmp n , 100 je noinsert jmp for1 end1: mov al,char1 mov byte ptr [si],al noinsert: popreg endm ;---------------------- .model small .stack 64 .data cr equ 13 ;code down line lf equ 10 ;code go left line tab equ 9 ;code tab intruptwritechar equ 02h ;intrupt write char 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 gonewline db cr,lf,"$" borderup db 0dah,78 dup(0c4h),0bfh db 0b3h,tab,tab,tab,36 dup(' '),19 dup(' '),0b3h db 0c3h,78 dup(0c4h),0b4h,"$" bordermid db 0b3h,78 dup(' '),0b3h,"$" borderdown db 0c0h,78 dup(0c4h),0d9h,"$" menu db "File",tab,"Edit",tab,"View",tab,"Help",'$' menufile db 18 dup(0c4h),cr,lf db 0b3h,' New Ctrl+N ',0b3h,cr,lf db 0b3h,' Open Ctrl+O ',0b3h,cr,lf db 0b3h,' Save Ctrl+S ',0b3h,cr,lf db 0b3h,' Save As Ctrl+A ',0b3h,cr,lf db 0b3h,' Print Ctrl+P ',0b3h,cr,lf db 0b3h,18 dup(0c4h),0b3h,cr,lf db 0b3h,' Exit Alt+E ',0b3h,cr,lf db 0b3h,18 dup(0c4h),0b3h,"$" menuedit db 21 dup(0c4h),cr,lf db 0b3h,' ',0b3h,' Undo Ctrl+Z ',0b3h,cr,lf db 0b3h,' ',0b3h,' Redo Ctrl+R ',0b3h,cr,lf db 0b3h,' ',0b3h,' Cut Ctrl+X ',0b3h,cr,lf db 0b3h,' ',0b3h,' Copy Ctrl+C ',0b3h,cr,lf db 0b3h,' ',0b3h,' Paste Ctrl+V ',0b3h,cr,lf db 0b3h,' ',0b3h,19 dup(0c4h),0b3h,cr,lf db 0b3h,' ',0b3h,' Select All ',0b3h,cr,lf db 0b3h,' ',0b3h,19 dup(0c4h),0b3h,"$" menuview db 18 dup(0c4h),cr,lf db 0b3h,' New Ctrl+N ',0b3h,cr,lf db 0b3h,' Open Ctrl+O ',0b3h,cr,lf db 0b3h,' Save Ctrl+S ',0b3h,cr,lf db 0b3h,' Save As Ctrl+A ',0b3h,cr,lf db 0b3h,' Print Ctrl+P ',0b3h,cr,lf db 0b3h,18 dup(0c4h),0b3h,cr,lf db 0b3h,' Exit Ctrl+E ',0b3h,cr,lf db 0b3h,18 dup(0c4h),0b3h,"$" ;-------------------------------------------- activemenu db 0 chal db ? chah db ? n db 1 i db ? text db "",99 dup('$'),'$' temp db ? row db ? col db ? idmenu db 1 .code ;----------------------------- end main |
هیچ نظری ثبت نشده است