ايران ويج

نسخه‌ی کامل: علامت اینتر
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
دوستان تو برنامه علامت پایان رشته
$
هسته حالا علامت اینتر چی میخوام جای علامت پایان رشته علامت اینتر قرار بدم
متوجه نشدم! یعنی چی؟ میخوایین تا جایی که اینتر هستش جاپ کنه؟ یا اینترو جاپ کنه ؟ و ....
یه مثال بزنین
بله میخوام تا جایی که اینتر است چاپ کنه

به اینصورت تعریف میکنم

کد:
str label byte
max db 20
len db ?
buf db 20 dup('$')


به این صورت کاربر رشته را وارد میکنه اینتر میزنه

کد:
mov Dx,offset str
mov ah,0ah
int 21h


به اینصورت چاپ میکنه
کد:
mov dx,offset buf
mov ah,9h
int 21h

وقتی هم چاپ میکنه میدونین اینتری هم که کاربر وارد کرده چاپ میکنه حالا میخوام بدونم پایان رشته بجای '$' نمیشه اینتر گذاشت که تا اینتر فقط چاپ کنه یعنی خود اینتر چاپ نکنه؟
خب الا شما داری قضیه رو از دید سخت نگاه میکنی!

الا شما میخوایین که از کاربر ورودی بگیری و اونو چاپ کنی؛ اما اینترش چاپ نشه! درست؟
بله همینطوره میخوام اینترش چاپ نشه
البته منت امتحان کردم؛ واسه من اینتر چاپ نمیشه ها! یعنی نمیره خط بعدی! ولی به هر حال:

شما وقتی رشته رو بگیری؛ طول رشته میره داخل len ؛ عددی که توی len هستش درواقع طول کل رشته + اون اینتر پایانی هست!

شما باید کاراکتر ها رو یکی با تایع 02 از وقفه 21 به اندازه len -۱ بار چاپ کنی! Biggrin
خسته نباشید عزیز این راه های میانبر خودم بلدم ! کلا برای یادگیری میخواستم بدونم روش خیلی ساده هم برای اینکار وجود داره که که اصلا اینتر ذخیره نکنه که بعدا چاپ کنه
یا جای $ که علامت پایان رشته هسته اینتر گذاشت که تا اینتر چاپ کنه
اون $ ثابتیه که برای وقفه ۲۱ و تابع ۰۹ درست شده! اگه میخوایین از این تابع استفاده کنید باید به قوانینش هم پایدار باشید

اگه نمیخوایین ازش استفاده کنید
باید کاراکتر ها رو یکی چاپ کنی و قبل از چاپ با کد هگز اینتر چکشون کنی؛ اگه مساوی هم نبودند چاپشون کن
سلام
با دستور تغییر مکان نما هر کاری که بخواهی میتونی انجام بدی.
در اسمبلی همیشه پایان رشته $ ختم میشه، نمیتونی در حالت عادی این قضیه تغییر بدی.
و کاراکتر $ هم اصلا نمیتونی چاپ کنی برای این که پایان رشته مشخص می کنه.
البته برای هر قضیه ای راهی هم وجود دارد.
موفق باشی.
(۱۶-اردیبهشت-۱۳۹۲, ۱۹:۱۰:۳۵)The.Ghost نوشته است: [ -> ]البته برای هر قضیه ای راهی هم وجود دارد.

در تایید حرف دوستمون

(۱۶-اردیبهشت-۱۳۹۲, ۱۹:۱۰:۳۵)The.Ghost نوشته است: [ -> ]و کاراکتر $ هم اصلا نمیتونی چاپ کنی برای این که پایان رشته مشخص می کنه.

با تابع ۰۲ از وقفه ۲۱ میشه؛ کد هگز 4 رو در al بزارید