1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÁO CÁO CUỐI KÌBỘ MÔN KIẾN TRÚC MÁY TÍNHĐỀ TÀI : TÌM HIỂU VỀ NHỮNG CÔNG NGHỆ MỚI CÓ TRÊNMAINBOARD VÀ NGÔN NGỮ LẬP TRÌNH ASSEMBLY

38 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 38
Dung lượng 3,58 MB

Cấu trúc

  • Phần 1 Tìm hiểu về mainboard (6)
    • 1.1 Mainboard là gì ? (6)
    • 1.2 Chức năng chính của mainboard (6)
    • 1.3 Mainboard hoạt động như thế nào (8)
    • 1.4 Các bộ phận cơ bản có trên mainboard (0)
  • Phần 2 Công nghệ mainboard mới có trên ROG Maximus XII hero-Z590 (0)
    • 2.1 Cấu hình chi tiết (16)
    • 2.2 Công nghệ mới có trên sản phẩm (21)
  • Phần 3 Tìm hiểu về ngôn ngữ lập trình assembly 3.1 Các khái niệm (0)
    • 3.1.1 Trình hợp dịch (27)
    • 3.1.2 Hợp ngữ (29)
    • 3.1.3 Ngôn ngữ máy (30)
    • 3.2 Ứng dụng (32)
      • 3.2.1 Trong quá khứ (32)
      • 3.2.2 Hiện nay (32)
      • 3.2.3 Các ứng dụng điển hình (33)
    • 3.3 Một số ví dụ về chương trình Assembly cơ bản (34)
      • 3.3.1 Tổng của hai số (0)
      • 3.3.2 Giai thừa của một số (35)
      • 3.3.3 Trung bình cộng của hai số (36)
      • 3.3.4 Hiệu của hai số (0)
  • Phần 4 Tài liệu tham khảo (0)

Nội dung

Tìm hiểu về mainboard

Mainboard là gì ?

Bo mạch chủ, hay còn gọi là mainboard, motherboard, Mobo hoặc Main, là một bảng mạch in quan trọng, có chức năng 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, thuật ngữ "bo mạch chủ" được sử dụng phổ biến và thường được coi là một từ danh riêng Mặc dù nhiều sản phẩm với bản mạch chính cũng có thể mang tên gọi này, để tránh nhầm lẫn, người ta thường gọi chúng là "bo mạch chủ máy tính" hoặc "main máy tính", giúp dễ dàng phân biệt hơn.

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ì chỉ có nó mới biết 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 phân nhánh, liên lạc, cũng như phân phối nguồn và tín hiệu, chúng tương tự nhau Qua sơ đồ khối, chúng ta có thể nhận thấy những điểm chung này.

 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 máy tính, bao gồm ATA (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)…

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: chipset cầu bắc và chipset cầu nam, có vai trò 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 thống nhất.

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 để đảm bảo CPU có thể nhận đủ RAM Nếu tốc độ Bus của CPU thấp hơn tốc độ của RAM, bạn sẽ lãng phí tài nguyên và không tận dụng hết sức mạnh của hệ thống 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 dòng mainboard Intel từ phiên bản I trở về sau, 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 bo mạch.

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à cách mà CPU giao tiếp với RAM Chipset trên bo mạch ADM sẽ kết nối với các thành phần khác, do đó thường 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 nhà sản xuất chipset chính, còn có các hãng khác như ATI, ULi, và VIA.

Mainboard là thành phần chịu trách nhiệm truyền dẫn thông tin và trao đổi dữ liệu với vi xử lý cùng các thiết bị khác Tốc độ truyền thông tin của mỗi mainboard có thể khác nhau, với các mức như 100MHz, 133MHz, 300MHz, và được phân chia thành 4 nhóm bus 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à thành phần quan trọng giúp kết nối mainboard với RAM, và kích thước cũng như hình dạng của cổng cắm 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 tương ứng với 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

5.Cổng cắm mở rộng 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à thành phần thiết yếu 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.

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ủ, với đầu cắm FDD thường nằm gần cổng IDE Đầu cắm này có kích thước nhỏ hơn cổng IDE và bao gồm 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 đóng kín mạch hở trên main board, giúp thực hiện các nhiệm vụ quan trọng 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ụ thiết yếu để 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 kết nối đúng dây cho từng thiết bị.

 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-ECC, Un-buffered Memory

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 3-pin Water Flow header Power related

2 x 8-pin +12V Power connector Storage 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 Miscellaneous

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 superior connectivity It includes dual Intel® 2.5 Gb Ethernet ports, four M.2 heatsinks, and a protective backplate, ensuring optimal thermal performance and durability Additionally, the motherboard boasts dual integrated Thunderbolt 4 ports, front USB 3.2 Gen 2x2 connectivity, and customizable RGB Aura Sync lighting for an enhanced gaming experience.

