Tìm hiểu về mainboard
Mainboard là gì ?
Bo mạch chủ, hay còn gọi là mainboard, motherboard, hoặc đơn giản là Mobo, là một bảng mạch in quan trọng, chịu trách nhiệm kết nối các thiết bị thông qua các đầu cắm và dây dẫn phù hợp.
Trong ngành công nghiệp máy tính, "bo mạch chủ" là một thuật ngữ phổ biến và được coi là từ danh riêng Mặc dù nhiều sản phẩm có bản mạch chính cũng được gọi là "bo mạch chủ", để tránh nhầm lẫn, người ta thường sử dụng các cụm từ như "bo mạch chủ máy tính", "main máy tính" hoặc "PC" để dễ dàng phân biệt.
Chức năng chính của mainboard
Mainboard là một bản mạch liên kết tất cả các linh kiện và thiết bị ngoại vi thành một bộ máy thống nhất
Mainboard điều khiển tốc độ và đường đi của luồng dữ liệu giữa các thiết bị.
Điều khiển, phân phối điện áp cung cấp cho các linh kiện gắn trên Mainboard.
Mainboard là linh kiện quan trọng quyết định tuổi thọ của toàn bộ máy tính, vì nó xác định khả năng nâng cấp của hệ thống.
Sơ đồ khối của Mainboard và các linh kiện liên quan
Sơ đồ khối của các loại Mainboard có sự khác biệt, nhưng về nguyên lý hoạt động và cấu trúc liên lạc, phân phối nguồn và tín hiệu, chúng tương đồng Điều này cho thấy rằng mặc dù có sự đa dạng, các Mainboard vẫn chia sẻ những nguyên tắc cơ bản trong thiết kế và chức năng.
Chíp cầu Bắc: Trực tiếp quản lý VGA (Kể cả onboard hoặc khe cắm rời như AGP, PCIx) và RAM.
Chip cầu Nam quản lý nhiều thiết bị quan trọng trong hệ thống máy tính, bao gồm ATA cho giao tiếp ổ cứng, chip LAN, chip Audio, các cổng USB, khe PCI, chip SIO và chip BIOS.
Chip SIO: Quản lý các thiết bị như: Keyboard, mouse, FDD (ổ mềm), LPT (cổng máy in), Serial (cổng nối tiếp)…
Chip BIOS: Chứa đoạn chương trình CMOS SETUP, POST…
Mainboard hoạt động như thế nào
Giữa các thiết bị thông thường có tốc độ truyền tải rất khác nhau, còn gọi là tốc độ Bus.
Mainboard bao gồm hai chipset quan trọng là chipset cầu bắc và chipset cầu nam, có nhiệm vụ kết nối các thành phần như CPU với RAM và CPU với VGA Card.
Tốc độ Bus giữa các linh kiện khác nhau được điều chỉnh qua North Bridge và South Bridge, giúp máy tính hoạt động một cách đồng nhất và hiệu quả.
Lưu ý rằng tốc độ Bus của CPU cần phải bằng hoặc lớn hơn tốc độ Bus của RAM để CPU có thể sử dụng toàn bộ dung lượng RAM Nếu tốc độ Bus của CPU thấp hơn tốc độ Bus của RAM, bạn sẽ lãng phí tài nguyên và không khai thác hết sức mạnh của máy tính.
1.4 Các thành phần có trên mainboard
Chipset là bộ phận quan trọng làm cầu nối cho tất cả thành phần trên mainboard
Mainboard dùng CPU của hãng Intel:
Chipset gồm hai loại chính là chipset cầu bắc và chipset cầu nam
Chip cầu bắc là bộ phận kết nối với CPU từ đó kết nối với bộ nhớ chính , và kênh truyền đến chip cầu nam
Chip cầu nam có vai trò quan trọng trong việc truyền tín hiệu đến chip cầu bắc và ngược lại Đây là chip lớn thứ hai trên mainboard Đối với các dòng mainboard Intel từ phiên bản I trở đi, chip cầu bắc đã được tích hợp vào CPU, do đó không còn thấy sự hiện diện của chi tiết này trên mainboard.
Mainboard dùng CPU của hãng AMD:
Cấu trúc bo mạch chủ của bộ xử lý ADM tương tự như của Intel, nhưng điểm khác biệt chính là khả năng giao tiếp giữa CPU và RAM Chipset trên bo mạch sẽ kết nối với các thành phần khác, dẫn đến việc chỉ sử dụng một hoặc hai chip.
Chip loại hai tương tự như chipset dành cho CPU Intel, trong khi chip loại một có chức năng giống như chip nam và chip bắc Ngoài hai hãng sản xuất chipset chính, còn có các nhà sản xuất khác như ATI, ULi và VIA.
Mainboard là thành phần quan trọng trong máy tính, chịu trách nhiệm truyền dẫn thông tin và dữ liệu giữa vi xử lý và các thiết bị khác Tốc độ truyền thông tin của mỗi mainboard có thể khác nhau, thường dao động từ 100MHz, 133MHz đến 300MHz Các bus này có thể được phân chia thành 4 nhóm cơ bản.
Bus hệ thống : Truyền dữ liệu từ CPU đến bộ nhớ trên mainboard
Bus tuyến trước : tiếp nhận và truyền dữ liệu từ chip cầu bắc đến vi sử lý và ngược lại
Black side bus : là đường truyền dữ liệu giữa cache L2 và vi sử lý
Expansion bus : cho phép các thiết bị ngoại vi , các card mở rộng truy cập vào bộ nhớ một cách độc lập
CPU giao tiếp với Mainboard thông qua socket và slot tạo thành Front Side Bus
Slot: Cổng giao tiếp CPU dạng khe cắm.
Socket: là loại đế vuông hoặc chữ nhật có xăm lỗ tương ứng với các điểm chân của CPU.
Cổng cắm RAM là phần kết nối giữa mainboard và RAM, với kích thước và hình dạng phụ thuộc vào loại RAM được sử dụng Có nhiều loại module cổng cắm khác nhau cho các loại RAM khác nhau.
Chuẩn SIMM : là dạng cổng cắm RAM dùng cho mainboard đời cũ hiện nay không còn được sử dụng
Chuẩn RIMM là dạng cổng cắm có hai hàng chân chỉ dùng cho RDRAM
Chuẩn DIMM là dạng cổng cắm có hai hàng chân dùng phổ biến hiện nay
Chuẩn SoDIMM là dạng cổng cắm chỉ xài cho laptop
Cổng cắm mở rộng dùng để cắm các card mở rộng
Cổng cắm ISA : dùng để cắm các loại card mạng , card âm thanh
….Đây là cổng cũ có độ truyền dữ liệu chậm , chiếm không gian trong mainboard nên ít được sử dụng
Cổng PCI : Dùng phổ biến để cắm các loại card mạng , card âm thanh ,…
Cổng AGP : Chỉ dùng cho card màn hình
Cổng PCIe : là cổng truyền tốc độ cao được sử dụng nhiều nhất hiện 6.Kết nối nguồn nay
Kết nối nguồn là một phần thiết yếu trong việc cung cấp năng lượng cho mainboard và các linh kiện khác Các loại kết nối nguồn bao gồm nguồn chính, nguồn phụ và nguồn cho quạt CPU, đảm bảo hệ thống hoạt động ổn định và hiệu quả.
7.Cổng kết nối thiết bị lưu trữ
Giao tiếp IDE : giao tiếp IDE/ATA là chuẩn kết nối CD/DVD ,HDD với mạch điều khiển IDE trên mainboard,gồm 40 chân đầu cắm
Giao tiếp FDD là chuẩn kết nối ổ đĩa mềm trên bo mạch chủ, thường được đặt gần cổng IDE Đầu cắm FDD có kích thước nhỏ hơn so với đầu cắm IDE, với 35 chân cắm.
Giao tiếp SATA : là đầu cắm 7 chân trên mainboard để cắm các loại ổ cắm CD/DVD
Kết nối SCSI : là chuẩn cao cấp chuyên dùng cho server Có tốc độ rất cao từ 10000 vòng / phút số chân 50 hoặc 68 chân
8.ROM BIOS và Pin CMOS
ROM BIOS : là bộ nhớ máy tính là bộ nhớ máy tính chứa lệnh nhập xuất cơ bản để kiểm tra phần cứng , nạp hệ điều hành ,…
PIN CMOS : cung cấp năng lượng cho board mạch CMOS hoạt động ổn định để có thể lưu lại cấu hình , thời gian chính xác của hệ thống
Jumper là các miếng plastic nhỏ trong chất dẫn điện, có chức năng kết nối mạch hở trên main board, giúp thực hiện các nhiệm vụ như lưu trữ mật khẩu CMOS.
10.Bảng kết nối các thiết bị
Bảng kết nối là công cụ quan trọng giúp truyền tín hiệu và điều khiển đến mainboard Trên mainboard, các chân cắm được sắp xếp theo thứ tự và có ký hiệu rõ ràng, giúp người dùng dễ dàng gắn đúng dây cho từng thiết bị Bảng kết nối bao gồm nhiều thành phần thiết yếu.
Front Panel : kết nối với các công tắt mở/tắt máy khởi động lại máy , đèn tín hiệu nguồn và ổ cứng
Front USB : kết nối với cổng USB ở mặt trước
Front Audio : kết nối với cổng loa và cổng micro ở mặt trước
11.Các cổng giao tiếp ngoài :
Có tác dụng kết nối mainboard với các thiết bị bên ngoài có nhiều cổng với chức năng khác nhau như ps/2 COM , HDMI,cổng mạng LAN ,…
Công nghệ mainboard mới có trên ROG Maximus XII hero-Z590
Cấu hình chi tiết
Tên gọi ASUS Z590 ROG MAXIMUS XIII HERO
CPU hỗ trợ Intel® Socket LGA1200 for 11th Gen Intel® Core™ processors & 10th Gen Intel® Core™, Pentium® Gold and Celeron® Processors Supports
Intel® 14 nm CPU Chipset / Socket Intel® Z590 Chipset
Bộ nhớ (RAM) 4 x DIMM, Max 128GB, DDR4 5333(OC)/ 5133(OC)/ 5000(OC)/ 4800(OC)/ 4700(OC)/ 4600(OC)/ 4500(OC)/ 4400(OC)/ 4266(OC)/
4133(OC)/ 4000(OC)/ 3866(OC)/ 3733(OC)/ 3600(OC)/ 3466(OC)/ 3400(OC)/ 3333(OC)/ 3200/ 3000/ 2933/ 2800/ 2666/ 2400/ 2133 MHz Non-
Dual Channel Memory Architecture Supports Intel® Extreme Memory Profile (XMP) OptiMem III Công nghệ đa GPU NVIDIA 2-Way SLI® Technology
Intel® 11th &10th Gen Processors
- Intel® 11th Core™ processors support PCIe 4.0 x16 or x8/x8 or x8/x4 mode(s)
- Intel® 10th Core™ processors support PCIe 3.0 x16 or x8/x8 or x8/x4 mode(s) Intel® Z590 Chipset
2 x Intel® I225-V 2.5Gb Ethernet ASUS LANGuard Âm thanh
ROG SupremeFX 7.1 Surround Sound High Definition Audio CODEC ALC4082
- Impedance sense for front and rear headphone outputs
- Supports: Jack-detection, Multi-streaming, Front Panel Jack-retasking
- High quality 120 dB SNR stereo playback output and 113 dB SNR recording input
- Supports up to 32-Bit/384 kHz playback Audio Features
- Rear optical S/PDIF out port
- Audio coverFan and Cooling related
1 x USB 3.2 Gen 2x2 connector (support(s) USB Type-C®)
2 x USB 3.2 Gen 1 header(s) support(s) additional 4 USB 3.2 Gen 1 ports
2 x USB 2.0 header(s) support(s) additional 4 USB 2.0 ports
1 x Front Panel Audio header (AAFP)
- Start button Extreme Engine Digi+
- MicroFine Alloy Choke ASUS Q-Design
- VRM heatsink design ASUS EZ DIY
Phụ kiện đi kèm Cables
1 x ASUS Wi-Fi moving antennas
Hệ điều hành khuyến nghị Windows® 10 64-bit
Chuẩn kích cỡ ATX Form Factor
Công nghệ mới có trên sản phẩm
The Intel® Z590 ATX gaming motherboard features a robust 14+2 power phase design, PCIe 4.0 support, and integrated WiFi 6E (802.11ax) for enhanced connectivity It includes dual Intel® 2.5 Gb Ethernet ports, four M.2 heatsinks for optimal cooling, and a protective backplate Additionally, it offers dual integrated Thunderbolt 4 ports, front USB 3.2 Gen 2x2 connectivity, and customizable RGB Aura Sync lighting for an immersive gaming experience.
Socket LGA 1200 của Intel ® hỗ trợ bộ vi xử lý Intel ® Core™ thế hệ 11 cũng như các bộ vi xử lý Intel ® Core™, Pentium ® Gold và Celeron ® thế hệ 10 Thiết kế này giúp tối ưu hóa cấu hình CPU và hệ thống làm mát, đảm bảo hiệu suất tối đa cho từng hệ thống khi chạy ở mức giới hạn.
Làm mát bằng trí tuệ nhân tạo AI giúp cân bằng nhiệt độ và âm thanh của hệ thống chỉ với một cú nhấp chuột Thuật toán độc quyền của ASUS giảm tiếng ồn không cần thiết bằng cách theo dõi nhiệt độ CPU và tự động điều chỉnh tốc độ quạt để đạt hiệu suất tối ưu.
GameFirst VI sử dụng trí tuệ nhân tạo AI để tối ưu hóa hiệu suất kết nối mạng, phân bổ băng thông trong thời gian thực dựa trên lịch sử mở ứng dụng và các thuật toán học tập.
Tính năng khử ồn hai chiều chủ động thông minh AI sử dụng cơ sở dữ liệu deep-learning lớn, giúp loại bỏ hơn 500 triệu loại tiếng ồn xung quanh Điều này đảm bảo giao tiếp rõ ràng trong các trò chơi và cuộc gọi, nâng cao trải nghiệm người dùng.
Giải pháp năng lượng mạnh mẽ với tụ nguồn 14+2, hỗ trợ mức tiêu thụ điện lên đến 90 Amps, được trang bị đầu cắm ProCool II, cuộn cảm hợp kim MicroFine và tụ điện kim loại đen 10K chất lượng cao từ Nhật Bản.
Thiết kế tối ưu làm mát: Tản nhiệt VRM mở rộng cộng với tấm che
I/O tích hợp sẵn bằng nhôm, tấm tản có tính dẫn nhiệt cao, bốn tản nhiệt M.2 với tấm ốp bảo vệ và khu vực điều khiển tản nhiệt nước ROG
Kết nối mạng hiệu năng cao: WiFi 6E (802.11ax) tích hợp, Ethernet kép Intel® 2.5 Gb và ASUS LANGaurd.
ROG Maximus XIII Hero được trang bị Intel® Wi-Fi 6E AX210, hỗ trợ băng tần lên đến 6GHz và các kênh rộng 160MHz, mang đến tốc độ không dây tối đa lên đến 2,4Gbps.
Hỗ trợ công nghệ PCIe 4.0:
PCIe 4.0, bốn M.2, đầu nối USB 3.2 Gen 2x2, cổng USB Type-C ® kép với Thunderbolt™ 4 USB-C ®
Bo mạch chủ ASUS ROG Maximus XIII Hero Z590 được trang bị 4 khe cắm M.2 PCIe, trong đó 2 khe hỗ trợ chuẩn PCIe 4.0 Tất cả các khe cắm M.2 đều đi kèm với tấm nền M.2, giúp cải thiện hiệu suất làm mát cho các linh kiện.
Âm thanh chơi game dẫn đầu trong ngành: ROG SupremeFX
ALC4082 với ESS ® ES9018Q2C DAC cho âm thanh trung thực cao
Độc đáo cá tính riêng: Hệ thống chiếu sáng RGB Aura Sync độc quyền của ASUS, bao gồm một đầu cắm RGB và ba đầu cắm RGB addressable Gen 2
Thiết kế DIY tự ráp thân thiện: Tấm ốp che I/O gắn sẵn, BIOS
FlashBack™, Q-Code, FlexKey, Q-Connector, SafeSlot và giá đỡ card
Phần mềm nổi tiếng: Tặng kèm gói đăng ký AIDA64 Extreme sử dụng 1 năm và bảng điều khiển trực quan UEFI BIOS có MemTest86 tích hợp
Tìm hiểu về ngôn ngữ lập trình assembly 3.1 Các khái niệm
Trình hợp dịch
Trình hợp dịch hiện đại chuyển đổi lệnh hợp ngữ thành mã thực thi và phân tích các biểu danh liên quan đến vùng nhớ và thực thể khác, giúp tiết kiệm công sức tính toán và sửa đổi thủ công Việc sử dụng biểu danh là tính năng quan trọng, cho phép tham chiếu dễ dàng và hiệu quả hơn trong quá trình phát triển ứng dụng Ngoài ra, hầu hết các trình hợp dịch hỗ trợ macro, cho phép thay thế nhóm lệnh bằng một định danh ngắn gọn, giúp tăng tốc độ dịch bằng cách chèn trực tiếp lệnh vào vị trí macro.
Một số trình hợp dịch có khả năng tối ưu hóa theo tập lệnh, như trình hợp dịch x86 từ nhiều nhà cung cấp khác nhau Chúng có thể thay thế lệnh nhảy dài bằng nhảy ngắn hoặc tương đối trong quá trình biên dịch Ngoài ra, một số trình hợp dịch cho kiến trúc RISC có thể thực hiện sắp xếp lại hoặc chèn lệnh, giúp tối ưu hóa lịch trình tập lệnh để khai thác hiệu quả kênh chuyền dữ liệu của CPU.
Các trình hợp dịch đã xuất hiện từ những năm 1950, cùng với các ngôn ngữ lập trình ban đầu như Fortran, Algol, Cobol và Lisp, vì chúng đơn giản hơn nhiều so với trình biên dịch cho các ngôn ngữ bậc cao Mỗi mnemonic, cùng với các chế độ địa chỉ và toán hạng của một lệnh, được dịch trực tiếp thành các biểu diễn số mà không cần nhiều bối cảnh hoặc phân tích Ngoài ra, còn có một số lớp dịch giả và trình tạo mã bán tự động, như Speedcode, có các thuộc tính tương tự như hợp ngữ và ngôn ngữ bậc cao.
Trình biên dịch đơn có khả năng hỗ trợ nhiều chế độ khác nhau, giúp xử lý các biến thể cú pháp và diễn giải ngữ nghĩa chính xác, đặc biệt trong lập trình hợp ngữ x86 So với các ngôn ngữ cấp cao, việc tạo ra trình hợp ngữ dễ dàng hơn, và những trình hợp ngữ đầu tiên xuất hiện từ những năm 1950 đã giúp lập trình viên giảm bớt khó khăn khi làm việc với ngôn ngữ máy Các trình hợp ngữ hiện đại, đặc biệt cho các dòng chip RISC như MIPS, Sun SPARC và HP PA-RISC, thường tối ưu hóa việc sắp xếp và đồng bộ các chỉ thị lệnh để khai thác hiệu quả các kênh chuyền dữ liệu của CPU.
Có hai loại trình hợp dịch dựa trên số lần truyền qua nguồn cần thiết (số lần trình biên dịch đọc nguồn) để tạo tệp đối tượng.
Trình hợp dịch thực hiện việc biên dịch mã nguồn chỉ một lần Nếu có bất kỳ ký hiệu nào được sử dụng trước khi được xác định, sẽ cần phải có phần "errata" ở cuối mã đối tượng, hoặc ít nhất là không sớm hơn thời điểm mà ký hiệu đó được xác định Điều này giúp thông báo cho trình liên kết hoặc trình tải "quay lại" và ghi đè lên các vị trí đã để lại cho những ký hiệu chưa được xác định.
Trình hợp dịch nhiều lần tạo ra một bảng chứa tất cả các ký hiệu và giá trị của chúng trong các lượt đầu tiên Sau đó, bảng này được sử dụng trong các lần truyền tiếp theo để tạo mã hiệu quả hơn.
Trong quá trình biên dịch, trình biên dịch cần xác định kích thước của từng lệnh trên các đường chuyền ban đầu để tính toán địa chỉ của các ký hiệu tiếp theo Nếu kích thước của một hoạt động liên quan đến toán hạng được xác định sau phụ thuộc vào loại hoặc khoảng cách của toán hạng, trình biên dịch sẽ đưa ra ước tính bi quan khi lần đầu gặp thao tác và có thể cần đệm bằng một hoặc nhiều lệnh.
Trong quá trình biên dịch với tối ưu hóa, "no-operation" có thể xuất hiện trong các lần vượt qua hoặc errata Các địa chỉ được tính toán lại giữa các lần chuyển giúp thay thế mã bi quan bằng mã điều chỉnh theo khoảng cách chính xác từ mục tiêu.
Sử dụng bộ hợp dịch một lần ban đầu chủ yếu nhằm tăng tốc độ hợp dịch, vì lần thứ hai thường yêu cầu phải tua lại nguồn chương trình trên băng hoặc đọc lại chuỗi bìa đục lỗ Tuy nhiên, các máy tính hiện đại với bộ nhớ lớn hơn, đặc biệt là lưu trữ đĩa, có khả năng thực hiện tất cả các xử lý cần thiết mà không cần đọc lại Một trong những lợi ích của trình hợp dịch nhiều lượt là việc loại bỏ lỗi, giúp quá trình liên kết hoặc tải diễn ra mượt mà hơn.
Trong đoạn mã này, trình hợp dịch một lần chỉ xác định được địa chỉ BKWD khi hợp dịch câu lệnh S2, trong khi địa chỉ FWD không thể xác định khi hợp dịch câu lệnh nhánh S1 Ngược lại, trình hợp dịch hai lần sẽ xác định cả hai địa chỉ trong lần đầu tiên, do đó chúng sẽ được biết khi tạo mã trong lần thứ hai.
Trình hợp dịch bậc cao
Nhiều trình hợp dịch bậc cao còn hỗ trợ khả năng ngôn ngữ trừu tượng như:
Khai báo thủ tục/hàm bậc cao
Các cấu trúc điều khiển nâng cao (IF/THEN/ELSE, SWITCH)
Các khai báo hàm cấp cao
Các kiểu dữ liệu trừu tượng bậc cao bao gồm các cấu trúc/bản ghi, unions, lớp, và sets
Xử lý macro phức tạp đã có sẵn từ những năm 1950 trên các trình hợp dịch cho dòng máy IBM 700 và từ những năm 1960 cho IBM/360, cùng với nhiều thiết bị khác.
Các tính năng lập trình hướng đối tượng như các lớp, đối tượng, trừu tượng hóa, đa hình và kế thừa [11]
Tham khảo phần Thiết kế ngôn ngữ bên dưới để rõ hơn.
Hợp ngữ
Một chương trình viết bằng hợp ngữ bao gồm một chuỗi các lệnh
(instructions) dễ nhớ tương ứng với một luồng các chỉ thị khả thi
Executable là những tập tin có thể được nạp vào bộ nhớ và thực thi khi được dịch bởi trình hợp dịch Một ví dụ điển hình là bộ vi xử lý x86/IA-64, cho phép thực hiện các lệnh này một cách hiệu quả.
32 có thể thực hiện được chỉ thị nhị phân sau (thể hiện ở dạng ngôn ngữ máy):
Lệnh 10110000 01100001 (thập lục phân: 0xb061) thực hiện chức năng "move", với các đối/ tham số theo sau và được ngăn cách bởi dấu phảy ",".
Trình hợp dịch chuyển đổi hợp ngữ sang ngôn ngữ máy, trong khi trình phân dịch thực hiện ngược lại Các chỉ thị hợp ngữ thường tương ứng 1-1 với chỉ thị ngôn ngữ máy, nhưng trình hợp dịch có thể thêm các lệnh giả để cung cấp chức năng thường dùng Nhiều trình hợp dịch đa chức năng còn cung cấp tập macro phong phú, giúp nhà sản xuất thiết bị và lập trình viên tạo mã lệnh và dữ liệu phức tạp.
Mỗi kiến trúc máy tính sở hữu ngôn ngữ máy và hợp ngữ riêng, được phân biệt bởi số lượng và kiểu lệnh hỗ trợ Sự khác biệt còn thể hiện qua số lượng, kích cỡ thanh ghi và cách biểu diễn kiểu dữ liệu trong bộ nhớ Mặc dù các máy tính công dụng chung thực hiện chức năng tương tự, nhưng phương thức thực hiện lại khác nhau, phản ánh sự đa dạng trong các hợp ngữ tương ứng với từng kiểu máy tính.
Ngôn ngữ máy
Ngôn ngữ máy được hình thành từ các chỉ thị và lệnh riêng biệt, với mỗi kiến trúc xử lý có những tập lệnh đặc trưng riêng.
Các thanh ghi dùng cho tính toán số học
Cách bố trí bộ nhớ và tính địa chỉ
Cách điều khiển rẽ nhánh
Các kiểu đánh địa chỉ đặc thù dùng để giải các toán hạng
Nhiều lệnh phức hợp được hình thành từ việc kết hợp các chỉ thị đơn giản, tuân theo nguyên lý máy tính Von Neumann, với quy trình thực thi tuần tự và phân nhánh theo lệnh Các lệnh điển hình thường xuất hiện trong hầu hết các tập lệnh bao gồm.
Lệnh gán là một thao tác quan trọng trong lập trình, cho phép gán giá trị hằng số cho một thanh ghi trong CPU, đồng thời chuyển dữ liệu giữa các vùng nhớ và thanh ghi Thao tác này không chỉ chuẩn bị dữ liệu cho các phép toán sau mà còn lưu trữ kết quả từ các phép toán trước đó Ngoài ra, lệnh gán còn được sử dụng để đọc và ghi dữ liệu từ hoặc vào các thiết bị phần cứng.
Lệnh tính toán thực hiện các phép thao tác bit như "và" (AND) và "hoặc" (OR) giữa hai thanh ghi, hoặc phép phủ định bit trên một thanh ghi Ngoài ra, lệnh này cũng so sánh các giá trị trong hai thanh ghi để xác định xem một giá trị có nhỏ hơn, lớn hơn hoặc bằng nhau với giá trị còn lại hay không.
Lệnh điều khiển rẽ nhánh cho phép nhảy tới một vị trí trong chương trình để thực thi các lệnh tại đó Nó có thể chuyển hướng đến một vị trí khác nếu một điều kiện nhất định được thỏa mãn Ngoài ra, lệnh này cũng có khả năng nhảy tới một vị trí nhưng vẫn lưu lại vị trí của lệnh tiếp theo, thường được sử dụng trong các lời gọi hàm.
Một số máy tính tích hợp các lệnh phức hợp trong tập lệnh của chúng, cho phép thực hiện các tác vụ phức tạp cần nhiều chỉ thị lệnh trên nhiều máy khác nhau Những lệnh này thực hiện qua nhiều bước và điều khiển nhiều đơn vị chức năng Dưới đây là danh sách minh họa một số lệnh phức hợp.
Lưu lại nhiều thanh ghi trên ngăn xếp chỉ một lần
Di chuyển các khối vùng nhớ lớn
Các phép toán dấu phảy động phức tạp (sine, cosine, square root, etc.)
Các lệnh ALU liên kết với một toán hạng từ bộ nhớ thay vì với một thanh ghi
Các lệnh SIMD (Single Instruction Multiple Data) là một kiểu lệnh phức hợp phổ biến hiện nay, cho phép thực hiện cùng một phép toán số học trên nhiều phần dữ liệu đồng thời Việc sử dụng các lệnh vector này giúp xử lý song song các thuật toán liên quan đến âm thanh, hình ảnh và video một cách hiệu quả Nhiều tập lệnh SIMD đã được tích hợp vào CPU và được thương mại hóa dưới các thương hiệu như MMX, SSE, SSE2 và SSE3.
SSE4 (Intel), 3DNow! (AMD), AltiVec (IBM), tm3260 và tm5250 (Nexper ia - Philips) …
Ứng dụng
Trước khi ngôn ngữ C ra đời vào những năm 1970, nhiều chương trình đã được phát triển hoàn toàn bằng hợp ngữ Lịch sử lập trình cho thấy sự phổ biến của hợp ngữ trong giai đoạn này.
Trong giai đoạn 1970 đến đầu thập niên 1980, các hệ điều hành độc quyền chủ yếu được phát triển bằng hợp ngữ, cùng với nhiều ứng dụng thương mại cho máy tính lớn của IBM Mặc dù ngôn ngữ lập trình COBOL và FORTRAN đã dần thay thế hợp ngữ, nhiều tổ chức vẫn duy trì kiến trúc ứng dụng kiểu hợp ngữ trong suốt thập niên 1980 Các máy vi tính đầu tiên chủ yếu hoạt động bằng hợp ngữ do hạn chế về tài nguyên, thiết bị và bộ nhớ, cùng với sự thiếu hụt các trình biên dịch bậc cao phù hợp Những ứng dụng lớn tiêu biểu được viết bằng hợp ngữ bao gồm hệ điều hành CP/M, MS-DOS, bảng tính Lotus-123 trên máy IBM-PC đời đầu và nhiều trò chơi phổ biến cho máy Commodore.
64 Thậm chí tới những năm 1990, nhiều các trò chơi video giải trí vẫn được viết bằng hợp ngữ, bao gồm các trò chơi cho máy Mega
Drive/Genesis và Super Nintendo Entertainment System.
Ngoài ra, một loại "ứng dụng" không được khuyến khích là virus máy tính Vào những năm '80 và đầu '90, hầu hết virus máy tính được lập trình bằng hợp ngữ, nhằm giảm thiểu kích thước và tăng khả năng can thiệp sâu vào hệ thống.
3.2.2 Hiện nay Đã từng có nhiều tranh luận về tiện dụng và hiệu năng của hợp ngữ so với các ngôn ngữ bậc cao, tuy ngày nay người ta ít chú ý tới điều đó nữa Hợp ngữ vẫn đóng vai trò quan trọng trong một số nhu cầu cần thiết Nói chung, các trình biên dịch hiện đại ngày nay đều có khả năng biên dịch các ngôn ngữ bậc cao thành mã mà có thể thực thi nhanh ít nhất bằng hợp ngữ Độ phức tạp của các bộ vi xử lý hiện đại cho phép tối ưu mã một cách hiệu quả, hơn nữa, phần lớn thời gian hoạt động của CPU rơi vào trạng thái rỗi bởi nó phải đợi kết quả từ cá các tính toán "thắt cổ chai" như các thao tác I/O và truy xuất bộ nhớ Vì thế tốc độ thực thi mã thô (raw code) trở thành vấn đề ít quan trọng đối với hầu hết lập trình viên, sự xuất hiện các ngôn ngữ thông dịch (interpreted language) ngày càng nhiều là một minh chứng cho điều này.
Ngày nay có một số ít tình huống mà các chuyên gia thực sự muốn dùng hợp ngữ cho công việc của họ là:
Khi thiết bị hoạt động độc lập mà không cần sử dụng tài nguyên hay thư viện liên kết với ngôn ngữ bậc cao, đây là trường hợp phổ biến nhất trong lĩnh vực công nghệ.
Khi cần giao tiếp trực tiếp với phần cứng như trình điều khiển thiết bị, hoặc khi muốn sử dụng các chỉ thị vi xử lý mà trình biên dịch không khai thác, việc can thiệp vào mã nguồn là cần thiết.
Khi cần tối ưu khắt khe như các thuật toán có dùng vòng lặp tiêu tốn nhiều năng lực xử lý
Ngày nay, việc viết mã thủ công để tận dụng nguồn tài nguyên hạn hẹp trở nên ít phổ biến hơn, nhờ vào sự giảm giá của CPU và sự cải thiện đáng kể về hiệu suất hoạt động của chúng.
Khi các ngôn ngữ bậc cao không thể áp dụng được trên một CPU mới hoặc CPU chuyên dụng.
Ngày nay, lập trình viên có thể lựa chọn ngôn ngữ lập trình cấp thấp như C để phát triển ứng dụng hiệu năng cao, tuy nhiên, ứng dụng viết bằng C không nhất thiết hiệu quả hơn ứng dụng viết bằng hợp ngữ Hợp ngữ vẫn được giảng dạy trong nhiều chương trình Khoa học máy tính vì các khái niệm nền tảng như số học nhị phân, cấp phát bộ nhớ, và xử lý ngăn xếp vẫn rất quan trọng Việc nghiên cứu hợp ngữ giúp hiểu rõ hơn về các khái niệm cơ bản như mã hóa tập ký tự, xử lý ngắt và thiết kế trình dịch May mắn thay, nhiều máy tính hiện đại có các tập lệnh tương tự nhau, vì vậy việc nắm vững một loại hợp ngữ cũng đủ để hiểu các khái niệm cơ bản trên các hệ thống khác.
3.2.3 Các ứng dụng điển hình
Hợp ngữ mã cấp thấp được sử dụng cho BIOS lưu trong ROM, giúp khởi tạo và kiểm tra phần cứng hệ thống trước khi khởi động hệ điều hành Sau khi hoàn tất quá trình khởi tạo phần cứng, quyền điều khiển sẽ được chuyển giao cho các mã thực thi khác, thường được viết bằng ngôn ngữ bậc cao Điều này cũng áp dụng cho hầu hết các trình khởi động.
Nhiều trình biên dịch chuyển đổi ngôn ngữ bậc cao thành hợp ngữ trước khi biên dịch thực sự, giúp kiểm tra mã để gỡ rối và tối ưu hóa Các ngôn ngữ cấp thấp như C cung cấp cú pháp đặc biệt cho phép nhúng hợp ngữ vào mã nguồn Chương trình như Nhân Linux tận dụng tính năng này để tạo ra các tầng trừu tượng.
Một số ví dụ về chương trình Assembly cơ bản
3.3.2 Giai thừa của một số
3.3.3 Trung bình cộng của hai số
3.3.4 Chuyển đổi một số thành dạng nhị phân