Bài 1 Giới thiệu Assembler

• CPU: phép toán CPU được thu gọn thành 3 bước căn bản: truy nạp (fetch), giải mã (decode), và thi hành (execute). • Mỗi bước gồm nhiều bước trung gian. Vd: – Truy nạp chỉ lệnh kế tiếp: • Đặt nó trong một vùng lưu trữ tên hàng đợi. • Cập nhật bộ đếm chương trình – Giải mã chỉ lệnh • Thực hiện việc phiên dịch địa chỉ • Truy nạp các toán hạng từ bộ nhớ – Thi hành chỉ lệnh • Thực hiện phép tính yêu cầu • Lưu trữ các kết quả bộ nhớ hoặc các thanh ghi • ấn định các cờ trạng thái gắn với CPU

pdf13 trang | Chia sẻ: lylyngoc | Lượt xem: 1586 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài 1 Giới thiệu Assembler, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài giảng Assembler Bài 1 • CPU: phép toán CPU được thu gọn thành 3 bước căn bản: truy nạp (fetch), giải mã (decode), và thi hành (execute). • Mỗi bước gồm nhiều bước trung gian. Vd: – Truy nạp chỉ lệnh kế tiếp: • Đặt nó trong một vùng lưu trữ tên hàng đợi. • Cập nhật bộ đếm chương trình – Giải mã chỉ lệnh • Thực hiện việc phiên dịch địa chỉ • Truy nạp các toán hạng từ bộ nhớ – Thi hành chỉ lệnh • Thực hiện phép tính yêu cầu • Lưu trữ các kết quả bộ nhớ hoặc các thanh ghi • ấn định các cờ trạng thái gắn với CPU • Bus địa chỉ và dữ liệu: đường dây song song truyền dữ liệu giữa các phần khác nhau của CPU. • Các thanh ghi: các khu lưu trữ cao tốc bên trong CPU, trực tiếp nối với ALU (arithmetic logic unit) và CU (control unit). • Đồng hồ: mỗi phép toán diễn ra trong CPU phải được đồng bộ hóa bởi 1 đồng hồ trong. Đơn vị: chu kỳ máy hoặc chu kỳ đồng hồ (MHz). Gồm các thanh ghi 8, 16, 32 bit. Thanh ghi đa năng: AX, BX, CX, DX. Thanh ghi phân đoạn: CS, SS, DS, ES. Thanh ghi chỉ mục: BP, SP, Sl, Di. Thanh ghi tình trạng và điều khiển: Flags, IP. • Các thanh ghi đa năng dùng để di chuyển số học và dữ liệu. Mỗi thanh ghi được định địa chỉ dưới dạng giá trị 8 bit hoặc 16 bit. • Vd: AX là 1 thanh ghi 16 bit; 8 bit trên là AH, 8 bit dưới là AL. Bit 0 trong AL = bit 0 trong AX, bit 0 trong AH = bit 8 trong AX. • Các lệnh có thể định địa chỉ các thanh ghi dữ liệu 16 bit dưới dạng AX, BX, CX, DX hoặc dữ liệu 8 bit dưới dạng AH, AL, BH, BL, CH, CL, DH, DL. • VD: nếu chuyển 00010010001101111 vào AX, AL = 01101111, AH = 00010010. • AX (accumulator): thanh ghi tích lũy, CPU sử dụng cho các phép toán số học. • BX (base): lưu giữ địa chỉ của 1 thủ tục hoặc biến. 3 thanh ghi khác cũng có khả năng này là SI, DI và BP. BX cũng dùng để dịch chuyển số học và dữ liệu. • CX (counter): sử dụng làm bộ đếm để lặp các chỉ lệnh. • DX (data): đóng 1 vai trò đặc biệt trong phép nhân và chia. VD: khi nhân, DX lưu 16 bit cao của tích. • Sử dụng làm vị trí cơ sở cho các chỉ lệnh chương trình, dữ liệu và ngăn xếp. • CS (code segment): lưu vị trí cơ sở của tất cả các lệnh thi hành trong chương trình. • DS (data segment): lưu vị trí mặc định của các biến. CPU tính toán vị trí của chúng nhờ dùng giá trị phân đoạn trong DS. • SS (stack segment): chứa vị trí cơ sở của ngăn xếp. • ES (extra segment): là vị trí cơ sở bổ xung của các biến bộ nhớ. • Chứa độ dịch vị (offset) của dữ liệu và lệnh. • Offset là khoảng cách của 1 biến, nhãn hoặc lệnh so với phân đoạn cơ sở của nó. • BP (base pointer): lưu offset giả định từ thanh ghi SS, giống biến trỏ ngăn xếp. Thường được 1 chương trình con dùng để định vị các biến đã được chuyền trên ngăn xếp bởi 1 chương trình gọi. • SP (stack pointer): chứa offset của đầu ngăn xếp. SS và SP phối hợp lại để hình thành địa chỉ hoàn chỉnh của đầu ngăn xếp.  SI (source index): trỏ đến chuỗi nguồn. DI (destination index): đích cho các chỉ lệnh dời chuỗi.  IP (instruction pointer): chứa offset của lệnh kế tiếp sẽ được thi hành trong đoạn mã hiện hành. IP và CS tổ hợp lại hình thành địa chỉ hoàn chỉnh của lệnh kế tiếp.  Flags: là thanh ghi đặc biệt có các vị trí bit riêng lẻ được gán để nêu trạng thái của CPU hoặc các kết quả của phép toán số học. • DF (direction): ảnh hưởng đến các lệnh chuyển giao dữ liệu theo khối như movs, cmps, scas. Được điều khiển bằng các lệnh STD, CLD • IF (interrupt): chỉ rõ các ngắt hệ thống có thể xảy ra hay không. Điều khiển bởi lệnh CLI, STI. • Trap (TF): xác định CPU có bị treo hay không sau mỗi lệnh. Khi cờ được ấn định, 1 trình gỡ rối có thể để lập trình viên sử dụng kỹ thuật single step qua từng lệnh. Xác lập bởi lệnh INT 3. • Carry (CF): xác lập khi kết quả của 1 phép tính không dấu quá lớn, không vừa với đích. VD: 200 + 58 lưu trữ trong AL 8bit --> tràn số. • Overflow (OF): xác lập khi kết quả 1 phép tính có dấu quá rộng (quá nhiều bit) không vừa với đích. VD: -128 + (-2) lưu trong BL 8bit sẽ dẫn đến tràn số. • Sign (SF): ấn định khi kết quả 1 phép tính số học hoặc logic sinh ra kết quả âm. • Zero (ZF): ấn định khi kết quả 1 phép tính số học hoặc logic là 0. • Auxilliary Carry: ấn định khi 1 phép toán gây ra 1 phép mang sang (carry) từ bit 3 sang bit 4 hoặc 1 phép mượn từ bit 4 sang bit 3 của 1 toán hạng. • Parity: phản ánh số lượng các bit 1 trong kết quả của 1 phép toán. Nếu các bit 1 là chẵn, parity = even, nếu lẻ parity = odd. • Intel từ 386 trở đi đều có các thanh ghi 32 bit. • Các thanh ghi đoạn vẫn là 16 bit nhưng có bổ sung 2 thanh ghi FS và GS. • Nửa trên của các thanh ghi 32 bit không có tên. • Đa năng: EAX, EBX, ECX, EDX • Chỉ mục: EBP, ESP, ESI, EDI. • Trạng thái và điều khiển: EFLAGS, EIP. • Ngăn xếp: CS, SS, DS, ES, FS, GS.
Tài liệu liên quan