Thanh ghi (Registers)

  • Hoạt động xử lý chủ yếu liên quan đến xử lý dữ liệu. Những dữ liệu này có thể được lưu trữ trong bộ nhớ và được truy cập từ đó. Tuy nhiên, việc đọc và lưu trữ dữ liệu vào bộ nhớ lại làm chậm tiến trình vì nó phải gửi yêu cầu dữ liệu thông qua bus điều khiển.
  • Để tăng tốc độ hoạt động xử lý, các bộ vi xử lý có chứa 1 vài bộ nhớ trong để lưu trữ gọi là thanh ghi. Số lượng giới hạn thanh ghi được xây dựng trong con chip vi xử lý.
  • Có 10 thanh ghi 32-bit và 6 thanh ghi 16-bit trong kiến trúc IA-32. Những thanh ghi này được nhóm thành 3 loại:

    1. Những thanh ghi đa năng (General registers)
    2. Những thanh ghi điều khiển (Control registers)
    3. Những thanh ghi phân đoạn (Segment registers)
  • Những thanh ghi đa năng lại được chia thành các nhóm:

    1. Thanh ghi dữ liêu
    2. Thanh ghi con trỏ
    3. Thanh ghi chỉ số (Index)

Thanh ghi dữ liệu

  • Có 4 thanh ghi dữ liệu 32-bit được dùng cho số học,logic,và hoạt động khác. Những thanh ghi này được dùng theo 3 cách.
    1. Ghi dữ liệu: EAX,EBX,ECX,EDX.
    2. Nửa thấp của các thanh ghi 32-bit có thể dùng như thanh ghi 16-bit: AX,BX,CX,DX và nó có thể dùng như thanh ghi 8-bit: AH,AL,BH,BL,CH,CL,DH,DL.

  • AX là bộ tích luỹ đầu tiên, nó được dùng trong nhập xuất và hầu hết các instruction số học. Ví dụ trong phép nhân, 1 toán hạng được lưu vào EAX hoặc AX hoặc AL tuỳ theo kích cỡ của toán hạng đó.
  • BX là thanh ghi cơ sở (base register) được dùng để đánh số địa chỉ
  • CX là thanh ghi đếm (count register) được dùng như để đếm số vòng lặp
  • DX là thanh ghi dữ liệu, nó cũng được sử dụng trong hoạt động nhập xuất tương tự như AX.

    Thanh ghi con trỏ

  • Những thanh ghi con trỏ 32-bit như EIP,ESP,EBP tương ứng 16-bit vị trí phải IP,SP,BP.
    1. Instruction Pointer (IP) - là những thanh ghi 16-bit lưu trữ địa chỉ offset của instruction tiếp theo để thực thi. IP cùng với thanh ghi CS đưa ra địa chỉ chính xác của instruction hiện tại trong code segment.
    2. Stack pointer (SP) - Những thanh ghi 16-bit cung cấp giá trị offset nằm trong ngăn xếp chương trình ( program stack). SP cùng với thanh ghi SS tham chiếu tới vị trí hiện tại của dữ liệu hoặc địa chỉ nằm trong program stack.
    3. Base Pointer (BP) - Những thanh ghi 16-bit BP chủ yếu hỗ trợ trong việc tham chiếu biến tham số truyền tới chương trình con. Địa chỉ trong thanh ghi SS kết hợp với với thanh ghi DI và SI cho địa chỉ cụ thể

Thanh ghi chỉ số

  • Những thanh ghi 32-bit ESI và EDI tương ứng thanh ghi 16-bit SI và DI được dùng để đánh số địa chỉ và đôi lúc dùng trong phép cộng và trừ.
    1. Source Index (SI) - được dùng đánh số của nguồn cho chuỗi operations.
    2. Destination Index (DI) - ngược lại với source

Thanh ghi con trỏ

  • Thanh ghi 32-bit con trỏ và 32-bit cờ (flags) kết hợp được coi là thanh ghi điểu khiển.
  • Nhiểu instructions so sánh, tính toán số học, thay đổi trạng thái của cờ, kiểm tra điều kiện giá trị trạng thái của cờ để có được dòng điểu khiển (control flow) đến vị trí khác.
  • Những bit flag thông thường là:
    1. Overflow Flag (OF) - nó cho thấy sự tràn bit cao ngoài cùng bên trái của dữ liệu sau 1 tín hiệu của thuật toán.
    2. Direction Flag (DF) - nó xác định hướng trái hay phải cho việc di chuyển hoặc so sánh chuỗi dữ liệu. Khi giá trị DF là 0, chuỗi hoạt động lấy từ trái qua phải và ngược lại khi DF là 1.
    3. Interrupt Flag (IF) - nó cho phép thiết lập hoạt động của bộ xử lý trong chế độ đơn bước (single-step mode). Chương trình Debug dùng thiết lập cờ mật thám (trap flag). Vì thế có thể từng bước thực thi tại 1 thời điểm.
    4. Sign Flag (SF) - nó show tín hiệu kết quả của 1 phép toán số học. Cớ này được thiết lập tuỳ theo dấu hiệu của data item theo sau phép toán số học. Dấu hiệu được chỉ thị bới bit cao ngoài cùng bên trái. Kết quả khẳng định thiết lập giá trị SF là 0 và ngược lại là 1.
    5. Zero Flag (ZF) - cho thấy kết quả phép toán số học hay so sánh. Kết quả không = 0 thì cờ thiết lập là 0 và kết quả = 0 thì cờ là 1.
    6. Auxiliary Carry Flag (AF) - nó chứa bit 3 tới bit 4 theo sau phép toán số học, dùng để chỉ rõ cụ thể phép toán.