Socket LGA 1200 của Intel® hỗ trợ bộ vi xử lý Intel® Core™ thế hệ 11 cùng với các bộ vi xử lý Intel® Core™, Pentium® Gold và Celeron® thế hệ 10, cho phép cấu hình CPU và hệ thống làm mát tối ưu, nhằm đạt hiệu suất tối đa cho từng hệ thống.

Làm mát bằng trí tuệ nhân tạo AI của ASUS giúp cân bằng nhiệt độ và âm thanh cho mọi dàn máy chỉ với một cú click Thuật toán độc quyền này giảm thiểu tiếng ồn hệ thống 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 năng 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ảm hơn 500 triệu loại tiếng ồn xung quanh Điều này giúp đảm bảo giao tiếp rõ ràng trong các trò chơi và cuộc gọi, mang lại trải nghiệm âm thanh tối ưu cho người dùng.

Giải pháp năng lượng mạnh mẽ với tụ nguồn 14+2, đáp ứng mức tiêu thụ điện 90 Amps, sử dụng đầ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 sản xuất tại 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 lại 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 nâng cao hiệu suất làm mát cho các thiết bị lưu trữ.

 Â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 tạo mã đối tượng bằng cách 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ớ Việc sử dụng biểu danh giúp tiết kiệm thời gian và công sức trong việc tính toán và sửa đổi sau mỗi lần cải tiến ứng dụng 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 chèn trực tiếp nhóm lệnh vào vị trí macro thay vì gọi hàm.

Một số trình hợp dịch có khả năng tối ưu hóa theo tập lệnh, ví dụ như trình hợp dịch x86 từ nhiều nhà cung cấp Chúng có thể thực hiện thay thế lệnh nhảy, chẳng hạn như thay thế nhảy dài bằng nhảy ngắn hoặc tương đối Ngoài ra, một số trình hợp dịch cho kiến trúc RISC còn có khả năng sắp xếp lại hoặc chèn các 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, tương tự như các ngôn ngữ lập trình đầu tiên như Fortran, Algol, Cobol và Lisp Chúng đơn giản hơn so với trình biên dịch cho ngôn ngữ bậc cao, vì mỗi mnemonic cùng với chế độ địa chỉ và toán hạng của 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 hay 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 có đặc điểm tương tự như hợp ngữ và ngôn ngữ bậc cao, trong đó Speedcode là một ví dụ nổi bật.

Trình biên dịch đơn hỗ trợ nhiều chế độ khác nhau để xử lý các biến thể cú pháp và diễn giải ngữ nghĩa chính xác, như cú pháp FASM và TASM 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 Xuất hiện từ những năm 1950, các trình hợp ngữ đã giúp lập trình viên thoát khỏi những khó khăn khi lập trình bằng ngôn ngữ máy Hiện nay, 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 xử lý mã nguồn một lần, và bất kỳ ký hiệu nào được sử dụng trước khi được xác định sẽ cần có "errata" ở cuối mã đối tượng Điều này có nghĩa là trình liên kết hoặc trình tải sẽ phải quay lại và ghi đè lên các giữ chỗ đã được để lại cho những biểu tượng chưa 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.

Trình biên dịch cần xác định kích thước của mỗi lệnh trong các đường chuyền ban đầu để tính toán địa chỉ của các ký hiệu tiếp theo Điều này có nghĩa là 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 lập trình, "no-operation" (NOP) thường xuất hiện trong các lần vượt qua hoặc errata Khi sử dụng trình biên dịch với tối ưu hóa lỗ nhìn trộm, các địa chỉ có thể được tính toán lại giữa các lần chuyển, cho phép thay thế mã bi quan bằng mã được điều chỉnh theo khoảng cách chính xác từ mục tiêu.

Lý do chính để sử dụng bộ hợp dịch một lần là tốc độ hợp dịch, vì lần thứ hai thường yêu cầu phải tua lại và đọc lại nguồn chương trình Tuy nhiên, các máy tính hiện đại có bộ nhớ lớn hơn cho phép thực hiện tất cả các xử lý cần thiết mà không cần đọc lại Ưu điểm của trình hợp dịch nhiều lượt là giảm thiểu lỗi, giúp quá trình liên kết hoặc tải chương trình nhanh hơn.

Trong đoạn mã này, trình hợp dịch một lần chỉ có thể xác định địa chỉ của BKWD khi hợp dịch câu lệnh S2, nhưng không thể xác định địa chỉ của FWD khi hợp dịch câu lệnh nhánh S1, do đó FWD có thể không được xác định 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, giúp chúng đượ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ó mặt từ những năm 1950 với các trình hợp dịch cho dòng máy IBM 700 và từ những năm 1960 cho dòng 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 chuỗi lệnh dễ nhớ, tương ứng với các chỉ thị khả thi Khi được dịch bởi trình hợp dịch, những lệnh này có thể nạp vào bộ nhớ và thực thi Ví dụ, bộ vi xử lý x86/IA-

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 thi một mã lệnh (opcode) được đặt tên thay thế cho từ "move" Các đối số hoặc tham số của lệnh sẽ được liệt kê theo sau opcode và được ngăn cách bằng 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 có mối liên hệ 1-1 với ngôn ngữ máy, nhưng một số trình hợp dịch có thể thêm lệnh giả để cung cấp các chức năng thường dùng Ngoài ra, nhiều trình hợp dịch đa chức năng cung cấp tập macro phong phú, giúp lập trình viên và nhà sản xuất thiết bị tạo mã lệnh và dãy dữ liệu phức tạp.

