PDA

View Full Version : ماتریس کراکتر



بمب منطقی
دوشنبه 09 آذر 1383, 00:50 صبح
با سلام خدمت دوستان محترم بخش اسمبلی
دوستان اگه میشه منو راهنمایی کنن که چطوری میتونم جدول رنگ مربوط به هر کراکتر (در سه Mode مختلف 8*8 و 14*8 و 16*8) رو از بایوس بخونم.من در نظر دارم که یه برنامه مربوط به طراحی فونت بنویسم.یعنی به وسیله این برنامه می خوام جدول رنگ مربوط به هر کراکتر رو از بایوس بخونم و طبق ماتریس مربوط به هر کراکتر جدول موجود در برنامم رو پر کنم و سپس کراکتر های طراحی شده رو بجای کراکتر های موجود در بایوس ، بر روی حافظه مقیم کنم.
تا اونجا که من میدونم باید از توابع وقفه int 10 یا 11 استفاده کنم.ولی چجوریش رو دیگه نمیدونم.
دوستان اگه میشه به سوالم جواب بدید که به جوابش بدجوری نیاز دارم.
اگه source code برنامه باشه که معرکه میشه.دستتون درد نکنه :flower: :flower:

B-Vedadian
چهارشنبه 11 آذر 1383, 10:21 صبح
سلام،

بصورت خلاصه: برای این کار باید حافظه جدول کاراکترهای مورد نظرتون رو انتخاب کنید، بعدش محتویات حافظه رو بخونید! اما این که چطوری جدول کاراکتر رو انتخاب کنید رو توی کتاب PC Intern میتونید پیدا کنید. این چند وقته رو تو خوابگاه هستم، اگه کتاب رو گیر آوردم کدش رو هم براتون میفرستم.

البته اگه جدولهای استاندارد رو بخواهید کاری نداره با وقفه 16(10 هگزا) سرویس 17(11 هگزا) میتونید جدولهای استاندارد 8*8 یا 16*8 رو میخونید همونطور که گفتید:

برای خوندن جدول روی بایوس:


ASM
push BP { Save Base Pointer }
mov BH, Height
mov AX, 1130h { Function 11h, Subfuntion 30h }
int 10h { Interrupt 10h }
mov AX, BP
pop BP
mov Offs, AX { Store the pointer }
mov Segm, ES
END;

برای مقیم کردن یک جدول در حافظه موقت:


ASM
push BP { Save Base Pointer }
mov BP,Offs
mov AX,Segm
mov ES,AX
mov BH,Height
mov CX,Count { Count of characters you want to set char table for }
mov DX,Start { Start Index of characters you want to change }
mov AX, 1110h { Function 11h, Subfuntion 10h }
int 10h { Interrupt 10h }
mov AX, BP
pop BP
END;

بمب منطقی
شنبه 14 آذر 1383, 01:11 صبح
خیلی ممنون سورسی که برام گذاشتی بهم خیلی کمک کرد. :flower: :D