PDA

View Full Version : تغییر رنگ پس زمینه



vbkaar
شنبه 16 دی 1391, 23:45 عصر
سلام . از اساتید خواهش میکنم در مورد تغییر رنگ پس زمینه من رو راهنمایی کنن.

the king
یک شنبه 17 دی 1391, 01:17 صبح
سلام . از اساتید خواهش میکنم در مورد تغییر رنگ پس زمینه من رو راهنمایی کنن.

برای مد متنی؟

روش نوشتن مستقیم در حافظه بافر نمایشگر :
آدرس حافظه نمایشگر از سگمنت B800 شروع میشه، به ترتیب یک کاراکتر، رنگ کاراکتر و زمینه، یک کاراکتر، رنگ کاراکتر و زمینه و ...
شما بعد از نوشتن هر کاراکتر در بایت بعدی باید رنگ اش رو مشخص کنید. روش سریع و دقیقی یه، اما به شرطی
که بدانید چیکار می کنید.


.MODEL SMALL
.DATA
msg DB "This is a sample.$";
.CODE
.STARTUP
MOV AX, 0B800h
MOV ES, AX
LEA SI, msg
MOV DI, 0
CLD
loop_1:
LODSB
CMP AL, '$'
JE next_1
STOSB
MOV AL, 1Bh
STOSB
JMP loop_1
next_1:
MOV AH, 8
INT 21h
.EXIT
.STACK
END


روش دوم :
وقفه 10h کارت گرافیکی این امکان رو میده که در موقعیت فعلی کاراکتری رو با رنگ دلخواهی بنویسید،
اما متاسفانه برای جابجا کردن موقعیت فعلی مکان نما بصورت خودکار کاری انجام نمیده، باید کدی برای
جابجا کردن موقعیت مکان نما اضافه کنید. برای همینه که این روش نسبت به روش قبلی کند ئه.


.MODEL SMALL
.DATA
msg DB "This is a sample.$";
col DB 0
row DB 2
.CODE
.STARTUP
LEA SI, msg
loop_1:
MOV AH, 02h
MOV BH, 0
MOV DH, row
MOV DL, col
INT 10h
LODSB
CMP AL, '$'
JE next_1
MOV AH, 09h
MOV BH, 0
MOV BL, 1Bh
MOV CX, 1
INT 10h
INC col
JMP loop_1
next_1:
MOV AH, 8
INT 21h
.EXIT
.STACK
END

vbkaar
یک شنبه 17 دی 1391, 20:01 عصر
برای مد متنی؟


راستش میخواستم به صورت inline در زبان C بنویسم. الان متوجه شدم که ظاهرا نمیشه از وقفه ها در این حالت استفاده کرد. به نظرتون باید چکار کنم؟ میخواستم کل صفحه رنگش عوض بشه. خیلی تحقیق کردم تا متوجه شدم که وقفه ها قابل اجرا نیستند. آیا با Api ویندوز میشه رنگ کل صفحه رو تغییر داد؟ به چه شکل؟ ممنون میشم از اساتید که منو راهنمایی کنن.

the king
یک شنبه 17 دی 1391, 23:05 عصر
راستش میخواستم به صورت inline در زبان C بنویسم. الان متوجه شدم که ظاهرا نمیشه از وقفه ها در این حالت استفاده کرد. به نظرتون باید چکار کنم؟ میخواستم کل صفحه رنگش عوض بشه. خیلی تحقیق کردم تا متوجه شدم که وقفه ها قابل اجرا نیستند. آیا با Api ویندوز میشه رنگ کل صفحه رو تغییر داد؟ به چه شکل؟ ممنون میشم از اساتید که منو راهنمایی کنن.

چون این انجمن مربوط به زبان C نیست اینجا جواب بدیم پاک میشه، عبارت SetConsoleTextAttribute رو جستجو کنید، اسم تابع API تعیین رنگ نوشته است.

vbkaar
دوشنبه 18 دی 1391, 11:34 صبح
الان کلا اگه بخوایم به زبان اسمبلی و با استفاده از Api این کار رو انجام بدیم باید چکار کنیم؟ دوستان اگر امکان داره راهنمایی بفرمایید.

vbkaar
دوشنبه 18 دی 1391, 15:27 عصر
ممنون. مشکل با عوض کردن کامپایلر حل شد.