PDA

View Full Version : شمارش كاراكترهاي ورودي



TheBest
چهارشنبه 09 دی 1388, 14:31 عصر
با سلام خدمت همه دوستان
برنامه اي مي خوام كه بتونه تعداد كراكترهاي ورودي توسط كاربر رو بشمره و كاراكتري كه بيشترين تكرار رو داره رو مشخص كنه. در واقع مشكلم اينه كه تعداد كراكترها آرايه اي هست و بايد جدا جدا همه رو بشمره. ممنون مي شم اگه كسي راهنمايي كنه. مرسي

mortezamsp
چهارشنبه 09 دی 1388, 19:30 عصر
سروریس 0AH دستور INT 21H یک رشته را از صفحه کلید میخواند و آن را به همراه تعداد کاراکترهای وارد شده در بافر قرار میدهد .


STRING LABEL BYTE
MAXLEN DB 20
ACTLEN DB ?
KBDATA DB 20 DUP(?)

اول مکانی که رشته آنجا قرار میگیرد تعریف میکنی. اینجا STRING
دوم حداکثر کاراکترهایی که وباید ارد بشوند
سوم تعداد واقعی کاراکترهای دریافت شده
چهارم خود رشته

String درواقع اشاره گری هست که به MXLEN اشاره میکند .
بعد از ورادکردن رشته اینتر میزنی که جزو رشته حساب میشه ولی جزو کاراکترهای وارد شده حساب نمیشه .اگه بیشتر از 20 تا(اینجا) وارد بشه بوق میزنه .


MOV AH,0AH
LEA DX,STRING
INT 21H

TheBest
چهارشنبه 09 دی 1388, 22:38 عصر
سروریس 0AH دستور INT 21H یک رشته را از صفحه کلید میخواند و آن را به همراه تعداد کاراکترهای وارد شده در بافر قرار میدهد .


STRING LABEL BYTE
MAXLEN DB 20
ACTLEN DB ?
KBDATA DB 20 DUP(?)
اول مکانی که رشته آنجا قرار میگیرد تعریف میکنی. اینجا STRING
دوم حداکثر کاراکترهایی که وباید ارد بشوند
سوم تعداد واقعی کاراکترهای دریافت شده
چهارم خود رشته

String درواقع اشاره گری هست که به MXLEN اشاره میکند .
بعد از ورادکردن رشته اینتر میزنی که جزو رشته حساب میشه ولی جزو کاراکترهای وارد شده حساب نمیشه .اگه بیشتر از 20 تا(اینجا) وارد بشه بوق میزنه .


MOV AH,0AH
LEA DX,STRING
INT 21H

سلام
دوست عزيز ممنون بابت راهنمايي شما
فكر كنم مشكلم رو اشتباه بيان كردم. منظورم شمردن تك تك كاراكترها بود. مثلا در جمله "بابا آب داد!" حرف 'ب' 3 بار و حرف 'د' 2 بار تكرار شده است. تو C اين كارو خيلي راحت ميشه كرد. ولي تو اسمبلي نمي دونم چه جوري بايد اين كارو كرد.:متفکر:

mortezamsp
پنج شنبه 10 دی 1388, 12:18 عصر
خوب تعداد کاراکترهای ورودی رو که داری ، تو زبان سی هم که بلدی چطوریه ، یه آرایه تعریف کن به طول 26 و مقدار صفر ،بعد دونه دونه کاراکترها رو بخون بریز مثلا تو al بعد اون رو با آدرس شروع آرایه 26 عضوی جمع کن ، و بعد مقدار خونه ای که این عدد نشون میده رو یک واحد اظافه کن .
مثلا اگه کاراکتری که خوندی c باشه ، خانه سوم آرایه یک واحد اظافه میشود .
عین همون کاری که تو c میکنی .

TheBest
جمعه 11 دی 1388, 23:58 عصر
خوب تعداد کاراکترهای ورودی رو که داری ، تو زبان سی هم که بلدی چطوریه ، یه آرایه تعریف کن به طول 26 و مقدار صفر ،بعد دونه دونه کاراکترها رو بخون بریز مثلا تو al بعد اون رو با آدرس شروع آرایه 26 عضوی جمع کن ، و بعد مقدار خونه ای که این عدد نشون میده رو یک واحد اظافه کن .
مثلا اگه کاراکتری که خوندی c باشه ، خانه سوم آرایه یک واحد اظافه میشود .
عین همون کاری که تو c میکنی .

سلام
مرسي، اينطوري خيلي خوبه.
ولي بعدا بايد يه سري اون آرايه رو هم جدا شمرد و بررسي كرد كه تعداد بيشترين حرف مشخص بشه ديگه. تو C كه اينطوري نمي نويسم. يه MaxChar و MaxCount تعريف مي كنم و از اول رشته شروع مي كنم و بعد هر بررسي هر كدوم كه بيشتر ميشه در دو متغيير MaxChar و MaxCount قرار مي گيره. مگه شما تو C اين كارو نمي كني؟:متفکر: