The.Ghost جان اون ماکرویی که برای رفتن به خط جدید نوشته بودم اشتباه بود؟؟؟
راحت ترین کار و سریع ترین کار برای رفتن به خط بعدی همانی بود که نوشتم.
خیلی راه های دیگه هم برای رفتن به خط بعد وجود داره.
سلام.
عزیز من یه کم کدو ویرایش کردم و قسمتای اضافیشو حذف کردم.
حالا می خوام وقتی اینتر بزنم بره خط بعد نمیره.
همون ماکرویی که نوشته بودم رو توش گذاشتم ولی باز میاد اول خط..!!
مشکل کجاست؟؟:0-0:
چشمم روشن برنامه من را خلاصه می کنی.
شوخی کردم.
بیا دوست عزیز درستش کردم.
فقط یادت باشه که وقتی 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 جان می تونی جلوی بعضی خطها توضیحات بنویسی که چیکار می کنه...
شرمنده تو شدم خدایی که اینقدر زحمتت دادم:")
سلام
برای تعریف متغیر رنگ و تعداد حرف های وارد شده.
کد:
MOV COLOR,2
MOV COUT,0
دادن مقدار اولیه تعداد حرف های وارد شده در ابتدا صفر است
مقدار رنگ عدد دو است که معادل یک رنگ در زبان اسمبلی است.
تعریف یک برچسب می باشد که به آن پرش می کنیم.
کد:
MOV AH,01H
INT 21H
INC COUT
یک کاراکتر بخوان و یک شماره هم به تعداد حروف که صفر است اضافه کن.
کاراکتر وارد شده را با کد اسکی فاصله برسی کن اگر مخالف است پرش کن به برچسب L2 در غیر این صورت دستورات پایین را اجراء کن.
کد:
MOV BL,COLOR
MOV CX,COUT
MOV AH,09
INT 10h
ADD COLOR,2
دستورات پایین این است که مقدار رنگ کاراکتر وارد شده باید تغییر کند چون فاصله زده شده است و به متغیر رنگ دو عدد اضافه کن که حروف بعدی را با رنگ جدید نمایش دهد.
اگر کاراکتر وارد شده مخالف 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
برسی کن که اگر کاربر کاراکتر صفر را وارد کرده میشه پایان برنامه در غیر این صورت دوباره دستورات را از ائل اجراء کن.
دوست عزیز امیدوارم خوب تونسته باشم توضیح بدم.
موفق باشی.