View Full Version : برنامه ای برای دریافت یک رشته از ورودی
alirah84
یک شنبه 01 دی 1392, 19:05 عصر
سلام
این برنامه یک رشته رو از ورودی گرفته و در خروجی نمایش میدهد.
stk segment
dw 32 dup(?)
stk ends
dts segment
max db 20
len db ?
string db 20 dup(?)
dts ends
cds segment
assume cs:cds , ss:stk , ds:dts
main proc far
mov ax,seg dts
mov ds,ax
mov ah,0ah
mov dx,offset max
int 21h
mov bx , offset string
mov al,len
mov ah,0
add bx,ax
mov byte ptr[bx] ,'$'
mov ah,09h
mov dx,offset string
int 21h
mov ah,4ch
int 21h
main endp
cds ends
end main
میشه از خط 14 این برنامه رو یه توضیح بدید. در خط 15 آدرس افست max رو میزاره توی dx؟من متوجه نمیشم چی کار کرده.
Delphi Coder
دوشنبه 02 دی 1392, 17:12 عصر
اون توی تعریف خود تابع وقفه هست. یه مرجع خوب برای مطالعه سرویسهایی که وقفه ها در اختیار میزارن در همین بخش به شکل اعلان زده شده میتونید از اینجــــا (http://barnamenevis.org/showthread.php?90984-%D9%85%D8%B1%D8%AC%D8%B9-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-8086-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D9%84%DB%8C%D8%B3%D8%AA-%D9%88%D9%82%D9%81%D9%87-%D9%87%D8%A7-%D9%88-%D9%BE%D9%88%D8%B1%D8%AA-%D9%87%D8%A7%DB%8C-%D8%B3%D8%AE%D8%AA-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%DB%8C) ببینید. ورودی های تابع 0Ah از وقفه 21h رو مطالعه کنید متوجه داستان خواهید شد. بعدش هم به طول رشته گرفته شده حرکت میکنه و انتهای رشته یک علامت $ اضافه میکنه این علامت هم برای این اضافه میشه چون باید به عنوان ورودی تابع 9 استفاده بشه و با توجه به تعریف ورودیهای این تابع انجام اینکار لازم هست.
alirah84
پنج شنبه 05 دی 1392, 12:17 عصر
این فایل ( HELPPC.zip ) رو دانلود کردم ولی خیلی شلوغه .هیچی ازش نفهمیدم.
تو خط 21 چون اسکی کد $ 1 بایت هست بایت از byte ptr استفاده کرد؟اگه byte ptr رو نذارم چی؟
Delphi Coder
جمعه 06 دی 1392, 00:15 صبح
این فایل ( HELPPC.zip ) رو دانلود کردم ولی خیلی شلوغه .هیچی ازش نفهمیدم.
تو خط 21 چون اسکی کد $ 1 بایت هست بایت از byte ptr استفاده کرد؟اگه byte ptr رو نذارم چی؟ اگه نزارید ممکنه اسمبلر ایراد بگیره. اون به اسمبلر میگه که اون مکانی از حافظه که میخواهیم توش مقدار بنویسیم رو بایت در نظر بگیره.
alirah84
جمعه 06 دی 1392, 12:35 عصر
تو خط 20 به اندازه تعداد کاراکتری که وارد شده به مقدار BX اضافه میشه.از کجا میدونه مقدار AX چیه که به BX اضافه کنه؟ما تو خط 18 و 19 AH و Al رو مقدار دهی کردیم.چه ربطی به AX داره؟نباید تو خط 18 و 19 AX رو مقدار دهی میکردیم؟
Delphi Coder
جمعه 06 دی 1392, 21:33 عصر
خوب AX تشکیل شده از AH و AL وقتی قسمت پرارزش اون رو صفر میکنیم و قسمت کم ارزش طول رشته رو مینویسیم این یعنی AX=طول رشته. BX هم که ابتدای رشته هست طول رشته رو اضافه میکنه به اون تا به انتهای رشته اشاره کنه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.