a- Chống khởi động máy và truy nhập CMOS:
4.5 Các nguyên tắc phối hợp mainboar d chip
• Để máy tính làm việc theo đúng điều kiện tiêu chuẩn cần tuân theo các điều kiện sau:
− Tốc độ bus nội bộ của chip <= tốc độ bus thiết lập trên mainboard
− Tốc độ xung đồng hồ thực sự = hệ số nhân * tốc độ bus trên main board <= tốc độ xung đồng hồ của chip
− Điện áp thiết lập trên mainboard<= điện áp lớn nhất cho phép của chip • Overclock:
− Là thuật ngữ sử dụng chỉ việc thiết lập chế độ xung đồng hồ và điện áp làm việc của chip v−ợt quá mức tiêu chuẩn. Trong thực tế việc này ch−a làm chip hỏng ngay nh−ng sẽ làm giảm tuổi thọ của chip. Nh−ng cái lý của những ng−ời thích overclock là" Bạn giữ máy tính của bạn làm việc trong điều kiện
chuẩn thì chỉ sau 1 năm máy của bạn cũng đã trở nên cổ so với sự phát triển của phần cứng - và máy của tôi sau 1 năm cũng trở nên cổ. Nh−ng trong 1 năm đó máy của tôi chạy nhanh hơn máy của bạn".
− Thực tế cho thấy có thể overclock quá 10% vẫn trong giới hạn an toàn. Tuy nhiên khi đó chip chạy sẽ nóng hơn. Muốn đảm bảo có thể thay các quạt tốt hơn cho chip, hoặc thêm quạt trong thùng máy.
4.6 Nâng cấp : Việc thay ổ cứng cú dung lượng lớn hơn khụng cú gỡ khú khăn và khụng đũi hỏi biện phỏp kỹ thuật gỡ hơn. Khi thay Card màn hỡnh cần chỳ ý khe cắm cú đỳng loại khụn thương ứng với loại card mấy X. Cắm thờm RAM cần chỳ ý mainboard hiện thời cú sử dụng được loại RAM định cắm vào khụng. Vớ dụ mainboard chỉ cắm được RAM bus 133MHz thỡ khụng cắm được RAM bus 266MHz...
Phụ lục
Ch−ơng trình nạp lại Master Boot khi bị virus xâm nhập
Để tránh những điều đáng tiếc, trong khi máy còn đang “sạch”, bạn nên sao l−u master boot và partition của đĩa cứng ra 1 đĩa mềm "bảo bối" để khi cần có thể nạp lại. Việc nạp lại master boot trong bất kể tình huống nào cũng có tác dụng làm “t−ơi master boot và loại đi mọi “rác r−ởi” dính vào master boot . Tiến hành khi máy còn đang sạch :
B−ớc 1 :
Dùng Debug để nạp Sector = 1, Track=0, Side=0, mã ổ đĩa =80h vào 1 vùng nhớ nào đó dành cho ng−ời sử dụng (chẳng hạn chọn 4000:0) bằng các lệnh
assembly nh− sau: A 100 ↵ MOV AX,0202 ↵ MOV DX,0080 ↵ MOV CX,0001 ↵ MOV DI,4000 ↵ MOV ES,DI ↵ MOV BX,0 ↵ INT 13 ↵ INT 20 ↵ ↵ G ↵
Sau lệnh G(Go) 512 bytes của master boot và bảng Partition sẽ đ−ợc nạp vào bộ nhớ từ địa chỉ 4000:0
Có thể xem 512 bytes này bằng lệnh D(Dump) : D 4000:0 L200 ↵
B−ớc 2 :
Chuyển 512 bytes từ vùng nhớ 4000:0 sang vùng CS:100 bằng lệnh M(Move): M 4000:0 L200 CS:100 ↵
B−ớc 3:
L−u 512bytes trên vào tệp MastBoot.luu bằng lệnh : N MastBoot.luu ↵
: 200 ↵ W ↵ W ↵
( Lệnh R (Register) để nhập vào thanh ghi CX số hexa 200h = 512 bytes) Sau 3 b−ớc này trên đĩa C: đã có file MastBoot.luu l−u trữ bảng Partition. Đ−a file này vào đĩa “cứu hộ “. Khi gặp trục trặc ở master boot ta dùng đĩa cứu hộ để khởi động. Rồi nạp lại master boot nh− sau:
B−ớc 1 : N Mastboot.luu ↵ -L B−ớc 2 : M CS:100 L200 4000:0 ↵ B−ớc 3 : MOV AX,0301 ↵ MOV DX,0080 ↵ MOV CX,0001 ↵ MOV DI,4000 ↵ MOV ES,DI ↵ MOV BX,0 ↵ INT 13 ↵ INT 20 ↵ ↵ G ↵
Sau lệnh này master boot lại đ−ợc ghi từ file MastBoot.luu. Trở lại “sạch sẽ”.
Ch−ơng trình này đã đ−ợc thử nghiệm để phục hồi masterboot có hiệu quả khi bị vi rut nhiễm vào Masterboot .
Ta cũng có thể dùng ch−ơng trình này để l−u Boot Record. Nếu ổ cứng chỉ đ−ợc chia làm 1 ổ thì Boot Record nằm ngay d−ới Masterboot ở mặt 1. ta chỉ cần thay :
mov dx,0080 thành mov dx 0180
Nếu ổ cứng đ−ợc chia làm nhiều ổ đĩa logic thì ta dùng ch−ơng trình
Diskedit.exe để xác định địa chỉ Boot Record của Partition khởi động để đ−a thông số vào câu lệnh trên
Ch−ơng trình cất giữ và phục hồi thông tin trong CMOS Program CMOS_Save_Restore; uses crt,dos; const FileName='CMOSINFO.SAV'; Var giatri,temp,i:byte; F:file of byte;
{Thu tuc in thong bao loi} Procedure Err_Handle; Begin
Write('Error ! Program Terminated'); Halt(1);
End;
{ Ham doc va ghi CMOS vao file} Function Read_CMOS:integer; Begin
Assign(F,FileName);
{$I-} {Tat kiem tra vao ra de bat loi } Rewrite(F);
{$I+}
If IOResult<>0 then Read_CMOS:=-1 Else Begin For i:=0 to 127 do begin Port[$70]:=i; giatri:=Port[$71]; Write(F,giatri); end; Read_CMOS:=0; Close(F); End; End;
{ Ham doc du lieu tu file & ghi vao CMOS} Function Write_CMOS:integer;
Begin
Assign(F,FileName); {I-}
Reset(F); {I+}
If IOResult<>0 then Write_CMOS:=-1 Else Begin For i:=0 to 127 do begin Read(F,temp); giatri:=temp; Port[$70]:=i; Port[$71]:=giatri; Port[$70]:=i+128; Port[$71]:=giatri; end; Close(F); Write_CMOS:=0; End; End;
{Thu tuc hien man hinh tro giup} Procedure Help;
Begin
Writeln('Usage:CMOS S|s - Save CMOS Infor to file CMOSINFO.SAV'); Writeln(' CMOS W|w - Restore CMOS Info');
Writeln(' Press any key to continue ...!'); Readln;
End;
{Main Program} BEGIN
Clrscr;
Writeln('CMOS Info - Save & Restore Utility'); Writeln('Cread Date 09/11/1999');
If (ParamCount=0) then Help;
If (ParamCount=1) and (ParamStr(1)='W')or (ParamStr(1)='w') then Begin
Write_CMOS;
If Write_CMOS=-1 then Err_Handle Else Writeln('CMOS Updated . OK !'); End;
If (ParamCount=1) and (ParamStr(1)='S')or (ParamStr(1)='s') then Begin
Read_CMOS;
If Read_CMOS=-1 then Err_Handle Else Writeln('CMOS Saved . OK !'); End;
END.