PDA

View Full Version : سوال: ورودی



mazaher5723
چهارشنبه 20 دی 1391, 18:55 عصر
سلام دوستان و اساتید
چطور میشه متغییری که اسمش pهست رشته رو از ورودی بگیریم و بریزیم تو p
mov dx, offset p
mov ah, 0ah
int 21h
ایا قطعه کد بالا درسته؟

the king
پنج شنبه 21 دی 1391, 05:40 صبح
سلام دوستان و اساتید
چطور میشه متغییری که اسمش pهست رشته رو از ورودی بگیریم و بریزیم تو p
mov dx, offset p
mov ah, 0ah
int 21h
ایا قطعه کد بالا درسته؟

درست بودنش که درسته، p موقعیت ای از حافظه است. حالا p چه یک بایت باشه و چه چند بایت اون سرویس 0Ah باهاش مثل یک آرایه از بایت ها
برخورد می کنه، مقدار داخل بایت اول (خانه اول آرایه) رو سرویس نمی نویسه، فقط مقدارش رو می خونه تا بدونه حداکثر چند کاراکتر باید از کاربر بخونه،
در بایت دوم سرویس تعداد کاراکتر هایی که کاربر وارد کرده رو می نویسه (یک عدد) و در بایت های بعدی کاراکتر ها رو می نویسه،
در آخر هم یک بایت با مقدار 13 (کد کاراکتر Carriage return) رو می نویسه تا انتهای رشته کاراکتر ها رو مشخص کنه.
قبل از اینکه این وقفه رو اجرا کنید، باید مقدار بایت اول در اون p رو مشخص کرده باشید چون حداکثر تعداد کاراکتر ها رو تعیین می کنه.

rayarasool
پنج شنبه 21 دی 1391, 12:41 عصر
فکر میکنم برای p کد زیر رو بنویسید دیگه کار میکنه.
max db 5
length db ?
p db 5dup(?)

این کار باعث میشه 4 تا کاراکتر از کاربر بگیره.