• 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
Trang 1Bài giảng
Assembler Bài 1
Trang 2• 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
Trang 3• 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
CPU, trực tiếp nối với ALU (arithmetic logic unit)
và CU (control unit)
được đồng bộ hóa bởi 1 đồng hồ trong Đơn vị: chu kỳ máy hoặc chu kỳ đồng hồ (MHz)
Trang 4 Gồm các thanh ghi 8, 16, 32 bit.
Trang 5• 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
dưới là AL Bit 0 trong AL = bit 0 trong AX, bit 0 trong AH = bit 8 trong AX
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
Trang 6• VD: nếu chuyển 00010010001101111 vào AX, AL
= 01101111, AH = 00010010
dụng cho các phép toán số học
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
lệnh
và chia VD: khi nhân, DX lưu 16 bit cao của tích
Trang 7• 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
lệnh thi hành trong chương trình
biến CPU tính toán vị trí của chúng nhờ dùng giá trị phân đoạn trong DS
biến bộ nhớ
Trang 8• Chứa độ dịch vị (offset) của dữ liệu và lệnh.
so với phân đoạn cơ sở của nó
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
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
Trang 9 SI (source index): trỏ đến chuỗi nguồn.
chuỗi
Trang 10 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
đượ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
Trang 11• 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
ra hay không Điều khiển bởi lệnh CLI, STI
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
Trang 12• 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.
Trang 13• Intel từ 386 trở đi đều có các thanh ghi 32 bit.
2 thanh ghi FS và GS