تبلیغات :
خرید لپ تاپ استوک
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 9 از 9

نام تاپيک: مشکل اسمبلی

  1. #1
    کـاربـر بـاسـابـقـه saeed_136915's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    The Land of Skyrim
    پست ها
    2,715

    پيش فرض مشکل اسمبلی

    سلام دوستان من این رو نوشتم ولی قسمت آخرش که تعداد کلمات رو شمارش میکنه اشتباهه. نمی دونم چجوری باید به file_buffer اشاره کنم. اگه به file_buffer اشاره بشه به آدرس اون اشاره میشه یا داده اون؟؟
    لطفا توضیح بدین. خیلی ممنون
    .model small
    .stack 64
    .data
    file_path db "C:\f1.asm",0
    file_buffer db 100 dup(?)
    file_handler dw ?
    notice1 db 'Enter File Location : $'
    counter db 0
    eofbuff dw ?
    pointer dw ?
    ;************************************

    .code
    main proc far
    mov ax,@data
    mov ds,ax

    ;****Open File***********************

    mov ah,3dh
    mov al,0
    lea dx,file_path
    int 21h
    ;jc readerror
    mov file_handler,ax

    ;readerror:
    ;mov ah,09
    ;lea dx,notice1
    ;int 21h
    ;****Read form File to Buffer******************************

    mov ah,3fh
    mov cx,2
    mov bx,file_handler
    lea dx,file_buffer
    int 21h
    ;****Close File*************************

    mov ah,3eh
    mov bx,file_handler
    int 21h
    ;************************

    mov pointer,offset file_buffer
    mov eofbuff,offset file_buffer
    add eofbuff,64h
    loop1:
    inc counter
    loop2:
    add pointer,1h
    cmp byte ptr pointer,byte ptr eofbuff
    je exit
    cmp pointer,'?'
    je exit
    cmp pointer,' '
    je loop1
    jmp loop2

    exit:
    mov ah,02
    mov dl,counter
    int 21h



    mov ah,4ch
    int 21h
    main endp
    end main

  2. #2
    کـاربـر بـاسـابـقـه saeed_136915's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    The Land of Skyrim
    پست ها
    2,715

    پيش فرض

    کسی جواب نمیده؟؟

  3. #3
    پروفشنال hoax3r's Avatar
    تاريخ عضويت
    Oct 2007
    پست ها
    699

    پيش فرض

    یکی از ایرادای کدت اینجاست

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    همچین دستوری اصلا نمیشه استفاده کرد، منظورم دو اپرند مموری باشن، باید یکی مموری باشه مثلا یکی هم رجیستر

    بعد جدای از اینا منطقا هم کد مشکل داره شما مقداری که pointer و eofbuff بهش اشاره میکنند رو مقایسه میکنید و این ایجاد مشکل میکنه
    در حالی که درست اینه که خود پوینترها که در واقع آدرسها میشه رو باید با هم مقایسه کنید،

    به نظرم بهتر اینه که به جای مقایسه با آخر بافر، تعداد بایت های خونده شده با تابع 3F رو برسی کنید چون اون تابع این مقدارو برمی گردونه تو ax میریزه

    برای دسترسی به داده file_buffer هم بهتره آدرسو بریزین تو یه رجیستر مثل si بعد ازش بخونین،

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    هر جا pointer هست بجاش si میاد، البته اینجوری
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در آخر اینکه تابع 2 از وقفه ی 21h باید از نوع اسکی باشه نه عدد، یعنی اگه تعداد 3 هست باید به 33h تبدیل بشه تا بشه چاپش کرد، یا اگه دو رقمی هست هر رقم جدا به اسکی باید تبدیل بشه

  4. این کاربر از hoax3r بخاطر این مطلب مفید تشکر کرده است


  5. #4
    کـاربـر بـاسـابـقـه saeed_136915's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    The Land of Skyrim
    پست ها
    2,715

    پيش فرض

    ممنون درستش کردم فقط اگه تعداد کلمات تا 9 باشه نشون میده .
    اگه دو رقمی هست هر رقم جدا به اسکی باید تبدیل بشه
    چطوری؟
    خیلی ممنون

  6. #5
    پروفشنال hoax3r's Avatar
    تاريخ عضويت
    Oct 2007
    پست ها
    699

    پيش فرض

    ممنون درستش کردم فقط اگه تعداد کلمات تا 9 باشه نشون میده .
    چطوری؟
    خیلی ممنون
    عدد باقیماندش به 10 : رقم اول،
    عدد تقسیم به 10
    عدد باقیماندش به 10 : رقم دوم
    الا آخر

  7. این کاربر از hoax3r بخاطر این مطلب مفید تشکر کرده است


  8. #6
    کـاربـر بـاسـابـقـه saeed_136915's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    The Land of Skyrim
    پست ها
    2,715

    پيش فرض

    سلام آقا دستت درد نکنه درست شد به کمک شما فقط یه سوال دیگه میشه بگین دستور push چیکار میکنه؟؟

  9. #7
    کـاربـر بـاسـابـقـه saeed_136915's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    The Land of Skyrim
    پست ها
    2,715

    پيش فرض

    دوستان خواهشا کمک کنین. من اینو نوشتم ولی خروجیش این میشه(ch=11) :
    ;0
    چرا؟؟؟
    MOV AL,CL
    MOV AH,0
    I DB 10
    DIV I
    MOV BL,AL
    MOV BH,AH
    ADD BL,48
    ADD BH,48
    MOV AH,02
    MOV DL,BH
    INT 21H
    MOV DL,BL
    INT 21H
    Last edited by saeed_136915; 05-06-2011 at 19:32.

  10. #8
    پروفشنال hoax3r's Avatar
    تاريخ عضويت
    Oct 2007
    پست ها
    699

    پيش فرض

    فقط یه سوال دیگه میشه بگین دستور push چیکار میکنه؟؟
    این دستور یه مقدارو میریزه تو حافظه ی استک

    دوستان خواهشا کمک کنین. من اینو نوشتم ولی خروجیش این میشه(ch=11) :
    ch از کجا اومد
    کدت به نظر درسته البته فعلا نمیتونم تست کنم
    در ضمن بیشتر توضیح بده چیکار کردی یا کده کامل بزار

  11. این کاربر از hoax3r بخاطر این مطلب مفید تشکر کرده است


  12. #9
    کـاربـر بـاسـابـقـه saeed_136915's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    The Land of Skyrim
    پست ها
    2,715

    4

    این دستور یه مقدارو میریزه تو حافظه ی استک


    ch از کجا اومد
    کدت به نظر درسته البته فعلا نمیتونم تست کنم
    در ضمن بیشتر توضیح بده چیکار کردی یا کده کامل بزار
    ممنون درست شد. ch تعداد کلمه هاس . وقتی 10 رو تو i ذخیره میکنم و div رو اجرا میکنم اصلا AL و AH تغییر نمیکنه ولی وقتی توی DL ذخیره میکنم درست اجرا میشه نمیدونم چرا

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •