ايران ويج

نسخه‌ی کامل: برای رفتن به خط بعدی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
کد:
--------------------------------------------------------------------------------

برای رفتن به خط بعدی
MOV  AH,02H
MOV  DL,0AH   خط جدید
INT  21H

MOV  AH,02H
MOV  DL,0DH   ابتدای خط
INT  21H

--------------------------------------------------------------------------------
The.Ghost جان اون ماکرویی که برای رفتن به خط جدید نوشته بودم اشتباه بود؟؟؟
راحت ترین کار و سریع ترین کار برای رفتن به خط بعدی همانی بود که نوشتم.
خیلی راه های دیگه هم برای رفتن به خط بعد وجود داره.
سلام.
عزیز من یه کم کدو ویرایش کردم و قسمتای اضافیشو حذف کردم.Biggrin
حالا می خوام وقتی اینتر بزنم بره خط بعد نمیره.
همون ماکرویی که نوشته بودم رو توش گذاشتم ولی باز میاد اول خط..!!

مشکل کجاست؟؟:0-0:
چشمم روشن برنامه من را خلاصه می کنی.Angry
شوخی کردم. ClapClap
بیا دوست عزیز درستش کردم.
فقط یادت باشه که وقتی Enter زدی میره خط بعدی.
و قتی که کاراکتر 0 (صفر) را زدی دیگه رشته تمام میشه شما می تونی به جای عدد 0 کاراکتر نقطه را بگیری.
پس آخر رشته با کاراکتر صفر تمام میشه یعنی وقتی کاراکتر صفر را زدی دیگه رشته تمام میشه.
به عکس زیر نگاه کن.

راستی اگه یکمی هم خودت تلاش کنی بد نیست.

کد:
; multi-segment executable file template.

data segment
; add your data here!
COUT DW ?
COLOR DB ?
ends

stack segment
dw 128 dup(0)
ends

code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax

; add your code here


MOV COLOR,2
MOV COUT,0


L1:

MOV AH,01H
INT 21H

INC COUT


CMP AL,20H
JNE L2

MOV BL,COLOR
MOV CX,COUT
MOV AH,09
INT 10h


ADD COLOR,2



L2:
CMP AL,0DH
JNE L3

MOV AH,02H
MOV DL,0AH
INT 21H

MOV AH,02H
MOV DL,0DH
INT 21H

L3:
CMP AL,30H
JNE L1


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

end start ; set entry point and stop the assembler.
داداش دستت درد نکنه...
بابا بخدا استادامون اصلا اسمبلی یاد ندادن به ما:(
اینقدر رو که نوشتم که بالای 10 تا کتاب خودنم تا بفهمم چی به چیه!!
راستی The.Ghost جان می تونی جلوی بعضی خطها توضیحات بنویسی که چیکار می کنه...
شرمنده تو شدم خدایی که اینقدر زحمتت دادم:")
سلام
کد:
COUT DW ?
COLOR DB ?
برای تعریف متغیر رنگ و تعداد حرف های وارد شده.

کد:
MOV COLOR,2
MOV COUT,0
دادن مقدار اولیه تعداد حرف های وارد شده در ابتدا صفر است
مقدار رنگ عدد دو است که معادل یک رنگ در زبان اسمبلی است.

کد:
L1:
تعریف یک برچسب می باشد که به آن پرش می کنیم.

کد:
MOV AH,01H
INT 21H

INC COUT
یک کاراکتر بخوان و یک شماره هم به تعداد حروف که صفر است اضافه کن.


کد:
CMP AL,20H
JNE L2

کاراکتر وارد شده را با کد اسکی فاصله برسی کن اگر مخالف است پرش کن به برچسب L2 در غیر این صورت دستورات پایین را اجراء کن.

کد:
MOV BL,COLOR
MOV CX,COUT
MOV AH,09
INT 10h


ADD COLOR,2
دستورات پایین این است که مقدار رنگ کاراکتر وارد شده باید تغییر کند چون فاصله زده شده است و به متغیر رنگ دو عدد اضافه کن که حروف بعدی را با رنگ جدید نمایش دهد.

کد:
CMP AL,0DH
JNE L3

اگر کاراکتر وارد شده مخالف Enter است پرش کن به L3.


کد:
MOV AH,02H
MOV DL,0AH
INT 21H

MOV AH,02H
MOV DL,0DH
INT 21H
در غیر این صورت اگر مساوی Enter است مکان نما را به خط پایین و سر خط منتقل کن.


کد:
L3:
CMP AL,30H
JNE L1
برسی کن که اگر کاربر کاراکتر صفر را وارد کرده میشه پایان برنامه در غیر این صورت دوباره دستورات را از ائل اجراء کن.


دوست عزیز امیدوارم خوب تونسته باشم توضیح بدم.
موفق باشی.Clap
نقل قول: سلام
اون برنامه ای بود که واسم نوشته بودی....هر بار اسپیس می زدی رنگ عوض میشد؟؟
می خوام اونو به یه شکل دیگه واسم بنویسی....

سلام دوست من
به چه شکل برات بنویسم لطفا بیشتر توضیح بده من متوجه نشودم.Whistle

ConfusedConfusedConfusedConfusedConfusedConfusedConfusedConfusedConfusedConfused