ASSEMBLER 1

Chia sẻ bởi Đỗ Quang Huy | Ngày 19/03/2024 | 8

Chia sẻ tài liệu: ASSEMBLER 1 thuộc Công nghệ thông tin

Nội dung tài liệu:

Giới thiệu Assembler
Kiến trúc bộ xử lý (intel)
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).
Thanh ghi
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.
Thanh ghi dữ liệu
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.
Thanh ghi phân đoạn
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ớ.
Thanh ghi chỉ mục
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.
Thanh ghi trạng thái và điều khiển
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.
Cờ điều khiển
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.
Cờ trạng thái
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.
Các thanh ghi 32 bit
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.
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Đỗ Quang Huy
Dung lượng: | Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)