در این قسمت یک تمرین دیگر با هم انجام میدهیم و برنامه ای مینویسیم که تعداد ۲۰۰ رنگ از ۲۵۶ رنگ موجود در حالت ۳۲۰×۲۰۰ گرافیکی را نمایش دهد . تابع شماره ۰۰h از وقفه ۱۰h مربوط به تعیین حالت نمایش است . کد مربوط به حالت صفحه نمایش در ثبات AL قرار گرفته و وقفه فراخوانی میشود: شماره تابع برابر AH=00h حالت صفحه نمایش با استفاده از جدول AL= INT 10h حالت صفحه نمایش در AL از جدول مخصوص موجود در کتابهای اسمبلی بدست می آید. کد مربوط به حالت ۲۵۶C َ۳۲۰×۲۰۰ برابر ۱۳h است بنا براین AL را برابر ۱۳h قرار میدهیم . برای نمایش و روشن کردن یک نقطه (Pixel) در حالت گرافیکی از تابع ۰Ch همین وقفه استفاده میکنیم . یعنی شماره ستون را در CX ، سماره سطر را در DX و شماره رنگ را در AL قرار داده و وقفه را اجرا میکنیم . برای اینکه از ستون ۱۹۹ تا ستون شماره صفر نقطه روشن کنیم ، CX را برابر ۳۱۹ قرار داده و با دستور LOOP نقاط را در یک سطر روشن میکنیم . MOV CX/319 ; COLUMN 319 = START COLUMN COL: INT 10H ; CALL INTERRUPT 10H LOOP COL سپس DX یا همان شماره سطر را یکواحد افزایش میدهیم و مقدار آن را با ۱۹۹ مقایسه میکنیم (چون از ۰ تا ۱۹۹ سطر داریم ) و اگر برابر نبود دوباره عملیات بالا را انجام میدهیم . بعد از اینکه این عملیات انجام شد، تابع ۰۰h از INT 16h را فراخوانی میکنیم تا منتظر دریافت یک کلید از صفحه کلید شود . به این ترتیب میتوانیم نتیجه برنامه را مشاهده کنیم و کلیدی را برای اتمام برنامه بزنیم . در نهایت باید حالت صفحه نمایش را به مود متنی برگردانیم . برای اینکار از همان تابع تعیین مود نمایشی استفاده میکنیم و حالت صفحه نمایش که با AL مشخص میشود را برابر ۳ قرار میدهیم . برنامه را با روش گفته شده تایپ و کامپایل کنید . اگر از توربو اسمبلر استفاده میکنید با فرمان ASM/T.َTASM VGA256 آن را به فرم COM. ترجمه کنید. [HR][/HR] . MODEL SMALL . CODE ORG 100H START : MOV AH/00H MOV AL/13H MOV BX/00H ; PAGE NUMBER INT 10H ; SET TO 320×200 256 COLORS MOV AH/0CH ; PUTPIXEL FUNCTION MOV AL/25 ; COLOR #25 MOV DX/0 ; ROW 0 ROW : MOV CX/319 ; COLUMN 319 = START COLUMN COL : INT 10H ; CALL INTERRUPT 10H LOOP COL ; DOWN TO CX=0 INC DX ; DX=DX+1 INC AL ; AL=AL+1( COLOR NUMBER ) CMP DX/199 ; IF DX=199 JNZ ROW ; ELSE JUMP TO ROW MOV AH/00H INT 16H MOV AH/00H ; VIDEO MODE SET MOV AL/03H ; 80×25 16 COLORS INT 10H ; CALL INT .10H INT 20H ; TERMINATE PROGRAM END START با انجام این تمرین ساده ، یا گرفتیم که دانستن یکسری از وقفه ها و توابعمربوط به آنها برای نوشتن برنامه های اسمبلی الزامی است .