ورود

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



setareh_zemestani
یک شنبه 21 خرداد 1391, 15:05 عصر
سلام
برای اینکه ارایه ای تعریف کنیم مقدارش از صفحه کلید وارد کنیم چطوری بنویس

MostafaMohammadi
یک شنبه 21 خرداد 1391, 19:23 عصر
در شروع سگمنت داده ات، این چهار تا دستور رو بنویس:


BUFFER LABEL BYTE
MAXLEN DB 20
ACTLEN DB ?
KBDATA DB 20 DUP(' ')

خط اول یه اسم به آرایه ات اختصاص میده.
خط دوم حداکثر طولی که این آرایه می تونه داشته باشه رو نشون میده، مثلا توی این مثال این آرایه حداکثر می تونه 20 خونه داشته باشه.
خط سوم متغییریه که ما تعریف اش می کنیم و مقدار اولیه بهش نمیدیم، بعد از اینکه از کاربر خواستیم این آرایه رو پر کنه و کاربر اینکار رو کرد، این متغییر برابر با طول آرایه مون میشه. مثلا اگه کاربر یه رشته 10 حرفی وارد کنه طول آرایه مون میشه 10 و داخل این متغییر عدد 10 قرار گرفته میشه.
خط چهارم هم فضای آرایه رو تعریف می کنه، در اینجا 20 خونه یک بایتی به این آرایه اختصاص داده شده.

بعد از نوشتن این چهار تا دستور سگمنت داده ات این شکلی میشه:

DSEG SEGMENT
BUFFER LABEL BYTE
MAXLEN DB 20
ACTLEN DB ?
KBDATA DB 20 DUP(' ')
;بقیه متغییر ها
DSEG ENDS


حالا کافیه وقتی کاربر باید آرایه رو پر کنه در سگمنت کد ات، این سه دستور رو بنویسی:


MOV AH, 0Ah
LEA DX, BUFFER
INT 21h

دستور اول آدرس سرویس رو Ah می کنه.
دستور دوم آدرس آفست بافر رو داخل ثبات DX میریزه.
دستور سوم وقفه 21h رو اجرا می کنه.

بعد از اینکه کاربر آرایه مورد نظر رو وارد کرد و کلید Enter رو فشار داد، آرایه در بافر ذخیره میشه و طول اون هم در MAXLEN قرار میگیره.

setareh_zemestani
دوشنبه 22 خرداد 1391, 09:03 صبح
سلام

ممنون از کمکتون
اگر 3تا ارایه داشته باشیم یکی برای نشون دادن نام ودیگری برا ی شماره دانشجو ودیگری برای نمره
مثلا برای جستجو براساس شماره دانشجو
شماره دانشجو را پیدا کرده بخوایم نام دانشجو و نمره اش باشماره اش نشون بده چطوری باید نوشت؟
مرسی

MostafaMohammadi
سه شنبه 23 خرداد 1391, 00:36 صبح
با توجه به چیزی که داری دنبال اش می گردی خونه های آرایه رو دونه دونه با مقایسه کن و هر موقع برابر بود اون رکورد از آرایه رو چاپ کن.
مثلا فرض کن ما این آرایه رو داریم:

STLIST DB '1111111111Taraneh Rezai', '$'
DB '2222222222FaramarzAsadi', '$'
DB '3333333333Peyman Sadr ', '$'
اگه 10 تا خونه اول رو دنبال مثلا شماره دانشجویی 111111111 بگردی می تونه متوجه بشی کدوم رکورد مد نظرته و کافیه اون رکورد رو چاپ کنی.