نمایش نتایج 1 تا 2 از 2

نام تاپیک: توضیح یه تیکه کد

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1394
    محل زندگی
    تبریز
    پست
    35

    توضیح یه تیکه کد

    سلام وقتتون بخیر میشه این برنامه رو خط به خط توضیح بدین.ممنون
    asm.jpg

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1391
    پست
    886

    نقل قول: توضیح یه تیکه کد

    نقل قول نوشته شده توسط ali-iman مشاهده تاپیک
    سلام وقتتون بخیر میشه این برنامه رو خط به خط توضیح بدین.ممنون

    NAME "vga"

    نامی که برای برنامه در نظر گرفته شده vga است.


    ORG 100h

    در فایل های اجرایی COM آدرس شروع کد 100h است.


    JMP code

    به موقعیتی که با برچسب code مشخص شده پرش می کنیم.


    w EQU 10

    یک مقدار ثابت با نام w و مقدار 10 تعریف می کنیم.


    h EQU 5

    یک مقدار ثابت با نام h و مقدار 5 تعریف می کنیم.


    code:

    این موقعیت از کد با برچسب code مشخص شده است.


    MOV AH, 0

    در ادامه قصد داریم سرویس 0 از وقفه 10h را اجرا کنیم که مود صفحه نمایش را تغییر می دهد. شماره سرویس در AH مشخص می شود.


    MOV AL, 13h

    مود گرافیکی برای سرویس 0 از وقفه 10h در AL مشخص می شود. ما مود شماره 13h را انتخاب کرده ایم که مود گرافیکی 320x200 پیکسلی 256 رنگ است.


    INT 10h

    وقفه 10h را اجرا می کنیم تا مود گرافیکی شماره 13h فعال شود.


    MOV CX, 100+w

    در ادامه وقفه 0Ch ار وقفه 10h را اجرا خواهیم کرد که رنگ یک پیکسل در صفحه نمایش را تغییر می دهد. شماره ستون آن پیکسل (محور x) در CX مشخص می شود که ما w + 100 را برایش انتخاب می کنیم.


    MOV DX, 20

    شماره سطر پیکسل (محور y) برای سرویس 0Ch از وقفه 10h در DX مشخص می شود که ما مقدار 20 را برایش انتخاب می کنیم.


    MOV AL, 15

    شماره رنگ پیکسل در AL مشخص می شود که ما مقدار 15 را انتخاب می کنیم.


    u1:

    برچسب این موقعیت از کد u1 است.


    MOV AH, 0ch

    سرویس 0Ch را انتخاب می کنیم که باید در AH ثبت شود.


    INT 10h

    وقفه 10h را اجرا می کنیم تا پیکسلی که در موقعیت CX افقی و DX عمودی قرار دارد به رنگ AL شود.


    DEC CX

    مقدار CX که موقعیت افقی پیکسل را مشخص می کند یک واحد کم می کنیم، یعنی یک پیکسل به سمت چپ می رویم.


    CMP CX, 100

    بررسی می کنیم که آیا CX به 100 رسیده یا خیر. ما مقدار اولیه اش را w + 100 قرار داده بودیم که به تدریج کم می شود.


    JAE u1

    اگر بزرگتر یا برابر با 100 بود به u1 پرش می کنیم تا پیکسل مجاور هم رنگ شود.


    MOV AH, 00

    زمانی که به تعداد w پیکسل رنگ شود به اینجا رسیده ایم. سرویس 0 از وقفه 16h را اجرا خواهیم کرد تا منتظر فشار دادن یک کلید شود. شماره سرویس در AH مشخص می شود.


    INT 16h

    سرویس 16h را اجرا می کنیم. برنامه منتظر می ماند تا کاربر کلیدی را فشار دهد.


    MOV AH, 00

    در ادامه سرویس 00 از وقفه 10h را اجرا می کنیم تا مود گرافیکی را به حالت پیشفرض متنی برگردانیم. شماره سرویس در AH مشخص می شود.


    MOV AL, 03

    مود متنی پیشفرض 03 است که باید در AL مشخص شود.


    INT 10h

    وقفه 10h را اجرا می کنیم تا از مود گرافیکی خارج شویم و مود متنی فعال شود.


    RET

    برای بازگشت از توابع از دستور RET استفاده می شود.

    نسخه ویرایش شده :

    w EQU 10
    h EQU 5

    .MODEL TINY
    .CODE
    .STARTUP
    MOV AH, 0
    MOV AL, 13h
    INT 10h
    MOV CX, 100+w
    MOV DX, 20
    MOV AL, 15
    u1:
    MOV AH, 0ch
    INT 10h
    DEC CX
    CMP CX, 100
    JAE u1
    MOV AH, 00
    INT 16h
    MOV AH, 00
    MOV AL, 03
    INT 10h
    .EXIT 0
    END


تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: سه شنبه 17 آذر 1394, 00:12 صبح
  2. انجام اتواتیک محاسبات ریاضی از عناصر چند جدول و ذخیره اون در یک جدول جدید در SQL
    نوشته شده توسط gprsm0 در بخش مدیریت دیتابیس (Database Administration)
    پاسخ: 0
    آخرین پست: دوشنبه 16 تیر 1393, 21:12 عصر
  3. پاسخ: 2
    آخرین پست: شنبه 20 مهر 1392, 12:57 عصر
  4. پاسخ: 9
    آخرین پست: دوشنبه 13 اردیبهشت 1389, 09:00 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •