BIOS làm việc như thế nào ?
BIOS được viết tắt từ Basic Input – Output System , ngày nay BIOS được lưu trong bộ nhớ kiểu Flash .
Hầu hết mọi máy tính hiện nay BIOS được dùng trên những thiết bị khác như : ổ cứng CPU , Card màn hình …
Mọi máy tính ngày nay đều có cấu hình chung bao gồm bộ vi xử lí như là một đơn vị xử lí trung tâm . Bộ vi xử lí là thiết bị phần cứng , để cho nó làm việc cần cho nó xử lí những lệnh gọi là phần mềm . Có 02 kiểu phần mềm bao gồm :
· Hệ điều hành : hệ điều hành cung cấp những dịch vụ cho những ứng dụng được chạy trên máy tính , nó cung cấp những quy tắc cơ bản giao diện với người sử dụng . ( Ví dụ : Windows 98, XP , Linux …)
· Những chương trình ứng dụng . Chúng là những phần mềm được lập trình để thực hiện những nhiệm vụ nào đó . ( Ví dụ : Chương trình duyệt Web , nhận và gửi thư …. )
BIOS là kiểu thứ ba của phần mềm máy tính để cho những hoạt động được thành công .
BIOS làm những gì ?
Phần mềm BIOS của Mainboard có một số vai trò khác nhau , nhưng nhiệm vụ quan trong nhất của nó là tải hệ điều hành . Khi bạn bật máy tính và bộ vi xử lí cố gắng thực hiện những lệnh đầu tiên , nó sẽ nhận những lệnh này ở đâu đó . Nó không thể nhận được những lệnh này từ hệ điều hành bới vì hệ điều hành nằm trên ở cứng . Chính là BIOS cung cấp những lệnh này . BIOS cung cấp những lệnh thực hiện những việc chung như sau :
- POST (power-on self-test – Tự kiểm tra khi bật nguồn ) cho tất cả những phần cứng khác nhau trong hệ thống và chắc chắn chúng làm việc được phù hợp .
- Kích hoạt những BIOS của những Card khác nhau cài đặt trong máy tính ( Ví dụ : Card SCSI , Card đồ hoạ … những Card này có Chip BIOS riêng ) .
- Cung cấp những thủ tục mức thấp nhất mà hệ điều hành dùng để giao tiếp với những thiết bị phần cứng khác ( Những thủ tục này được lưu trong BIOS và có những cách sử dụng riêng biệt ) . Chúng quản lí những công việc như Keyboard , màn hình hiển thị , cổng nối tiếp , cổng song song … trong khi máy tính bắt đầu khởi dộng .
- Quản lí những thiết lập của ổ cứng , của đồng hồ …
BIOS là phần mềm chuyên dụng để cung cấp những giao diện để kết nối những phần cứng chính với hệ điều hành . Nó thường được lưu trữ trong bộ nhớ Flash trên Mainboard , đối với những Mainboard trước kia được lưu trữ trong ROM .
Với loại ROM trên có thể Ghi/Xoá được . Để xoá nội dung trong đó thông thường dùng ánh sánh tia cực tím chiếu vào vùng có vòng tròn khoanh đỏ . Nội dung trong BIOS được ghi bằng thiết bị ghi ROM chuyên dụng . Ghi xong chúng ta phải bị chỗ có vòng tròn đỏ để tránh xảy ra hiện tượng mất dữ liệu .
Đối với những máy tính đời cũ nữa thì nội dung của BIOS được lưu vào trong 02 ROM một cho Odd và một cho Even với mục đích tăng tốc độ khi truy cập vào ROM . Ngày nay tốc độ của bộ nhớ Flash nhanh nên nội dung BIOS chỉ ghi vào trong một bộ nhớ Flash duy nhất . Đồng thờii khi bất máy tính những nội dung của BIOS sau khi kiểm tra một số bước cũng được tải thẳng vào bộ nhớ để việc truy cập được nhanh hơn .
Khi bật máy tính , BIOS thực hiện những lệnh bao gồm những công việc sau :
· Kiểm tra CMOS Setup cho những thiết lập cuỉa hệ thống .
· Tải những điều khiển ngắt và những Driver của thiết bị .
· Thiết lập những giá trị ban đầu cho những thanh ghi và quản lí nguồn cung cấp .
· Thực hiện POST
· Hiển thị những thiết lập hệ thống .
· Xác định những thiết bị nào tham gia quá trình khởi động .
· Thiết lập những thứ tự khởi động hệ thống .
Đầu tiên BIOS kiểm tra những thông tin được lưu trữ trong một bộ nhớ RAM nhỏ có dung lượng 64 byte ( hoặc 128 byte ) trong Chip với công nghệ CMOS (complementary metal oxide semiconductor) – dùng công nghệ CMOS cho phép tiêu thụ năng lượng ít nên dễ dàng dùng Pin Li-Ion để lưu trữ dữ liệu hàng năm mà không phải thay . CMOS Setup cung cấp những thông tin chi tiết liên quan đến hệ thống máy tính của bạn và có thể thay đổi được .
Điều khiển những ngắt là những đoạn chương trình nhỏ làm việc như là bộ phận chuyển đổi giữa phần cứng và hệ điều hành . Ví dụ khi bấm bàn phím , tín hiệu được gửi từ bộ phận điều khiển ngắt sẽ nói cho CPU cái gì đã được ấn và gửi tới hệ điều hành . Những Driver thiết bị là những những đoạn chương trình khác mà nhận dạng những phần cứng cơ bản như bàn phím , chuột , ổ cứng , ổ mềm . Khi đó BIOS luôn luôn chặn những tín hiệu tới và từ phần cứng , thông thường được Copy ( được Shadow ) vào RAM để cho hoạt động được nhanh hơn .
Interrupt
|
Địa chỉ
|
Kiểu
|
Mô tả
|
00h
|
0000:0000h
|
Processor
|
Divide by zero
|
01h
|
0000:0004h
|
Processor
|
Single step
|
02h
|
0000:0008h
|
Processor
|
Non maskable interrupt (NMI)
|
03h
|
0000:000Ch
|
Processor
|
Breakpoint
|
04h
|
0000:0010h
|
Processor
|
Arithmetic overflow
|
05h
|
0000:0014h
|
Software
|
Print screen
|
06h
|
0000:0018h
|
Processor
|
Invalid op code
|
07h
|
0000:001Ch
|
Processor
|
Coprocessor not available
|
08h
|
0000:0020h
|
Hardware
|
System timer service routine
|
09h
|
0000:0024h
|
Hardware
|
Keyboard device service routine
|
0Ah
|
0000:0028h
|
Hardware
|
Cascade from 2nd programmable interrupt controller
|
0Bh
|
0000:002Ch
|
Hardware
|
Serial port service – COM post 2
|
0Ch
|
0000:0030h
|
Hardware
|
Serial port service – COM port 1
|
0Dh
|
0000:0034h
|
Hardware
|
Parallel printer service – LPT 2
|
0Eh
|
0000:0038h
|
Hardware
|
Floppy disk service
|
0Fh
|
0000:003Ch
|
Hardware
|
Parallel printer service – LPT 1
|
10h
|
0000:0040h
|
Software
|
Video service routine
|
11h
|
0000:0044h
|
Software
|
Equipment list service routine
|
12h
|
0000:0048H
|
Software
|
Memory size service routine
|
13h
|
0000:004Ch
|
Software
|
Hard disk drive service
|
14h
|
0000:0050h
|
Software
|
Serial communications service routines
|
15h
|
0000:0054h
|
Software
|
System services support routines
|
16h
|
0000:0058h
|
Software
|
Keyboard support service routines
|
17h
|
0000:005Ch
|
Software
|
Parallel printer support services
|
18h
|
0000:0060h
|
Software
|
Load and run ROM BASIC
|
19h
|
0000:0064h
|
Software
|
DOS loading routine
|
1Ah
|
0000:0068h
|
Software
|
Real time clock service routines
|
1Bh
|
0000:006Ch
|
Software
|
CRTL – BREAK service routines
|
1Ch
|
0000:0070h
|
Software
|
User timer service routine
|
1Dh
|
00000074h
|
Software
|
Video control parameter table
|
1Eh
|
0000:0078h
|
Software
|
Floppy disk parameter routine
|
1Fh
|
0000:007Ch
|
Software
|
Video graphics character routine
|
20h-3Fh
|
0000:0080f – 0000:00FCh
|
SOftware
|
DOS interrupt points
|
40h
|
0000:0100h
|
Software
|
Floppy disk revector routine
|
41h
|
0000:0104h
|
Software
|
hard disk drive C: parameter table
|
42h
|
0000:0108h
|
Software
|
EGA default video driver
|
43h
|
0000:010Ch
|
Software
|
Video graphics characters
|
44h
|
0000:0110h
|
Software
|
Novel Netware API
|
46h
|
0000:0118h
|
Software
|
Hard disk drive D: parameter table
|
4Ah
|
0000:0128h
|
Software
|
User alarm
|
64h
|
Software
|
Novel Netware IPX
|
|
67h
|
Software
|
EMSsupport routines
|
|
70h
|
0000:01c0h
|
Hardware
|
Real time clock
|
71h
|
0000:01C4h
|
Hardware
|
Redirect interrupt cascade
|
72h-74h
|
0000:01C8h – 0000:01D0h
|
Hardware
|
Reserved – Do not use
|
75h
|
0000:01D4h
|
Hardware
|
Math coprocessor exception
|
76h
|
0000:01D8h
|
Hardware
|
Hard disk support
|
77h
|
0000:01DCh
|
Hardware
|
Suspend request
|
7Ah
|
Software
|
Novell Netware API
|
Quá trình Boot máy tính
Khi bật máy tính điều đầu tiên được nhìn thấy là phần mềm BIOS đang làm những công việc của nó . Đối với nhiều máy tính , BIOS hiển thị những đoạn Text để mô tả như : tổng dung lượng bộ nhớ được cài đặt , kiểu ổ cứng …
Sau quá trình này là thứ tự khởi động hệ thống , BIOS làm một loạt những công việc để máy tính của bạn sẵn sàng hoạt động . Phần này sẽ mô tả ngắn gọn một loạt những công việc của một máy tính thông thường
Sau khi kiểm tra CMOS Setup và tải những điều khiển ngắt , BIOS sẽ xác định xem Card màn hình có làm việc được hay không . Hầu hết những Card màn hình có BIOS riêng của chúng để thiết lập giá trị ban đầu cho bộ vi xử lí đồ hoạ và bộ nhớ dành riêng cho đồ hoạ . Nếu không thì có những thông tin Card màn hình thông thường trong những ROM khác trên Mainboard mà BIOS có thể tải .
Tiếp theo BIOS kiểm tra xem trạng thái Cold Boot hoắc Reboot . Nó làm bằng cách kiểm tra giá trị ô nhớ tại địa chỉ 0000:0472 . Nếu giá trị là 1234h ( h- hecxa ) có nghĩa là Reboot ( khởi động lại ) và BIOS bỏ qua bước kiểm tra POST , ngoài ra thì có nghĩa là Cold Boot ( khởi động bắt đầu quá trình bật nguồn ) .
Nếu là Cold Boot thì BIOS kiểm tra RAM bằng cách kiểm Đọc/Ghi tại mỗi địa chỉ ô nhớ . Nó kiểm tra cổng PS/2 hoặc cổng USB cho bàn phím và Mouse . Nó tìm kiếm Bus PCI (peripheral component interconnect ) nếu tìm ra một thiết bị PCI và kiểm tra những Card PCI .
Nếu BIOS tìm ra bất kì lỗi nào trogn quá trình POST , nó sẽ cảnh báo cho người sử dụng biết thông qua những tín hiệu Beep riêng hoặc hiển thị thong báo lỗi . Những lỗi xảy ra hầu hết do phần cứng có vấn đề .
BIOS hiển thị một vài chi tiết về hệ thống máy tính , thông thường như :
- Bộ vi xử lí
- Ổ mềm và ổ cứng .
- Dung lượng bộ nhớ
- Ngày sửa chữa BIOS
- Màn hình .
Nếu có bất kì Những Driver đặc biệt như Card SCSI (small computer system interface) thì BIOS sẽ hiển thị những thông tin về Card SCSI trên màn hình . Tiếp theo BIOS sẽ tìm kiếm những thiết bị lưu trữ như ổ cứng như là một ổ khởi động trong CMOS Setup . Nó sẽ tìm kiếm ổ nào được khởi động trước , ổ đĩa nào khởi động tiếp theo nếu như ổ thứ nhất không khởi động cứ như vậy . Nếu không tìm thấy phần khởi động nó sẽ ra bảng thông báo
Đối với những máy tính đời cũ khi không tìm thấy phần khởi động chương trình trong BIOS dùng Ngắt 18h ( Int 18h ) để khởi động ROM BASIC
Vùng dữ liệu của BIOS trong bộ nhớ
Khi quá trình khởi động kết thúc , trong bộ nhớ từ vị trí 00400:0000 với kích thước 255 byte là vùng dữ liệu BIOS
Offset Hex
|
Offset Dec
|
BIOS Service
|
Kích thước
|
Function
|
00h
|
0
|
Int 14h
|
2 bytes
|
Base I/O address for serial port 1 (communications port 1 – COM 1)
|
02h
|
2
|
Int 14h
|
2 bytes
|
Base I/O address for serial port 2 (communications port 2 – COM 2)
|
04h
|
4
|
Int 14h
|
2 bytes
|
Base I/O address for serial port 3 (communications port 3 – COM 3)
|
06h
|
6
|
Int 14h
|
2 bytes
|
Base I/O address for serial port 4 (communications port 4 – COM 4)
|
08h
|
8
|
Int 17h
|
2 bytes
|
Base I/O address for parallel port 1 (printer port 1 – LPT 1)
|
0Ah
|
10
|
Int 17h
|
2 bytes
|
Base I/O address for parallel port 2 (printer port 2 – LPT 2)
|
0Ch
|
12
|
Int 17h
|
2 bytes
|
Base I/O address for parallel port 3 (printer port 3 – LPT 3)
|
0Eh
|
14
|
POST
|
2 bytes
|
Base I/O address for parallel port 4 (printer port 4 – LPT 4) (Only found in PC/XT systems)
|
10h
|
16
|
Int 11h
|
2 bytes
|
Equipment Word
|
12h
|
18
|
POST
|
1 byte
|
Interrupt flag – Manufacturing test
|
13h
|
19
|
Int 12h
|
2 bytes
|
Memory size in Kb
|
15h
|
21
|
2 bytes
|
Error codes for AT+; Adapter memory size for PC and XT
|
|
17h
|
22
|
Int 16h
|
1 byte
|
Keyboard shift flags 1
|
18h
|
23
|
Int 16h
|
1 byte
|
Keyboard shift flags 2
|
19h
|
24
|
Int 09h
|
1 byte
|
Alt Numpad work area
|
1Ah
|
26
|
Int 16h
|
2 bytes
|
Pointer to the address of the next character in the keyboard buffer
|
1Ch
|
28
|
Int 16h
|
2 bytes
|
Pointer to the address of the last character in he keyboard buffer
|
1Eh
|
60
|
Int 16h
|
32 bytes
|
Keyboard buffer
|
3Eh
|
61
|
Int 13h
|
1 byte
|
Floppy disk drive calibration status
|
3Fh
|
62
|
Int 13h
|
1 byte
|
Floppy disk drive motor status
|
40h
|
63
|
Int 13h
|
1 byte
|
Floppy disk drive motor time-out
|
41h
|
64
|
Int 13h
|
1 byte
|
Floppy disk drive status
|
42h
|
65
|
Int 13h
|
1 byte
|
Hard disk and floppy controller status register 0
|
43h
|
66
|
Int 13h
|
1 byte
|
Floppy drive controller status register 1
|
44h
|
67
|
Int 13h
|
1 byte
|
Floppy drive controller status register 2
|
45h
|
68
|
Int 13h
|
1 byte
|
Floppy disk controller: cylinder number
|
46h
|
69
|
Int 13h
|
1 byte
|
Floppy disk controller: head number
|
47h
|
70
|
Int 13h
|
1 byte
|
Floppy disk controller: sector number
|
48h
|
71
|
1 byte
|
Floppy disk controller: number of byte written
|
|
49h
|
72
|
Int 10h
|
1 byte
|
Active video mode setting
|
4Ah
|
74
|
Int 10h
|
2 bytes
|
Number of textcolumns per row for the active video mode
|
4Ch
|
76
|
Int 10h
|
2 bytes
|
Size of active video in page bytes
|
4Eh
|
78
|
Int 10h
|
2 bytes
|
Offset address of the active video page relative to the start of video RAM
|
50h
|
80
|
Int 10h
|
2 bytes
|
Cursor position for video page 0
|
52h
|
82
|
Int 10h
|
2 bytes
|
Cursor position for video page 1
|
54h
|
84
|
Int 10h
|
2 bytes
|
Cursor position for video page 2
|
56h
|
86
|
Int 10h
|
2 bytes
|
Cursor position for video page 3
|
58h
|
88
|
Int 10h
|
2 bytes
|
Cursor position for video page 4
|
5Ah
|
90
|
Int 10h
|
2 bytes
|
Cursor position for video page 5
|
5Ch
|
92
|
Int 10h
|
2 bytes
|
Cursor position for video page 6
|
5Eh
|
94
|
Int 10h
|
2 bytes
|
Cursor position for video page 7
|
60h
|
96
|
Int 10h
|
2 bytes
|
Cursor shape
|
62h
|
97
|
Int 10h
|
1 byte
|
Active video page
|
63h
|
99
|
Int 10h
|
2 bytes
|
I/O port address for the video display adapter
|
65h
|
100
|
Int 10h
|
1 byte
|
Video display adapter internal mode register
|
66h
|
101
|
Int 10h
|
1 byte
|
Color palette
|
67h
|
103
|
2 bytes
|
Adapter ROM offset address
|
|
69h
|
106
|
2 bytes
|
Adapter ROM segment address
|
|
6Bh
|
107
|
1 byte
|
Last interrupt (not PC)
|
|
6Ch
|
111
|
Int 1Ah
|
4 bytes
|
Counter for Interrupt 1Ah
|
70c
|
112
|
Int 1Ah
|
1 byte
|
Timer 24 hour flag
|
71h
|
113
|
Int 16h
|
1 byte
|
Keyboard Ctrl-Break flag
|
72h
|
115
|
POST
|
2 bytes
|
Soft reset flag
|
74h
|
116
|
Int 13h
|
1 byte
|
Status of last hard disk operation
|
75h
|
117
|
Int 13h
|
1 byte
|
Number of hard disk drives
|
76h
|
118
|
Int 13h
|
1 byte
|
Hard disk control byte
|
77h
|
119
|
Int 13h
|
1 byte
|
Offset address of hard disk I/O port (XT)
|
78h
|
120
|
Int 17h
|
1 byte
|
Parallel port 1 timeout
|
79h
|
121
|
Int 17h
|
1 byte
|
Parallel port 2 timeout
|
7Ah
|
122
|
Int 17h
|
1 byte
|
Parallel port 3 timeout
|
7Bh
|
123
|
1 byte
|
Parallel port 4 timeout (PC, XT) support for virtual DMA services (VDS)
|
|
7Ch
|
124
|
Int 14h
|
1 byte
|
Serial port 1 timeout
|
7Dh
|
125
|
Int 14h
|
1 byte
|
Serial port 2 timeout
|
7Eh
|
126
|
Int 14h
|
1 byte
|
Serial port 3 timeout
|
7Fh
|
127
|
Int 14h
|
1 byte
|
Serial port 4 timeout
|
80h
|
129
|
Int 16h
|
2 bytes
|
Starting address of keyboard buffer
|
82h
|
131
|
Int 16h
|
2 bytes
|
Ending address of keyboard buffer
|
84h
|
132
|
Int 10h
|
1 byte
|
Number of video rows (minus 1)
|
85h
|
134
|
Int 10h
|
2 bytes
|
Number of scan lines per character
|
87h
|
135
|
Int 10h
|
1 byte
|
Video display adapter options
|
88h
|
136
|
Int 10h
|
1 byte
|
Video display adapter switches
|
89h
|
137
|
Int 10h
|
1 byte
|
VGA video flags 1
|
8Ah
|
138
|
Int 10h
|
1 byte
|
VGA video flags 2
|
8Bh
|
139
|
Int 13h
|
1 byte
|
Floppy disk configuration data
|
8Ch
|
140
|
Int 13h
|
1 byte
|
Hard disk drive controller status
|
8Dh
|
141
|
Int 13h
|
1 byte
|
Hard disk drive error
|
8Eh
|
142
|
Int 13h
|
1 byte
|
Hard disk drive task complete flag
|
8Fh
|
143
|
Int 13h
|
1 byte
|
Floppy disk drive information
|
90h
|
144
|
Int 13h
|
1 byte
|
Diskette 0 media state
|
91h
|
145
|
Int 13h
|
1 byte
|
Diskette 1 media state
|
92h
|
146
|
Int 13h
|
1 byte
|
Diskette 0 operational starting state
|
93h
|
147
|
Int 13h
|
1 byte
|
Diskette 1 operational starting status
|
94h
|
148
|
Int 13h
|
1 byte
|
Diskette 0 current cylinder
|
95h
|
149
|
Int 13h
|
1 byte
|
Diskette 1 current cylinder
|
96h
|
150
|
Int 16h
|
1 byte
|
Keyboard status flags 3
|
97h
|
151
|
Int 16h
|
1 byte
|
Keyboard status flags 4
|
98h
|
155
|
4 bytes
|
Segment:Offset address of user wait flag pointer
|
|
9Ch
|
159
|
4 bytes
|
User wait count
|
|
A0h
|
160
|
1 byte
|
User wait flag
|
|
A1h
|
167
|
7 bytes
|
Local area network (LAN) bytes
|
|
A8h
|
171
|
4 bytes
|
Segment:Offset address of video parameter control block
|
|
ACh
|
239
|
68 bytes
|
Reserved
|
|
F0h
|
255
|
16 bytes
|
Intra-applications communications area
|
Làm thế nào để BIOS nhận ra Driver của các thiết bị cắm thêm vào
Mỗi một thiết bị vào có một dãy địa chỉ được định sẵn nên phần mềm trong BIOS trong quá trình kiểm tra hệ thống sẽ quét qua toàn bộ những nội dung trong các dùng địa chỉ dành riêng . Tại đâu nó tìm thấy ô nhớ có giá trị là 55 AA , theo ví dụ dưới đây
2B6F:0100 55 AA 10 EB 03 E9 2A 08-E9 7F 00 28 43 29 20 43 U…..*….(C) C
2B6F:0110 6F 70 79 72 69 67 68 74-20 31 39 38 34 20 57 65 opyright 1984 We
2B6F:0120 73 74 65 72 6E 20 44 69-67 69 74 61 6C 20 43 6F stern Digital Co
2B6F:0130 72 70 6F 72 61 74 69 6F-6E CF 02 25 02 08 2A FF rporation..%..*.
2B6F:0140 50 F6 19 04 64 02 04 65-02 65 02 0B 05 64 02 00 P…d..e.e…d..
2B6F:0150 00 00 00 00 64 02 02 80-00 80 00 0B 05 64 02 00 ….d……..d..
2B6F:0160 00 00 00 00 64 02 04 65-02 80 00 0B 05 64 02 00 ….d..e…..d..
2B6F:0170 00 00 00 00 32 01 04 32-01 00 00 0B 05 32 01 00 ….2..2…..2..
2B6F:0110 6F 70 79 72 69 67 68 74-20 31 39 38 34 20 57 65 opyright 1984 We
2B6F:0120 73 74 65 72 6E 20 44 69-67 69 74 61 6C 20 43 6F stern Digital Co
2B6F:0130 72 70 6F 72 61 74 69 6F-6E CF 02 25 02 08 2A FF rporation..%..*.
2B6F:0140 50 F6 19 04 64 02 04 65-02 65 02 0B 05 64 02 00 P…d..e.e…d..
2B6F:0150 00 00 00 00 64 02 02 80-00 80 00 0B 05 64 02 00 ….d……..d..
2B6F:0160 00 00 00 00 64 02 04 65-02 80 00 0B 05 64 02 00 ….d..e…..d..
2B6F:0170 00 00 00 00 32 01 04 32-01 00 00 0B 05 32 01 00 ….2..2…..2..
nó đọc tiếp giá trị ô nhớ tiếp theo sau 55 AA là 10 nó sẽ dùng phép toán Checksum để kiểm tra 10h khối dữ liệu , mỗi khối là 512byte – theo ví dụ trên tổng cộng là 8KB ( tương đương với EPROM 2764 ) sẽ được kiểm tra Checksum . Nếu giá trị của Checksum có kết quả của 02 byte sau là 00 thì BIOS hiểu vùng đó chính là chứa Driver của thiết bị cắm thêm vào , ví dụ : giá trị là EA00h . Và chương trình Driver sẽ bắt đầu chứa mã lệnh từ EB trở đi , theo ví dụ trên .