Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
Để tính địa chỉ vật lý của ô nhớ, ta cần biết cách chuyển đổi địa chỉ logic sang địa chỉ vật lý. Công thức chuyển đổi như sau:
Địa chỉ vật lý = (Đoạn * 10h) + Địa chỉ offset
Trong đó:
+ Đoạn: là số hiệu của đoạn bộ nhớ, có kích thước là 64KB, được chỉ định bởi thanh ghi CS (Code Segment Register).
+ Địa chỉ offset: là địa chỉ của ô nhớ trong đoạn bộ nhớ đó, được chỉ định bởi thanh ghi IP (Instruction Pointer Register) hoặc thanh ghi trong lệnh truy cập bộ nhớ.
Áp dụng công thức trên với địa chỉ logic 9876:ABCD, ta có:
+ Đoạn: 9876h
+ Địa chỉ offset: ABCDh
Địa chỉ vật lý = (9876h * 10h) + ABCDh = 9876ABCDh
Vậy địa chỉ vật lý của ô nhớ 9876:ABCD là 9876ABCDh.
Để tìm 5 cặp địa chỉ logic tương ứng, ta có thể sử dụng công thức chuyển đổi địa chỉ vật lý sang địa chỉ logic như sau:
Đoạn = Địa chỉ vật lý div 10h
Địa chỉ offset = Địa chỉ vật lý mod 10h
Áp dụng công thức trên với 5 địa chỉ vật lý khác nhau, ta có các cặp địa chỉ logic tương ứng như sau:
+ Địa chỉ vật lý: 12345678h -> Địa chỉ logic: 1234:5678
+ Địa chỉ vật lý: 9ABCDEF0h -> Địa chỉ logic: 9ABC:DEF0
+ Địa chỉ vật lý: 11223344h -> Địa chỉ logic: 1122:3344
+ Địa chỉ vật lý: FFFFFFFFh -> Địa chỉ logic: FFFF:FFFF
+ Địa chỉ vật lý: 5555AAAAh -> Địa chỉ logic: 5555:AAAA
Lưu ý: Địa chỉ vật lý là số nguyên dương có 8 chữ số hexa, còn địa chỉ logic là cặp số hexa, mỗi số có 4 chữ số.
Trong kiến trúc CPU x86, thanh ghi cờ FLAGS được sử dụng để lưu trữ trạng thái của CPU và kết quả của các phép tính. Thanh ghi này có 16 bit, trong đó các bit từ 0 đến 11 và bit 14 được sử dụng để lưu trữ các bit cờ, các bit còn lại không được sử dụng.
Dưới đây là ý nghĩa của từng bit cờ trong thanh ghi FLAGS:
1. Carry Flag (CF): Bit này được sử dụng để lưu trữ trạng thái dư ra của phép tính toán, ví dụ như phép cộng hoặc phép trừ. Nếu kết quả của phép tính toán vượt quá kích thước của thanh ghi thì bit CF sẽ được thiết lập thành 1.
2. Parity Flag (PF): Bit này được sử dụng để lưu trữ trạng thái của kết quả phép tính, xác định xem kết quả có chẵn hay lẻ. Nếu kết quả là số chẵn thì bit này sẽ được thiết lập thành 1.
3. Auxiliary Carry Flag (AF): Bit này được sử dụng để lưu trữ trạng thái của dấu nhớ ở bit thấp nhất (bit 4) của phép tính toán.
4. Zero Flag (ZF): Bit này được sử dụng để lưu trữ trạng thái của kết quả phép tính, xác định xem kết quả có bằng 0 hay không. Nếu kết quả là 0 thì bit này sẽ được thiết lập thành 1.
5. Sign Flag (SF): Bit này được sử dụng để lưu trữ trạng thái của kết quả phép tính, xác định xem kết quả có là số âm hay không. Nếu kết quả là số âm thì bit này sẽ được thiết lập thành 1.
6. Trap Flag (TF): Bit này được sử dụng để bật chế độ debug trong CPU, cho phép các trình debug có thể giám sát các phép tính.
7. Interrupt Flag (IF): Bit này được sử dụng để bật hoặc tắt chế độ ngắt (interrupt) của CPU. Khi được thiết lập thành 1, CPU sẽ cho phép các tín hiệu ngắt được phép thực hiện.
8. Direction Flag (DF): Bit này được sử dụng để xác định hướng di chuyển của các phép tính chuỗi (string), ví dụ như chuỗi ký tự.
9. Overflow Flag (OF): Bit này được sử dụng để lưu trữ trạng thái của tràn số (overflow) trong phép tính toán
- Thanh ghi Segment Registers (CS, DS, ES, SS): Độ dài của các thanh ghi này là 16 bit. Các thanh ghi này được sử dụng để chỉ định các đoạn (segment) của bộ nhớ được sử dụng để lưu trữ các dữ liệu và chương trình.
- Thanh ghi Extended Registers (EIP, EBP, ESP, EBX, ESI, EDI): Độ dài của các thanh ghi này là 32 bit. Các thanh ghi này là các phiên bản mở rộng của các thanh ghi trên và được sử dụng trong các kiến trúc x86 mới hơn.
Trong kiến trúc CPU x86, có 3 nhóm thanh ghi chính:
- Nhóm thanh ghi Điều khiển (Control Registers):
+ Thanh ghi Instruction Pointer (IP) chỉ định vị trí của lệnh tiếp theo trong bộ nhớ.
+ Thanh ghi Flags (FLAGS) chứa các bit cờ để lưu trữ trạng thái của CPU sau mỗi lệnh thực hiện.
+ Thanh ghi Segment Registers (CS, DS, SS, ES, FS, GS) chứa thông tin về các đoạn bộ nhớ (segments) trong bộ nhớ.
- Nhóm thanh ghi Trạng thái (Status Registers):
+ Thanh ghi Flags (FLAGS) chứa các bit cờ để lưu trữ trạng thái của CPU sau mỗi lệnh thực hiện.
- Nhóm thanh ghi Dữ liệu (Data Registers):
+ Thanh ghi Accumulator (AX) có thể được sử dụng để thực hiện các phép tính toán số học và logic.
+ Thanh ghi Base Register (BX) có thể được sử dụng như một con trỏ cơ sở (base pointer) cho các khối dữ liệu trong bộ nhớ.
+ Thanh ghi Counter Register (CX) có thể được sử dụng để lặp lại các lệnh hoặc để đếm các sự kiện.
+ Thanh ghi Data Register (DX) có thể được sử dụng để lưu trữ dữ liệu đầu vào hoặc đầu ra của các hoạt động đọc/ghi vào các thiết bị ngoại vi.
+ Thanh ghi Stack Pointer (SP) được sử dụng để lưu trữ địa chỉ của đỉnh (top) của bộ đệm ngăn xếp.
+ Thanh ghi Base Pointer (BP) được sử dụng để lưu trữ địa chỉ cơ sở của một khối dữ liệu trên bộ đệm ngăn xếp (stack).
Các thanh ghi trong nhóm thanh ghi Điều khiển và Trạng thái được sử dụng để điều khiển luồng xử lý của CPU và lưu trữ các thông tin quan trọng về trạng thái của CPU, trong khi các thanh ghi trong nhóm thanh ghi Dữ liệu được sử dụng để lưu trữ và xử lý các dữ liệu và địa chỉ trong bộ nhớ và bộ đệm ngăn xếp.
Trong kiến trúc CPU x86, có một số thanh ghi đa năng có thể được sử dụng cho nhiều mục đích khác nhau. Các thanh ghi đa năng bao gồm:
1. Thanh ghi Accumulator (AX): Độ dài của thanh ghi này là 16 bit. Thanh ghi AX có thể được sử dụng để thực hiện các phép tính toán số học và logic.
2. Thanh ghi Base Register (BX): Độ dài của thanh ghi này là 16 bit. Thanh ghi BX có thể được sử dụng như một con trỏ cơ sở (base pointer) cho các khối dữ liệu trong bộ nhớ.
3. Thanh ghi Counter Register (CX): Độ dài của thanh ghi này là 16 bit. Thanh ghi CX có thể được sử dụng để lặp lại các lệnh hoặc để đếm các sự kiện.
4. Thanh ghi Data Register (DX): Độ dài của thanh ghi này là 16 bit. Thanh ghi DX có thể được sử dụng để lưu trữ dữ liệu đầu vào hoặc đầu ra của các hoạt động đọc/ghi vào các thiết bị ngoại vi.
5. Thanh ghi Stack Pointer (SP): Độ dài của thanh ghi này là 16 bit. Thanh ghi SP được sử dụng để lưu trữ địa chỉ của đỉnh (top) của bộ đệm ngăn xếp.
6. Thanh ghi Base Pointer (BP): Độ dài của thanh ghi này là 16 bit. Thanh ghi BP được sử dụng để lưu trữ địa chỉ cơ sở của một khối dữ liệu trên bộ đệm ngăn xếp (stack).
7. Thanh ghi Flags (FLAGS): Độ dài của thanh ghi này là 16 bit. Thanh ghi FLAGS chứa các bit cờ để lưu trữ trạng thái của CPU sau mỗi lệnh thực hiện.
3. HOLD (Hold Request): Được sử dụng bởi các thiết bị ngoại vi để giữ CPU và giảm tải các thao tác xử lý. Khi một tín hiệu HOLD được kích hoạt, CPU đáp ứng bằng cách dừng các hoạt động hiện tại và truyền điều khiển cho thiết bị ngoại vi.
4. HLDA (Hold Acknowledge): Được sử dụng bởi CPU để xác nhận rằng nó đã dừng hoạt động của mình và truyền điều khiển cho thiết bị ngoại vi. Sau khi nhận được tín hiệu HLDA, thiết bị ngoại vi có thể truy cập các tài nguyên của hệ thống.
Bộ tạo địa chỉ vật lý (Physical Address Generation Unit), bộ cộng offset (Adder), Central Unit (CU), Arithmetic Logic Unit (ALU), hàng đợi lệnh (Instruction Queue) và hàng đợi lệnh đã giải mã (Decoded Instruction Queue) đều thuộc đơn vị thực hiện lệnh (Execution Unit) của CPU 80286.
AX, BX, CX, DX, SI, DI, BP, SP, IP, FLAG, CS, DS, SS, ES đều là các thanh ghi trong kiến trúc CPU x86 và được sử dụng trong CPU 80286. Cụ thể:
+ AX, BX, CX, DX là các thanh ghi dữ liệu (Data Registers) có độ dài 16 bit.
+ SI, DI, BP, SP là các thanh ghi con trỏ (Pointer Registers) có độ dài 16 bit, được sử dụng để trỏ tới địa chỉ trong bộ nhớ.
+ IP là thanh ghi chỉ số (Instruction Pointer) có độ dài 16 bit, lưu trữ địa chỉ của lệnh đang được thực thi.
+ FLAG là thanh ghi cờ (Flags Register) có độ dài 16 bit, lưu trữ các bit cờ biểu thị trạng thái của CPU sau khi thực hiện một lệnh.
+ CS, DS, SS, ES là các thanh ghi đoạn (Segment Registers) có độ dài 16 bit, được sử dụng để chỉ định địa chỉ bắt đầu của các vùng bộ nhớ được phân vùng thành các đoạn khác nhau.
Tất cả các thanh ghi này đều thuộc đơn vị thực hiện lệnh (Execution Unit) của CPU 80286.
Cấu hình bên trong CPU 80286 bao gồm các đơn vị chính sau đây:
- Đơn vị lấy lệnh (Instruction Fetch Unit): có nhiệm vụ lấy lệnh từ bộ nhớ và đưa vào bộ nhớ đệm lệnh (Instruction Queue).
- Đơn vị giải mã (Instruction Decode Unit): giải mã lệnh trong bộ nhớ đệm lệnh và chuẩn bị các thanh ghi và bộ đếm để thực thi lệnh.
- Đơn vị thực hiện lệnh (Execution Unit): thực hiện các phép tính và truy cập dữ liệu.
- Đơn vị điều khiển (Control Unit): điều khiển quá trình thực thi lệnh bằng cách quản lý các đơn vị khác và thực hiện các phép tính logic như nhảy (jump), lặp lại (loop) và gọi (call).
CMOS (Complementary Metal-Oxide-Semiconductor) là một loại kỹ thuật sản xuất vi mạch, nó cung cấp sự đáng tin cậy và tiết kiệm năng lượng hơn so với các loại vi mạch khác. Trong máy tính, CMOS thường được sử dụng để tạo ra bộ nhớ cmos, bộ nhớ này sử dụng pin CMOS để lưu trữ thông tin quan trọng về cấu hình hệ thống và các thiết lập BIOS.
Chức năng:
DMAC (Direct Memory Access Controller) là một thành phần của máy tính được sử dụng để chuyển dữ liệu giữa các thiết bị và bộ nhớ một cách nhanh chóng và hiệu quả hơn bằng cách tránh việc CPU phải thực hiện các tác vụ này.
DMAC được thiết kế để quản lý quá trình truyền dữ liệu giữa bộ nhớ và các thiết bị I/O (Input/Output) như card mạng, ổ đĩa, bàn phím, chuột, cổng USB, v.v. DMAC cho phép chuyển dữ liệu giữa các thiết bị và bộ nhớ một cách độc lập mà không cần CPU can thiệp, do đó giảm thiểu tải cho CPU và tăng tốc độ truyền dữ liệu.