Mỗi kiến trúc máy tính có ngôn ngữ máy và hợp ngữ riêng, phân biệt qua số lượng và kiểu lệnh hỗ trợ Chúng cũng khác nhau về số lượng, kích cỡ thanh ghi và cách thể hiện kiểu dữ liệu trong bộ nhớ Mặc dù hầu hết máy tính công dụng chung thực hiện cùng chức năng, nhưng cách thực hiện khác nhau, phản ánh sự khác biệt giữa các hợp ngữ tương ứng với mỗi 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 lẻ, với tập lệnh được xác định dựa trên các đặc điểm riêng của từng kiến trúc xử lý.

 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 Các lệnh điển hình này xuất hiện trong hầu hết các tập lệnh.

Lệnh gán cho phép gán giá trị hằng số cho một thanh ghi trong CPU, chuyển dữ liệu giữa vùng nhớ và thanh ghi, và đọc/ghi dữ liệu từ các thiết bị phần cứng Thao tác này giúp chuẩn bị dữ liệu cho các phép tính sau hoặc lưu trữ kết quả của các phép tính trước đó.

Lệnh tính toán cho phép thực hiện các phép toán cơ bản như cộng, trừ, nhân và chia trên các giá trị trong thanh ghi Ngoài ra, lệnh này cũng hỗ trợ các thao tác bit như "và" (AND) và "hoặc" (OR) giữa hai thanh ghi, cũng như phép phủ định bit trên một thanh ghi Bên cạnh đó, lệnh còn cho phép 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 chỉ thị 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ụ yêu cầu nhiều chỉ thị lệnh trên nhiều máy khác nhau Các lệnh phức hợp này thường thực hiện qua nhiều bước và điều khiển nhiều đơn vị chức năng khác nhau 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) hiện đang được sử dụng phổ biến, 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 cùng lúc Công nghệ này hỗ trợ 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à 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

Trong lịch sử, nhiều chương trình đã được phát triển hoàn toàn bằng hợp ngữ Sự xuất hiện của ngôn ngữ C vào những năm sau đó đã đánh dấu một bước ngoặt quan trọng trong lập trình.

Trong thập niên 1970 và đầu 1980, các hệ điều hành độc quyền chủ yếu được viết 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ữ 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 vận hành bằng hợp ngữ do hạn chế về tài nguyên, thiết bị, bộ nhớ và kiến trúc hiển thị Sự thiếu hụt các trình biên dịch bậc cao tiên tiến cũng là nguyên nhân quan trọng Các ứng dụng điển hình 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.

Trong số các ứng dụng không được khuyến khích, virus máy tính là một dạng đáng lưu ý Vào những năm '80 và đầu những năm '90, hầu hết virus máy tính được viết bằng hợp ngữ, nhờ vào khả năng giảm thiểu kích thước và can thiệp sâu vào hệ thống của ngôn ngữ này.

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 các thiết bị hoạt động độc lập mà không cần tài nguyên hay thư viện liên kết với ngôn ngữ bậc cao, đây có thể được coi 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 này trở nên 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ý

Khi một hệ thống yêu cầu viết mã thủ công để tối ưu hóa nguồn tài nguyên hạn chế, điều này ngày nay trở nên ít phổ biến hơn Nguyên nhân là do giá CPU đã giảm và hiệu suất hoạt động của CPU đã được cải thiện đáng kể.

 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 suất cao, tuy nhiên, việc này không phải lúc nào cũng mang lại hiệu quả tốt hơn so với việc sử dụng hợp ngữ Hợp ngữ vẫn được giảng dạy trong các chương trình Khoa học máy tính vì các khái niệm cơ bản như số học nhị phân, cấp phát bộ nhớ, và xử lý ngăn xếp 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 này Hơn nữa, hầu hết các máy tính hiện đại đều sử dụng các tập lệnh tương tự nhau, do đó, việc nắm vững một loại hợp ngữ có thể giúp lập trình viên hiểu các khái niệm cơ bản của các hợp ngữ khác trên các hệ thống khác nhau.

3.2.3 Các ứng dụng điển hình

Hợp ngữ mã cấp thấp thường được sử dụng cho BIOS lưu trong ROM của hệ thống, nhằm khởi tạo và kiểm tra phần cứng trước khi hệ điều hành được khởi động Sau khi quá trình khởi tạo phần cứng hoàn tất, 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 (boot loader).

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 thực hiện biên dịch, 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ữ trực tiếp 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 hiệu quả.

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

Ngày đăng: 17/12/2023, 01:52

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN