Menu
CoddyTech

Thanh ghi và bộ nhớ

Thuộc phần Kiến thức nền tảng trong hành trình Assembly của Coddy. Bài học 3 trên 45.

Bạn đã học về hai nơi có thể lưu trữ dữ liệu bên trong máy tính:

  • Thanh ghi: những ô lưu trữ nhỏ bên trong CPU
  • Bộ nhớ (RAM): một lưới lớn gồm các ô được đánh số bên ngoài CPU

Nhưng tại sao lại có hai nơi? Tại sao CPU không giữ mọi thứ trong bộ nhớ?

Đáp án là tốc độ. Các thanh ghi cực kỳ nhanh vì chúng nằm bên trong CPU. Bộ nhớ chậm hơn vì nằm bên ngoài. CPU có thể truy cập thanh ghi chỉ trong một chu kỳ, nhưng truy cập bộ nhớ mất nhiều thời gian hơn.

So sánh song song:

Đặc điểmThanh ghiBộ nhớ (RAM)
Vị tríBên trong CPUBên ngoài CPU
Tốc độCực nhanh (1 chu kỳ)Chậm hơn (nhiều chu kỳ)
Số lượng ô lưu trữRất ít (16-32 trên x86-64)Hàng triệu hoặc hàng tỷ
Kích thước mỗi ô8 byte (64 bit)1 byte
Cách truy cậpBằng tên (rax, rbx, rcx...)Bằng địa chỉ (1000, msg, buffer)
Dễ mất dữ liệu?Có (dữ liệu biến mất khi tắt nguồn)Có (dữ liệu biến mất khi tắt nguồn)

Quy tắc quan trọng nhất trong assembly:

Một chỉ thị chỉ có thể dùng tối đa một toán hạng bộ nhớ. Để kết hợp hai giá trị đều nằm trong bộ nhớ, trước tiên hãy tải một giá trị vào thanh ghi.

Thanh ghi cũng là nơi lưu các giá trị bạn đang xử lý, vì mỗi lần truy cập bộ nhớ đều chậm.

Mẫu ba bước bạn sẽ thường xuyên sử dụng:

BướcĐiều gì xảy raVí dụ
1. LOADSao chép dữ liệu từ bộ nhớ vào một thanh ghimov rax, [count]
2. WORKLàm gì đó với thanh ghiadd rax, 5
3. STORESao chép kết quả trở lại bộ nhớ (nếu cần)mov [result], rax

Điều gì xảy ra nếu bạn quên quy tắc này?

Nếu bạn cố cộng hai số đều nằm trong bộ nhớ, trình hợp dịch sẽ báo lỗi. CPU không thể thực hiện phép tính đó. Trước tiên, bạn phải nạp một trong hai số vào thanh ghi.

Tự làm thử

Bài học này không có thử thách code.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Playground Assembly