Bài giảng kiến trúc máy tính cho sinh viên đại học

Gồm 5 chương Chương 1 Tổng quan Chương 2 Thiết kế hệ lệnh cho VXL Chương 3 Thiết kế bộ nhớ Chương 4 Giới thiệu một số KT hiện đại Chương 5 Tổ chức vào ra của máy tính

ppt151 trang | Chia sẻ: longpd | Lượt xem: 3818 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng kiến trúc máy tính cho sinh viên đại học, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
KIẾN TRÚC MÁY TÍNH 2 tín chỉ Đối tượng sinh viên năm thứ 2 Chuyên ngành CNTT NỘI DUNG CHÍNH Gồm 5 chương Chương 1 Tổng quan Chương 2 Thiết kế hệ lệnh cho VXL Chương 3 Thiết kế bộ nhớ Chương 4 Giới thiệu một số KT hiện đại Chương 5 Tổ chức vào ra của máy tính Tài liệu tham khảo 1. William Stallings - Computer Organization and Architecture – Designing for Performance – 2003 (6th edition) 2. Behrooz Parhami - Computer Architecture: From Microprocessors to Supercomputers - 2005 3. David A. Patterson & John L. Hennessy -Computer Organization and Design: The Hardware/Software Interface – 2002 (third edition) 4. John L. Hennessy & David A. Patterson -Computer Architecture: A Quantitative Approach –2003 (third edition) Chương I Tổng quan I. Giới thiệu chung II. Kiến trúc máy tính tuần tự Vonneuman III. Các phương pháp vào ra dữ liệu của máy tính I. Giới thiệu chung 1.1. Máy tính và phân loại máy tính 1. Máy tính Máy tính (Computer) là thiết bị điện tử thực hiện các công việc sau: Nhận thông tin vào Xử lý thông tin theo dãy các lệnh được nhớ sẵn bên trong, Đưa thông tin ra. Dãy các lệnh nằm trong bộ nhớ để yêu cầu máy tính thực hiện công việc cụ thể gọi là chương trình (program) Máy tính hoạt động theo chương trình. I. Giới thiệu chung 2. Phân loại máy tính Phân loại truyền thống Máy vi tính (Microcomputers) Máy tính nhỏ (Minicomputers) Máy tính lớn (Mainframe Computers) Siêu máy tính (Supercomputers) Phân loại máy tính hiện đại Máy tính cá nhân (Personal Computers) Máy chủ (Server Computers) Máy tính nhúng (Embedded Computers) Máy tính cá nhân PC Là loại máy tính phổ biến nhất 􀂄 Các loại máy tính cá nhân: 􀂄 Máy tính để bàn (Desktop) 􀂄 Máy tính xách tay (Laptop) 􀂄 1981 IBM giới thiệu máy tính IBM-PC sử dụng bộ xử lý Intel 8088 􀂄 1984 Apple đưa ra Macintosh sử dụng bộ xử lý Motorola 68000 􀂄 Giá thành: hàng trăm đến hàng nghìn USD Máy chủ (Server) 􀂄 Thực chất là máy phục vụ 􀂄 Dùng trong mạng theo mô hình Client/Server (Khách hàng/Người phục vụ) 􀂄 Tốc độ và hiệu năng tính toán cao 􀂄 Dung lượng bộ nhớ lớn 􀂄 Độ tin cậy cao 􀂄 Giá thành: hàng nghìn đến hàng chục triệuUSD. Máy tính nhúng (Embedded Computer) Được đặt trong thiết bị khác để điều khiển thiết bị đó làm việc 􀂄 Được thiết kế chuyên dụng Ví dụ: 􀂄 Điện thoại di động 􀂄 Máy ảnh số 􀂄 Bộ điều khiển trong máy giặt, điều hoà nhiệt độ 􀂄 Router – bộ định tuyến trên mạng 􀂄 Giá thành: vài USD đến hàng trăm nghìn USD. 1.2. Kiến trúc máy tính Định nghĩa trước đây về kiến trúc máy tính: Cách nhìn logic của máy tính từ người lập trình (hardware/software interface) Kiến trúc tập lệnh (Instruction Set Architecture– ISA) Là định nghĩa hẹp Định nghĩa của Hennessy/ Patterson Kiến trúc máy tính bao gồm: Kiến trúc tập lệnh (Instruction Set Architecture):nghiên cứu máy tính theo cách nhìn của người lập trình (hardware/software interface). Tổ chức máy tính (Computer Organization): nghiên cứu thiết kế máy tính ở mức cao,chẳng hạn như hệ thống nhớ, cấu trúc bus, thiết kế bên trong CPU. Phần cứng (Hardware): nghiên cứu thiết kế logic chi tiết và công nghệ đóng gói của máy tính. Kiến trúc tập lệnh thay đổi chậm, tổ chức và phần cứng máy tính thay đổi rất nhanh. Ví dụ Các máy tính PC dùng các bộ xử lý Pentium III và Pentium 4: Cùng chung kiến trúc tập lệnh (IA-32) Có tổ chức khác nhau Kiến trúc tập lệnh Kiến trúc tập lệnh của máy tính bao gồm: Tập lệnh: tập hợp các chuỗi số nhị phân mã hoá cho các thao tác mà máy tính có thể thực hiện Các kiểu dữ liệu: các kiểu dữ liệu mà máy tính có thể xử lý Mô hình phân lớp của máy tính Phần cứng (Hardware): hệ thống vật lý của máy tính. 􀂄 Phần mềm (Software): các chương trình và dữ liệu. 1.3. Sự phát triển của của máy tính 1. Các thế hệ máy tính Thế hệ thứ nhất: Máy tính dùng đèn điện tử chân không (1950s) Thế hệ thứ hai: Máy tính dùng transistor (1960s) Thế hệ thứ ba: Máy tính dùng vi mạch SSI, MSI và LSI (1970s) Thế hệ thứ tư: Máy tính dùng vi mạch VLSI (1980s) Thế hệ thứ năm: Máy tính dùng vi mạch ULSI, SoC (1990s) Máy tính dùng đèn điện tử Nặng 30 tấn 18000 đèn điện tử và 1500 rơle 5000 phép cộng/giây Xử lý theo số thập phân Bộ nhớ chỉ lưu trữ dữ liệu Lập trình bằng cách thiết lập vị trí của các chuyển mạch và các cáp nối. Đèn điện tử Máy tính von Neumann Đó là máy tính IAS: Princeton Institute for Advanced Studies Được bắt đầu từ 1947, hoàn thành1952 Do John von Neumann thiết kế Được xây dựng theo ý tưởng “chương trình được lưu trữ” (stored-program concept) của von Neumann/Turing (1945) Đặc điểm chính của máy tính IAS Bao gồm các thành phần: đơn vị điều khiển, đơn vị số học và logic (ALU), bộ nhớ chính và các thiết bị vào-ra. Bộ nhớ chính chứa chương trình và dữ liệu Bộ nhớ chính được đánh địa chỉ theo từng ngăn nhớ, không phụ thuộc vào nội dung của nó. ALU thực hiện các phép toán với số nhị phân Đơn vị điều khiển nhận lệnh từ bộ nhớ, giải mã và thực hiện lệnh một cách tuần tự. Đơn vị điều khiển điều khiển hoạt động của các thiết bị vào-ra Trở thành mô hình cơ bản của máy tính John von Neumann và máy tính IAS Hãng IBM International Business Machine 􀂄 1953 - IBM 701 􀂄 Máy tính lưu trữ chương trình đầu tiên của IBM 􀂄 Sử dụng cho tính toán khoa học 􀂄 1955 – IBM 702 􀂄 Các ứng dụng thương mại Máy tính dùng transistor Máy tính PDP-1 của DEC (Digital Equipment Corporation) máy tính mini đầu tiên 􀂄 IBM 7000 􀂄 Hàng trăm nghìn phép cộng trong một giây. 􀂄 Các ngôn ngữ lập trình bậc cao ra đời. Máy tính dùng transistor Máy tính dùng vi mạch SSI, MSI và LSI Vi mạch (Integrated Circuit - IC): nhiều transistor và các phần tử khác được tích hợp trên một chip bán dẫn. 􀂄 SSI (Small Scale Integration) 􀂄 MSI (Medium Scale Integration) 􀂄 LSI (Large Scale Integration) 􀂄 VLSI (Very Large Scale Integration) (thế hệ thứ tư) 􀂄 ULSI (Ultra Large Scale Integration) (thế hệ thứ năm) 􀂄 SoC (System on Chip) 􀂄 Siêu máy tính xuất hiện: CRAY-1, VAX 􀂄 Bộ vi xử lý (microprocessor) ra đời 􀂄 Bộ vi xử lý đầu tiên 􀃆 Intel 4004 (1971). Máy tính dùng vi mạch VLSI/ULSI Các sản phẩm chính của công nghệ VLSI/ULSI: 􀂄 Bộ vi xử lý (Microprocessor): CPU được chế tạo trên một chip. 􀂄 Vi mạch điều khiển tổng hợp (Chipset): một hoặc một vài vi mạch thực hiện được nhiều chức năng điều khiển và nối ghép. 􀂄 Bộ nhớ bán dẫn (Semiconductor Memory): ROM, RAM 􀂄 Các bộ vi điều khiển (Microcontroller): máy tính chuyên dụng được chế tạo trên 1 chip. 2. Sự phát triển của bộ vi xử lý 1971: bộ vi xử lý 4-bit Intel 4004 􀂄 1972-1977: các bộ xử lý 8-bit 􀂄 1978-1984: các bộ xử lý 16-bit 􀂄 Khoảng từ 1985: các bộ xử lý 32-bit 􀂄 Khoảng từ 2000: các bộ xử lý 64-bit 􀂄 Các bộ xử lý đa lõi (multicores) 􀂄 Các bộ vi điều khiển (microcontroller) Pentium 􀂄 Siêu vô hướng 􀂄 Bus dữ liệu 64-bit 􀂄 Đa lệnh được thực hiện song song Pentium Pro 􀂄 Tăng cường tổ chức siêu vô hướng 􀂄 Dự đoán rẽ nhánh 􀂄 Phân tích luồng dữ liệu 􀂄 Suy đoán đông Pentium II 􀂄 Xử lý đồ họa, video & audio Pentium III 􀂄 Thêm các lệnh xử lý dấu phẩy động cho đồ họa 3D Pentium 4 􀂄 Tăng cường xử lý số dấu phẩy động vàmultimedia Duo Core: 2 bộ xử lý trên chip Core 2: Kiến trúc 64-bit 􀂄 Core 2 Quad – 3GHz – 820 triệu transistors 4 bộ xử lý trong 1chip Intel Pentium (32-bit) Multicores I.1. Phân loại kiến trúc máy tính Kiến trúc SISD (single instruction - single data, đơn dòng lệnh - đơn dòng dữ liệu) -Kiến trúc SIMD (Single Instruction Multiple Data, đơn dòng lệnh- đa dữ liệu) Dữ liệu Dữ liệu Dữ liệu Kiến trúc MIMD (Multiple Instruction Multiple Data, đa dòng lệnh- đa dữ liệu) I.2. Các thông số đo khả năng xử lý của máy tính Hiệu năng máy tính (performance) Đồng hồ xung nhịp hệ thống (Clock - CLK) CPI (Cycle Per Instruction): Số chu kỳ cần thiết để thực hiện một lệnh Trong đó: EI: số lệnh được thực hiện (executed instructions) ET: thời gian thực hiện lệnh (execution time) CR: tần số (clock rate) Ví dụ: Giả sử: Thực hiện lệnh A có CPI = 2, B có CPI = 3, C có CPI = 1, D có CPI = 4 Biết 1 CPI = 2ns (nano giây)  làm hết lệnh trên cần 26s MIPs (Million Instruction Per Second): Số triệu lệnh được thực hiện trong một giây IF: tần suất xuất hiện lệnh, CPI: số chu kỳ.  : thời gian một chu kỳ máy Cho  = 10 ns, Tính MIPs = ? Quan hệ giữa MIPS và CPI Với CPI = 4 Thời gian thực hiện 1 CK Thời gian thực hiện 1 CK n CK thực hiện Thời gian thực hiện chương trình T CR CR CR EI * ET CPI ET EI * I.3. Toán logic, đại số boolean Đại số Boole sử dụng các biến logic và phép toán logic 􀂄 Biến logic có thể nhận giá trị 1 (TRUE) hoặc 0 (FALSE) 􀂄 Phép toán logic cơ bản là AND, OR và NOT với ký hiệu như sau: 􀂄 Thứ tự ưu tiên: NOT > AND > OR 􀂄 Các phép toán NAND, NOR, XOR: Phép toán đại số Boole Các đồng nhất thức của đại số Boole Mạch lôgic Một số đường vào (dẫn tín hiệu vào) và chỉ có một đường ra (phát tín hiệu ra). Giả sử các tín hiệu vào x­1, x2, …, xn (ta gọi là đầu vào hay input) cũng như tín hiệu ra F (đầu ra hay output) đều chỉ có hai trạng thái khác nhau, tức là mang một bit thông tin, mà ta ký hiệu là 0 và 1. Một thiết bị với các đầu vào và đầu ra mang giá trị 0, 1 như vậy là một mạch lôgic. Đầu ra của một mạch lôgic là một hàm Boole F của các đầu vào x­1, x2, …, xn. Ta nói mạch lôgic trong hình trên thực hiện hàm F. Các mạch lôgic được tạo thành từ một số mạch cơ sở, gọi là cổng lôgic. Các cổng lôgic sau đây thực hiện các hàm phủ định, hội và tuyển. 3.1.1. Cổng NOT Cổng NOT thực hiện hàm phủ định. Cổng chỉ có một đầu vào. Đầu ra F(x) là phủ định của đầu vào x. Chẳng hạn, xâu bit 100101011 qua cổng NOT cho xâu bit 011010100. Trong các trường hợp khác. x y x 3.1.2. Cổng AND Cổng AND thực hiện hàm hội. Đầu ra F(x,y) là hội (tích) của các đầu vào. F(x,y,z)=xyz 3.1.3. Cổng OR Cổng OR thực hiện hàm tuyển (tổng). Đầu ra F(x,y) là tuyển (tổng) của các đầu vào. x y Mạch tổ hợp Mạch tổ hợp là mạch logic trong đó tín hiệu ra chỉ phụ thuộc tín hiệu vào ở thời điểm hiện tại. 􀂄 Là mạch không nhớ và được thực hiện bằng các cổng logic cơ bản 􀂄 Mạch tổ hợp có thể được định nghĩa theo ba cách: 􀂄 Bảng thật 􀂄 Dạng sơ đồ 􀂄 Phương trình Boole Xây dựng mạch lôgic Xây dựng một mạch lôgic thực hiện hàm Boole cho bởi bảng sau. Theo bảng này, hàm F có dạng tổng (tuyển) chuẩn tắc hoàn toàn là: Bộ dồn kênh (Multiplexer-MUX) Bộ dồn kênh (Multiplexer-MUX) Bộ phân kênh (Demultiplexer – DeMUX) Data input Bộ giải mã (Decoder) Bộ giải mã chọn một đầu ra tương ứng với một tổ hợp của N đầu vào. Bộ cộng (Adder) Bộ bán tổng (Half-adder) 􀂄 Cộng hai bit tạo ra bit tổng và bit nhớ Bộ toàn tổng (Full-adder) 􀂄 Cộng 3 bit 􀂄 Cho phép xây dựng bộ cộng N-bit III. Các phương pháp vào ra dữ liệu của máy tính III.1. Phương pháp thăm dò trạng thái thiết bị ngoại vi CPU sẽ liên tục gửi các tín hiệu hỏi xem có thiết bị nào sẵn sàng gửi DL cho mình hay không. Nếu có một thiết bị ngoại vi nào đó muốn trao đổi DL với CPU thì nó sẽ gửi lại tín hiệu sẵn sàng trao đổi. Khi đó CPU sẽ thực hiện việc trao đổi DL với thiết bị ngoại vi này. III.2. Phương pháp sử dụng ngắt CPU vẫn làm công việc của mình, chỉ khi nào có một thiết bị ngoại vi hay một thành phần nào đó của má tính có yêu cầu trao đổi dữ liệu với CPU thì thiết bị ngoại vi này sẽ gửi một yêu cầu ngắt tới CPU, khi đó CPU sẽ tạm dừng công việc hiện tại để quay ra trao đổi dữ liệu với thiết bị ngoại vi này. Trao đổi dữ liệu xong, CPU quay trở lại thực hiện tiếp công việc đang làm dở trước đó. III.3. Phương pháp truy nhập bộ nhớ trực tiếp DMA Thường được sử dụng khi có yêu cầu trao đổi dữ liệu lớn giữa CPU và thiết bị ngoại vi. CPU trao quyền quản lý cho bộ điều khiển truy nhập trực tiếp, lúc này việc trao đổi dữ liệu giữa thiết bị ngoại vi và bộ nhớ chính sẽ do bộ điều khiển này thực hiện. III.4. Phương pháp sử dụng kênh dữ liệu Xây dựng các đường bus dữ liệu riêng, nối trực tiếp thiết bị ngoại vi và bộ nhớ chính, mọi hế thống bus lại có một bộ điều khiển riêng được gọi là kênh dữ liệu. CII Thiết kế tập lệnh 2.1. Mô hình lập trình của máy tính 2.2. Các đặc trưng của lệnh máy 2.3. Các kiểu toán hạng 2.4. Các kiểu thao tác của lệnh 2.5. Các phương pháp định địa chỉ 2.6. Khái niệm về lập trình hợp ngữ 2.7. RISC 2.8. Thứ tự các byte trong bộ nhớ chính 2.9. Vídụ kiến trúc tập lệnh instruction instruction data data Mainmemory 0 1 2 n-2 n-1 …. …. Excution unit buffer PC Program counter IR Instruction register MAR Memory address register MBR Memory buffer register I/O Input/output address register I/O Input/output buffer register Giới thiệu về tập lệnh Mỗi bộ xử lý có một tập lệnh xác định Tập lệnh thường có hàng chục đến hàng trăm lệnh Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý hiểu được để thực hiện một thao tác xác định. Các lệnh được mô tả bằng các ký hiệu gợi nhớ - chính là các lệnh của hợp ngữ Dạng lệnh, kích thước mã lệnh Một lệnh mô tả bằng mã nhị phân có thể dài từ 1 đến 6 byte. Cấu trúc chung của một mã lệnh tuân theo sơ đồ sau: Prefix (Tiền tố) đi trước mã lệnh. Phần này có thế có, có thể không. Ví dụ tiền tố 3Eh báo hiệu vô hiệu hóa đoạn DS. Operation code (Mã toán) chỉ ra các thao tác mà CPU cần thực hiện, phân biệt đó là lệnh gì. Đối với CPU mã lệnh là một chuỗi các bit 0, 1. Ví dụ với lệnh dịch chuyển MOV có mã toán là 100010. Toán hạng (operand) dùng để xác định những đối tượng mà ở đó phép toán được thực hiện (nội dung của thanh ghi hay bộ nhớ). Các toán hạng thường được ngăn cách nhau bởi dấu phẩy. Toán hạng có thể có hoặc không. Ví dụ lệnh công hay nhân hai số hạng với nhau yêu cầu phải có hai toán hạng, lệnh dịch chuyển cần một toán hạng, lệnh xóa cờ không cần toán hạng nào. Mô tả lệnh Lệnh máy là mã nhị phân Để dễ hiểu và dễ nhớ đối với con người, người ta mô tả lệnh bằng các ký hiệu gợi nhớ Ví dụ: ADD, SUB, LOAD Toán hạng có thể được mô tả như sau: ADD A,B II. Số lượng các lệnh cho VXL Khi thiết kế một hệ lệnh cho bộ VXL nảy sinh một số vấn đề sau: Số lượng lệnh là bao nhiêu. Số lượng tham số trong hệ lệnh là bao nhiêu. Phân chia các lệnh theo dạng nào? Để thực hiện việc mã hóa các lệnh người ta sử dụng một dãy số nhị phân. Độ dài của dãy số này sẽ qui định số lượng các lệnh mà bộ xử lý có thể xử lý được. Các kiểu lệnh Xử lý dữ liệu Lưu trữ dữ liệu (bộ nhớ chính) Vận chuyển dữ liệu (vào-ra) Điều khiển luồng dữ liệu Số lượng địa chỉ toán hạng trong lệnh Ba địa chỉ toán hạng: 2 toán hạng nguồn, 1 toán hạng đích Ví dụ c = a + b Từ lệnh dài vì phải mã hoá địa chỉ cho cả ba toán hạng Được sử dụng trên các bộ xử lý tiên tiến Số lượng địa chỉ toán hạng trong lệnh Hai địa chỉ toán hạng: Một toán hạng vừa là toán hạng nguồn vừa là toán hạng đích; toán hạng còn lại là toán hạng nguồn ví dụ a = a + b Giá trị cũ của 1 toán hạng nguồn bị mất vì phải chứa kết quả Rút gọn độ dài từ lệnh Phổ biến Một địa chỉ toán hạng: Một toán hạng được chỉ ra trong lệnh Một toán hạng là ngầm định thường là thanh ghi (thanh chứa –accumulator) Được sử dụng trên các máy ở các thế hệ trước Đánh giá về số địa chỉ toánhạng Nhiều địa chỉ toán hạng „ Các lệnh phức tạp hơn „ Cần nhiều thanh ghi „ Chương trình có ít lệnh hơn „ Nhận lệnh và thực hiện lệnh chậm hơn „ Ít địa chỉ toán hạng „ Các lệnh đơn giản hơn „ Cần ít thanh ghi „ Chương trình có nhiều lệnh hơn „ Nhận lệnh và thực hiện lệnh nhanh hơn 0 địa chỉ toán hạng Các toán hạng đều được ngầm định Sử dụng Stack Ví dụ: push a push b add pop c có nghĩa là : c = a+b 􀂄 không thông dụng 2.3. Các kiểu toán hạng 􀂄 Địa chỉ 􀂄 Số 􀂄 Số nguyên 􀂄 Số dấu phẩy động 􀂄 Ký tự 􀂄 Ví dụ: mã ASCII 􀂄 Dữ liệu logic 􀂄 Các bit hoặc các cờ 2.4. Các kiểu thao tác của lệnh 􀂄 Chuyển dữ liệu 􀂄 Xử lý số học với số nguyên 􀂄 Xử lý logic 􀂄 Điều khiển vào-ra 􀂄 Chuyển điều khiển (rẽ nhánh) 􀂄 Điều khiển hệ thống Đánh giá về số địa chỉ toán hạng Nhiều địa chỉ toán hạng 􀂄 Các lệnh phức tạp hơn 􀂄 Cần nhiều thanh ghi 􀂄 Chương trình có ít lệnh hơn 􀂄 Nhận lệnh và thực hiện lệnh chậm hơn Ít địa chỉ toán hạng 􀂄 Các lệnh đơn giản hơn 􀂄 Cần ít thanh ghi 􀂄 Chương trình có nhiều lệnh hơn 􀂄 Nhận lệnh và thực hiện lệnh nhanh hơn Các vấn đề của thiết kế tập lệnh (1) Về thao tác Bao nhiêu thao tác ? Các thao tác nào ? Mức độ phức tạp của các thao tác ? 􀂄 Các kiểu dữ liệu 􀂄 Các khuôn dạng lệnh Độ dài của trường mã thao tác Số lượng địa chỉ toán hạng 􀂄 Các thanh ghi Số thanh ghi của CPU được sử dụng Các thao tác nào được thực hiện trên các thanh ghi ? 􀂄 Các phương pháp định địa chỉ (xét sau)(addressing modes) 􀂄 RISC hay CISC (xét sau) Reduced Instruction Set Computing Complex Instruction Set Computing Các lệnh chuyển dữ liệu 􀂄 MOV Copy dữ liệu từ nguồn đến đích MOVE đích, nguồn Trong đó toán hạng đích và gốc có thể tìm theo các địa chỉ khác nhau, nhưng phải có cùng độ dài và không được phép đồng thời là 2 ô nhớ hoặc 2 thanh ghi đoạn. Ví dụ: MOV 100H, AX MOV AX, BX MOV AX, 0FFFFH 􀂄 LOAD Nạp dữ liệu từ bộ nhớ đến bộ xử lý 􀂄 STORE Cất dữ liệu từ bộ xử lý đến bộ nhớ 􀂄 EXCHANGE Trao đổi nội dung của nguồn và đích XCHG Đích, Nguồn ví dụ : XCHG AH, AL ; tráo nội dung AH và AL. XCHG AL, [BX] ; tráo nội dung AL với ô nhớ có địa chỉ DS:BX. 􀂄 CLEAR Chuyển các bit 0 vào toán hạng đích 􀂄 SET Chuyển các bit 1 vào toán hạng đích 􀂄 PUSH Cất nội dung toán hạng nguồn vào ngăn xếp PUSH nguồn Ví dụ: PUSH BX; cất BX vào ngăn xếp, tại vị trí do SP chỉ ra. 􀂄 POP Lấy nội dung đỉnh ngăn xếp đưa đến toán hạng đích POP Đích ví dụ POP DX lấy 2 byte từ đỉnh ngăn xếp, đưa vào DX. Các lệnh số học 􀂄 ADD Cộng hai toán hạng/ SUBTRACT Trừ hai toán hạng ADD đích, nguồn SUB đích, nguồn Mô tả: ADD: Đích  Đích + Nguồn SUB : Đích  Đích -Nguồn Ví dụ: ADD AX, BX ; AX  AX+BX SUB CL, AL ; CL  CL - AL SUB AX, 0405H ; AX  AX - 0405H. Ví dụ 2: Viết đoạn chương trình ngôn ngữ assembly để cộng 5H với 3H, dùng các thanh ghi AL, BL. MOV AL, 05H ; AL  05H MOV BL, 03H ; BL  03H ADD AL, BL ; AL  05H+03H =08H MOV 100H, AL ; Di chuyển kết quả từ AL vào vị trí nhớ DS:100H 􀂄 MULTIPLY Nhân hai toán hạng/DIVIDE Chia hai toán hạng Khi dùng lệnh nhân, số được nhân phải được chuyển vào thanh ghi AX hoặc AL. Còn số nhân thì có thể chuyển vào thanh ghi khác bất kỳ hoặc một địa chỉ nhớ. Ví dụ: MUL BX ; số nhân nằm trong thanh ghi BX MUL MEM1 ; số nhân nằm trong địa chỉ nhớ mang nhãn MEM1 Khi hai byte nhân với nhau thì kết quả được gửi lưu vào thanh ghi AX. Ví dụ Viết đoạn chương trình nhân 5H với 3H, dùng thanh ghi CL. MOV AL, 05H ; AL  05H (số được nhân) MOV CL, 03H ; CL  03H (số nhân) MUL CL ; AL  0FH (kết quả) MOV MEM1, AL ; chuyển kết quả (0FH) từ AL vào vị trí nhớ có nhãn MEM1. Ví dụ 6: Viết đoạn chương trình để chia 6H cho 3H, dùng thanh ghi CL. MOV AX, 0006H ; AX  6H MOV CL, 03H ; CL  3H DIV CL ; AH  00H (số dư), AL chứa 02H (thương số) Chú ý: 6H được đưa vào thành 0006H để lấp đầy toàn bộ thanh ghi AX. Như vậy các byte trọng số cao của AX sẽ bị xoá để tránh bị lỗi. 􀂄 ABSOLUTE Lấy trị tuyệt đối toán hạng 􀂄 NEGATE Đổi dấu toán hạng (lấy bù 2) 􀂄 INCREMENT Tăng toán hạng thêm 1 􀂄 DECREMENT Giảm toán hạng đi 1 􀂄 COMPARE Trừ hai toán hạng để lập cờ Các lệnh logic AND Thực hiện phép AND hai toán hạng OR Thực hiện phép OR hai toán hạng XOR Thực hiện phép XOR hai toán hạng NOT Đảo bit của toán hạng (lấy bù 1) TEST Thực hiện phép AND hai toán hạng để lập cờ Các lệnh logic Minh hoạ các lệnh AND, OR, XOR 􀂄 Giả sử có hai thanh ghi chứa dữ liệu như sau: (R1) = 1010 1010 (R2) = 0000 1111 􀂄 R1 = (R1) AND (R2) = 0000 1010 Phép toán AND dùng để xoá một số bit và giữ nguyên một số bit còn lại của toán hạng. 􀂄 R1 = (R1) OR (R2) = 1010 1111 Phép toán OR dùng để thiết lập một số bit và giữ nguyên một số bit còn lại của toán hạng. Ví dụ : AND BL, 0FH ; che 4 bit cao của BL. OR BL, 30H ; lập bit b4 và b5 của BL lên 1. 􀂄 R1 = (R1) XOR (R2) = 1010 0101 Phép toán XOR dùng để đảo một số bit và giữ nguyên một số bit còn lại của toán hạng. Các lệnh logic (tiếp) SHIFT Dịch trái (phải) toán hạng ROTATE Quay trái (phải) toán hạng Các lệnh vào ra chuyên dụng INPUT Copy dữ liệu từ một cổng xác định đưa đến đích OUTPUT Copy dữ liệu từ nguồn đến một cổng xác định Các lệnh chuyển điều khiển JUMP (BRANCH) Lệnh nhảy không điều kiện: 􀂄 nạp vào PC một địa chỉ xác định JUMP CONDITIONAL Lệnh nhảy có điều kiện: 􀂄 điều kiện đúng, nạp vào PC một địa chỉ xác định 􀂄 điều kiện sai, không làm gì cả Ví dụ 1: CMP AL, 10H ; so sánh
Tài liệu liên quan