1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Kỹ thuật Vi xử lý Nghề: Kỹ thuật lắp ráp và sửa chữa máy tính Trình độ: Cao đẳng nghề (Tổng cục Dạy nghề)

111 37 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 111
Dung lượng 5,47 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

(NB) Giáo trình Kỹ thuật Vi xử lý với mục tiêu chính là Trình bày được các hệ thống đếm, các loại bảng mã dùng trong kỹ thuật số. Trình bày được các khái niệm về xuất nhập dữ liệu. Trình bày được các ngắt và xử lý ngắt trong hệ vi xử lý. Mời các bạn cùng tham khảo

Trang 1

BỘ LAO ĐỘNG - THƯƠNG BÌNH VÀ XÃ HỘI

TỔNG CỤC DẠY NGHỀ

GIÁO TRÌNH

KỸ THUẬT VI XỬ LÝ NGHỀ: KỸ THUẬT SỬA CHỮA, LẮP

RÁP MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG

(Ban hành theo Quyết định số: 120/QĐ-TCDN ngày 25 tháng 02 năm 2013 của Tổng

cục trưởng Tổng cục dạy nghề)

NĂM 2013

Trang 2

LỜI GIỚI THIỆU

Khoa học kỹ thuật đang ngày càng phát triển rất mạnh mẽ, các công nghệ mới thuộc các lĩnh vực khác nhau cũng nhờ đó đã ra đời nhằm đáp ứng

nhu cầu của xã hội và kỹ thuật Vi xử lý cũng nằm trong số đó Hiện nay kỹ

thuật Vi xử lý đã được giảng dạy rộng rãi ở các trường Cao đẳng trong cả

nước, tuy nhiên lĩnh vực mới Vi xử lý vẫn đang còn rất mới mẻ, và những ứng

dụng của nó vẫn chưa được khai thác triệt để trong các hệ thống điều khiển,

đo lường và điều chỉnh của các dây chuyền công nghiệp Tác giả đã tập trung

nghiên cứu và biên soạn giáo trình kỹ thuật Vi xử lý nhằm phục vụ công việc

giảng dạy tại các trường Đối tượng của quyển giáo trình này là các sinh viên ngành Kỹ thuật lắp ráp sửa chữa máy tính Tuy nhiên để tiếp thu tốt nội dung

từ quyển giáo trình này, người học cần có kiến thức về kỹ thuật số, kỹ thuật điện tử và đã biết qua một ngôn ngữ lập trình cấp cao như Pascal, C…

Mặc dù đã có cố gắng trong quá trình biên soạn nhưng chắc chắn cuốn giáo trình này không thể không có thiếu sót Tác giả rất mong sự góp ý của các bạn đọc Thư góp ý xin gửi về: Trường Cao Đẳng nghề kỹ thuật công nghệ

Chúng tôi xin cảm ơn!

Hà Nội, 2013

Tham gia biên soạn Khoa Công Nghệ Thông Tin Trường Cao Đẳng Nghề Kỹ Thuật Công Nghệ Địa Chỉ: Tổ 59 Thị trấn Đông Anh – Hà Nội

Tel: 04 38821300 Chủ biên: Lê Văn Dũng

Mọi góp ý liên hệ: Phùng Sỹ Tiến – Trưởng Khoa Công Nghệ Thông Tin

Mobible: 0983393834 Email: tienphungktcn@gmail.com – tienphungktcn@yahoo.com

MỤC LỤC

Trang 3

2 Các khái niệm cơ bản liên quan đến hệ vi xử lý 16

Chương 2: Tổng quan về vi xử lý 18

4 Dùng Assembly để thiết lập các tập lệnh điều khiển 35

Chương3: Các mạch giải mã địa chỉ và tổ chức bộ nhớ 39

2 Các mạch giải mã địa chỉ 45

Chương 4: Xuất nhập dữ liệu của hệ vi xử lý 49

Chương 5: Ngắt và xử lý ngắt trong hệ vi xử lý 65

4 Ghép nối các loại thiết bị ngoại vi khác 102

MÔN HỌC : KỸ THUẬT VI XỬ LÝ

Trang 4

+ Là môn học phục vụ cho sửa chữa phần cứng

Ý nghĩa, vai trò của môn học:

+ Là môn học quan trọng của nghề Sửa chữa, lắp ráp máy tính

Mục tiêu của môn học:

- Trình bày được các hệ thống đếm, các loại bảng mã dùng trong kỹ thuật số

- Trình bày được các khái niệm về xuất nhập dữ liệu

- Trình bày được các ngắt và xử lý ngắt trong hệ vi xử lý

- Trình bày được các ghép nối cơ bản vận dụng được kiến thức đó học để áp dụng được các ứng dụng trong thực tế từ đơn giản đến phức tạp một cách thành thục

- Tư duy tốt và lập trình điều khiển hệ thống vi xử lý

- Cẩn thận, khéo léo trong thao tác

Thời lượng Tổng

số

Lý thuyết

Thực hành

Kiểm tra

MH29 - 01 Tổng quan cấu trúc phần cứng

Giới thiệu họ vi điều kiển

Sơ lược về các chân của 89C51

Tổ chức bộ nhớ Các thanh ghi chức năng đặc biệt

Bộ nhớ ngoài

MH29 - 02 Tập lệnh của 89C51

Các chế độ đánh địa chỉ Các lệnh của 89C51

MH29 - 03 Hoạt động của bộ định thời

Giới thiệu bộ định thời Thanh ghi chế độ Timer (TMOD) Thanh ghi điều khiển Timer (TCON) Các chế độ Timer

Nguồn tạo xung nhịp Khởi động điều khiển và truy xuất thanh ghi Timer

2

2

MH29- 04 Hoạt động của Port nối tiếp

Giới thiệu các Port của vi xử lý 89C51 Thanh ghi điều khiển cổng nối tiếp Các chế độ hoạt động

Khởi động và truy xuất thanh ghi cổng nối tiếp

Tốc độ truyền (Baud Rate) nối tiếp

MH29 - 06 Tổng quan cấu trúc phần cứng 13 7 6

Trang 5

Giới thiệu họ vi điều kiển

Sơ lược về các chân của 89C51

Tổ chức bộ nhớ Các thanh ghi chức năng đặc biệt

Trang 6

BÀI MỞ ĐẦU CÁC HỆ THỐNG ĐẾM – CÁC LOẠI MÃ CÁC MẠCH ĐIỆN TỬ SỐ CƠ BẢN

MÃ BÀI: MH29-01

Mục tiêu:

- Phân loại được các hệ thống số đếm

- Trình bài các được các loại mã Mã BCD, ASCII

- Tinh thần tương trợ lẫn nhau trong học tập

Nội dung chính:

1.Các hệ thống số đếm

Mục tiêu:

- Phân loại được các hệ thống số đếm

1.1 Hệ thập phân (Decimal Number System)

Trong thực tế, ta thường dùng hệ thập phân để biểu diễn các giá trị số Ở

hệ thống này, ta dùng các tổ hợp của các chữ số 0 9 để biểu diễn các giá trị

Một số trong hệ thập phân được biểu diễn theo các số mũ của 10

VD: Số 5346,72 biểu diễn như sau:

5346,72 = 5.103 + 3.102 + 4.10 + 6 + 7.10-1 + 2.10-2

Tuy nhiên, trong các mạch điện tử, việc lưu trữ và phân biệt 10 mức điện

áp khác nhau rất khó khăn nhưng việc phân biệt hai mức điện áp thì lại dễ

dàng Do đó, người ta sử dụng hệ nhị phân để biểu diễn các giá trị trong hệ

thống số

1.2 Hệ nhị phân (Binary Number System)

Hệ nhị phân chỉ dùng các chữ số 0 và 1 để biểu diễn các giá trị số Một

số nhị phân (binary digit) thường được gọi là bit Một chuỗi gồm 4 bit nhị

phân gọi là nibble, chuỗi 8 bit gọi là byte, chuỗi 16 bit gọi là word và chuỗi

32 bit gọi là double word Chữ số nhị phân bên phải nhất của chuỗi bit gọi là

bit có ý nghĩa nhỏ nhất (least significant bit – LSB) và chữ số nhị phân bên

trái nhất của chuỗi bit gọi là bit có ý nghĩa lớn nhất (most significant bit –

MSB) Một số trong hệ nhị phân được biểu diễn theo số mũ của 2 Ta thường

dùng chữ B cuối chuỗi bit để xác định đó là số nhị phân

VD: Số 101110.01b biểu diễn giá trị số:

101110.01b = 1x25 + 0x24 + 1x23 +1x22 + 1x21 + 0 + 0x2-1 + 1x2-2

* Chuyển số nhị phân thành số thập phân:

Để chuyển một số nhị phân thành một số thập phân, ta chỉ cần nhân các

chữ số của số nhị phân với giá trị thập phân của nó và cộng tất cả các giá trị

lại

VD: 1011.11B = 1x23 + 0x22 + 1x21 + 1 + 1x2-1 + 1x2-2 = 11.75

* Chuyển số thập phân thành số nhị phân:

Để chuyển một số thập phân thành số nhị phân, ta dùng 2 phương pháp sau:

Trang 7

* Phương pháp 1: Ta lấy số thập phân cần chuyển trừ đi 2i trong đó 2i là số lớn nhất nhỏ hơn hay bằng số thập phân cần chuyển Sau đó, ta lại lấy kết quả này và thực hiện tương tự cho đến 20 thì dừng Trong quá trình thực hiện, ta

sẽ ghi lại các giá trị 0 hay 1 cho các bit tuỳ theo trường hợp số thập phân nhỏ hơn 2i (0) hay lớn hơn 2i (1)

Phương pháp 2: Lấy số cần chuyển chia cho 2, ta nhớ lại số dư và lấy tiếp

thương của kết quả trên chia cho 2 và thực hiện tương tự cho đến khi thương cuối cùng bằng 0 Kết quả chuyển đổi sẽ là chuỗi các bit là các số dư lấy theo thứ tự ngược lại

Để thực hiện chuyển các số thập phân nhỏ hơn 1 sang các số nhị phân, ta làm như sau: lấy số cần chuyển nhân với 2, giữ lại phần nguyên và lại lấy phần lẻ nhân với 2 Quá trình tiếp tục cho đến khi phần lẻ bằng 0 thì dừng Kết quả chuyển đổi là chuỗi các bit là giá trị các phần nguyên

1.3 Hệ thập lục phân (Hexadecimal Number System)

Như đã biết ở trên, nếu dùng hệ nhị phân thì sẽ cần một số lượng lớn các bit để biểu diễn Giả sử như số 1024 = 210 sẽ cần 10 bit để biểu diễn Để rút ngắn kết quả biểu diễn, ta dùng hệ thập lục phân dựa cơ sở trên số mũ của 16 Khi đó, 4 bit trong hệ nhị phân (1 nibble) sẽ biểu diễn bằng 1 chữ số trong hệ thập lục phân (gọi là số hex) Trong hệ thống này, ta dùng các số 0 9 và các

kí tự A F để biểu diễn cho một giá trị số Thông thường, ta dùng chữ h ở cuối

để xác định đó là số thập lục phân

Trang 8

2.Mã BCD, ASCII

Mục tiêu:

- Trình bài các được các loại mã Mã BCD, ASCII

2.1 Mã BCD (Binary Coded Decimal)

Trong thực tế, đối với một số ứng dụng như đếm tần, đo điện áp, … ngõ ra

ở dạng số thập phân, ta dùng mã BCD Mã BCD dùng 4 bit nhị phân để mã hoá cho một số thập phân 0 9 Như vậy, các số hex A F không tồn tại trong

mã BCD

VD: Số thập phân 5 2 9

Số BCD 0101 0010 1001

2.2 Mã ASCII

Trong thực tế, đối với một ký tự ứng dụng nhập từ bàn phím máy tính ta

dùng mã ASCII Mã ASCII theo bảng sau

Thực hiện phép toán logic VÀ (AND)

Đầu ra chỉ bằng 1 khi tất cả các đầu vào bằng 1

Trang 9

Thực hiện phép toán logic HOẶC (OR)

Đầu ra chỉ bằng 0 khi tất cả các đầu vào bằng 0

Cổng HOẶC 2 đầu vào:

Trang 10

+ Dạng sóng

3.3 Cổng NOT:

a Chức năng:

Thực hiện phép toán logic ĐẢO (NOT)

Cổng ĐẢO chỉ có 1 đầu vào:

Thực hiện phép ĐẢO của phép toán logic VÀ

Đầu ra chỉ bằng 0 khi tất cả các đầu vào bằng 1 Cổng VÀ ĐẢO 2 đầu vào:

Trang 11

Thực hiện phép ĐẢO của phép toán logic HOẶC

Đầu ra chỉ bằng 1 khi tất cả các đầu vào bằng 0 Cổng HOẶC ĐẢO 2 đầu vào:

Trang 12

Thực hiện biểu thức logic HOẶC CÓ LOẠI TRỪ (phép toán XOR - hay còn là phép cộng module 2) Đầu ra chỉ bằng 0 khi tất cả các đầu vào giống nhau Cổng XOR 2 đầu vào:

F    

F

Trang 13

- Đưa điện thế của tín hiệu về đúng chuẩn của các mức logic

- Nâng khả năng cấp dòng cho mạch

- Ký hiệu của cổng BUFFER

Tuy cổng đệm không làm thay đổi trạng thái logic của tín hiệu vào cổng nhưng nó giữ vai trò rất quan trọng trong các mạch số

CHƯƠNG 1

MÁY TÍNH VÀ HỆ THỐNG VI XỬ LÝ

MÃ BÀI: MH29-02

Mục tiêu:

- Phân loại các hệ thống máy tính

- Trình bài các khái niệm liên quan đến hệ thống vi xử lý

- Tinh thần tương trợ lẫn nhau trong học tập

Trang 14

Nội dung chính:

1.Phân loại máy tính

Mục tiêu:

- Phân loại các hệ thống máy tính

Có nhiều cách phân loại máy tính Có thể phân loại theo công nghệ, theo tính năng theo bộ xử lý hoặc theo kích thước

1.1 Phân loại theo công nghệ

Cho đến nay, nếu xét theo sự phát triển của công nghệ thì máy tính có thể được phân thành 5 thế hệ khác nhau và mỗi thế hệ thể hiện cho sự một trình độ công nghệ

- Thế hệ 1: từ 1950 - 1959 Các máy tính ở thế hệ này được xây dựng

từ các đèn điện tử Năng lực tính toán chậm, hàng ngàn phép tính/giây, tiêu thụ điện năng lớn và chiếm nhiều không gian

- Thế hệ 2: từ 1959 - 1963: Đặc trưng cơ bản của thế hệ này là sử dụng bóng bán dẫn vào bộ xử lý trung tâm và các mạch điện của máy tính, nhờ vậy tăng đáng kể tốc độ thực hiện của máy tính tăng lên cỡ chục lần so với máy thế hệ 1 Ngoài ra kích thước máy tính cũng như độ tin cậy cũng được cải thiện đáng kể

- Thế hệ 3: trong khoảng thời gian từ 1964 đến 1974 Thế hệ này gắn liền với sự xuất hiện và ứng dụng các mạch vi điện tử (IC - Integrated Circuit) Máy tính đã có kích thước gọn hơn, khả năng tính toán lớn hơn, tốc

độ có thể đạt gấp ngàn lần so với thế hệ 1 (cỡ triệu phép tính/giây) Việc xử lý song song ngày càng tăng ở thế hệ này

- Thế hệ 4: từ 1974 đến nay Là thời kỳ của các máy vi tính với năng lực tính toán rất lớn Công nghệ máy tính ở thời kỳ này liên quan tới việc sử dụng các mạch tích hợp cỡ cực lớn (VLSI - Very Large Scale Integration) với dung lượng trên 100.000 tranzystor/chip vào những năm 70 cho đến hàng chục triệu tranzystor/chip ngày nay Nhờ có công ngệ này mà toàn bộ CPU,

bộ nhớ chính hay các thiết bị tương tự khác có thể được thực hiện gọn trên một chip Tốc độ ở thế hệ này có thể đạt tới hàng trăm triệu phép tính/giây trở lên

- Thế hệ 5: Máy tính mạng Neuron - Neural Network - Một kỹ thuật của trí khôn nhân tạo, bắt chước cách thức các tế bào thần kinh nối với bộ não của người Người ta cung cấp những thông tin cho mạng thần kinh để huấn luyện cho nó nhận biết được các sự vật mẫu nhằm có thể đưa ra các dự báo hoặc giải pháp xử lý thích ứng

Tuy nhiên cần nhấn mạnh là thế hệ này hiện nay đang trong quá trình nghiên cứu, một số mẫu máy tính thử nghiệm đầu tiên dạng này mới xuất hiện trong vài năm trở lại đây và các khái niệm liên quan đang mới hình thành

Theo sự phát triển của công nghệ, các máy tính hiện nay được thiết kế, xây dựng theo xu hướng:

- Mạnh hơn về tốc độ tính toán

- Nhỏ hơn về kích thước

Trang 15

- Tiết kiệm hơn về năng lượng

1.2 Phân loại theo tính năng

Các máy tính cũng có thể được phân loại theo tính năng Cho đến nay

có thể phân máy tính thành 4 nhóm sau:

- Máy tính cực lớn (Super Computer)

- Máy tính lớn (Computer - mainframe)

- Máy tính Mini (MiniComputer)

- Máy vi tính (MicroComputer)

Sự khác biệt về tốc độ xử lý và khả năng lưu trữ của các nhóm máy tính được nêu ở bảng 1-1

Bảng 1.1 Phân loại máy tính theo tính năng

1.3 Phân loại theo bộ xử lý

Có thể phân loại các máy vi tính căn cứ vào bộ vi xử lý - bộ não của máy vi tính Dưới đây giới thiệu một số dòng máy vi tính

a Bộ vi xử lý của hãng Intel như: I8088, 80286, 80386, 80486, Pentium Có thể gọi gọn chung cho các bộ vi xử lý này là: X86

Các máy xử dụng bộ vi xử lý Intel là Olivetti, IBM, Dell,

Gateway, DNA, Compaq

b Bộ vi xử lý của hãng Motorola M6800, M68000, M68052 (68X) Các máy xử dụng bộ vi xử lý Motorola là: Machintosh, Apple, Amiga,

c Bộ vi xử lý của hãng Zilog như: Z40, Z80

Các máy tính sử dung là Bondwell, NEC, Sony

1.4 Phân loại theo kích thước

Có thể dựa theo kích thước máy tính để phân loại:

- Máy tính để bàn (Desktop)

- Máy tính xách tay (Laptop),

- Máy tính kiểu sổ tay (Notebook)

Mỗi cách phân loại trên đều có những ưu điểm riêng Có thể sử dụng riêng từng kiểu phân loại hoặc kết hợp tuỳ theo yêu cầu

2.Các khái niệm cơ bản liên quan đến hệ vi xử lý

Mục tiêu:

- Trình bài các khái niệm liên quan đến hệ thống vi xử lý

Mọi hệ thống máy tính, dù là máy tính cá nhân nhỏ hay các hệ máy tính lớn đều có một cấu trúc chung Một hệ máy Vi tính điển hình gồm có 4 khối

cơ bản: Thiết bị vào, bộ xử lý, bộ nhớ, thiết bị ra

BUS điều khiển BUS dữ liệu

Trang 16

Bộ xử lý trung tâm: đóng vai trò chủ đạo nhất trong hệ máy tính Ở đây tiến hành toàn bộ các tính toán, các phép tính số học và đại số và biến đổi các mã tương ứng Đây chính là đầu não của các máy tính Khi bắt đầu hoạt động, nó nhận mã lệnh từ bộ nhớ, sau đó giải mã các lệnh này thành các dãy xung điều khiển để điều khiển các khối tương ứng thực hiện theo đúng trình

tự và nội dung có trong mã lệnh

Ở các máy vi tính, bộ xử lý trung tâm là bộ vi xử lý Sử dụng phổ cập hiện nay là các bộ vi xử lý của hãng Intel, Motorola, Zilog, AMD

Bộ nhớ (memory): Là một bộ phận cũng hết sức quan trọng của hệ máy tính Bộ nhớ thự hiện việc lưu trữ thông tin và trao đổi thông tin

Ở các hệ máy vi tính, người ta sử dụng bộ nhớ bán dẫn bao gồm ROM, RAM Trong ROM có thể chứa các chương trình điều khiển hoạt động của toàn hệ khi bật máy Còn một phần chương trình điều khiển hệ thống, chương trình ứng dụng thường được lưu ở RAM

Bộ nhớ máy tính thực chất là bộ nhớ trong để phân biệt với khái niệm

bộ nhớ ngoài mà nhiều tài liệu hiện vẫn hay sử dụng để chỉ thiết bị từ (Băng, đĩa từ) Các thiết bị này tuy tốc độ trao đổi chậm so với bộ nhớ trong song có dung lượng lưu trữ rất lớn (bộ nhớ ngoài cũng có thể gọi là thiết bị ngoài)

Ở các máy vi tính sử dụng phổ cập hiện nay bộ nhớ ngoài là các ổ đĩa cứng (HDD), ổ đĩa mềm (FDD) Ổ mềm thuận tiện trong việc trao đổi thông tin vì rất tiện trong việc di chuyển Nhược điểm là tốc độ chậm (ổ đĩa quay với tốc độ 360 vòng/phút) và dung lượng nhỏ (thường vài Mb trở lại) Các ổ đĩa cứng có dung lượng rất lớn (vài trăm cho đến vài Gb) và tốc độ truy cập cũng lớn hơn ổ đĩa mềm nhiều (tốc độ quay của ổ cứng gấp 10 lần của ổ đĩa mềm - 3600 vòng/phút)

Khối phối ghép vào/ra (I/O) tạo khả năng giao tiếp máy tính với thế giới bên ngoài Các thiết bị ngoại vi như màn hình, bàn phím, máy in, các bộ biến đổi D/A, A/D đều liên hệ với hệ máy tính qua bộ phận này mà cụ thể cho từng thiết bị là các cổng

BUS địa chỉ: Khi ghi/đọc bộ nhớ bộ xử lý trung tâm sẽ đưa ra trên bus này địa chỉ của các ô nhớ có liên quan Lưu ý là bus địa chỉ là bus một chiều xuất phát từ CPU

Trang 17

BUS dữ liệu thường có từ 8, 16, 20, 24, 32 đến 64 đường dây tuỳ thuộc vào từng CPU cụ thể BUS dữ liệu là loại 2 chiều Các phần tử có đầu ra nối thẳng với bus dữ liệu đều phải được trang bị đầu ra 3 trạng thái để baỏ đảm cho bus hoạt động được bình thường

BUS điều khiển thường gồm hàng chục dây tín hiệu khác nhau, và xét theo cả nhóm thì đó là lọai bus 2 chiều

Thiết bị vào: biến đổi tín hiệu tự nhiên hoặc cho bởi con người sang dạng mã máy để bộ vi xử lý thực hiện Thiết bị vào thông dụng nhất có bàn phím, con chuột, máy quét scaner, thiết bị phân tích nhận dạng tiếng nói, CD-ROM

Thiết bị ra: biến đổi các mã bên trong máy tính sau khi xử lý để con người có thể hiểu được hoặc điều khiển các thiết bị khác Thiết bị ra thông dụng nhất có màn hình, máy in, faxmodem, máy vẽ, loa hay các thiết bị điều khiển khác

Câu hỏi 1: Phân loại các hệ thống máy tính

Câu hỏi 2: Trình bày các khái niệm cơ bản liên quan đến hệ vi xử lý

CHƯƠNG 2 TỔNG QUAN VỀ VI XỬ LÝ

MÃ BÀI: MH29-03

Mục tiêu:

- Trình bày cấu trúc bên trong và hoạt động của hệ vi xử lý

- Trình bày cấu trúc các thanh ghi của hệ vi xử lý

- Sử dụng tập lệnh Assembly để lập trình điều khiển hệ vi xử lý

- Khả năng tư duy tốt

- Tinh thần tương trợ lẫn nhau trong học tập

Nội dung chính:

1.Cấu trúc bên trong và hoạt động của hệ vi xử lý

Trang 18

Mục tiêu:

- Trình bày cấu trúc bên trong và hoạt động của hệ vi xử lý

Trang 19

Hình 2.1 Cấu trúc bộ vi xử lý 8086/8088

a Tổ chức của EU

EU là nơi xẩy ra các quá trình xử lý dữ liệu ở bên trong bộ VXL Ở đây

có đơn vị số học và lô gich ( ALU - arithmetic and logic unit) cùng với các thanh ghi để xử lý số liệu và ghi giữ các kết quả trung gian EU nhận các lệnh

và dữ liệu do BIU thu được rồi xử lý các thông tin đó Dữ liệu đã được xử lý trong EU lại được chuyển ra bộ nhớ hoặc các thiết bị ngoại vi thông qua BIU Như vậy EU không liên hệ trực tiếp với thế giới bên ngoài mà luôn luôn thông qua BIU

Đơn vị thực hiện EU gồm có 2 phần là ALU và khối các thanh ghi Các lệnh từ hàng đợi lệnh trong BIU được chuyển vào EU, giải mã và thực hiện tại đây Các lệnh được lấy từ trên xuống theo nguyên tắc FIFO (First in First out)

Trang 20

 Đơn vị số học-lôgic ALU

Đơn vị số học-lôgic ALU gồm các mạch có nhiệm vụ thực hiện các phép tính số học hoặc logic trên các số nhị phân theo từng cặp bit vào

 Khối điều khiển của EU

Trong khối điều khiển (CU-Control Unit) của EU có mạch giải mã lệnh

Mã lệnh đọc vào từ bộ nhớ được đưa đến đầu vào của bộ giải mã, các thông tin thu được từ đầu ra sẽ được đưa đến mạch tạo xung điều khiển từ đó nhận được các dãy xung khác nhau tuỳ thuộc vào mã lệnh để điều khiển hoạt động các bộ phận bên trong và bên ngoài CPU

b) Tổ chức của BIU

BIU gồm có mạch tạo địa chỉ và điều khiển BUS, nó có nhiệm vụ giúp khai thác tối đa khả năng của BUS Để bảo đảm được điều đó, BIU phải thực hiện 2 chức năng sau:

- Chức năng 1: nhận trước các lệnh, cất tạm vào dãy chứa lệnh nhờ đó

mà MP tăng được tốc độ tính toán

- Chức năng 2: đảm đương mọi chức năng điều khiển BUS để EU có thể tập trung vào việc xử lý dữ liệu và thực hiện lệnh Con trỏ lệnh chứa địa chỉ của lệnh thực hiện tiếp theo

BIU được dùng để trực tiếp truy xuất hoặc phối ghép với những bộ phận khác của máy tính

BIU gồm 3 khối chức năng sau:

- Đơn vị điều khiển BUS

- Hàng chứa lệnh

- Đơn vị điều khiển địa chỉ

 Đơn vị điều khiển BUS (Bus Control Unit)

Dùng để thực hiện các thao tác Bus đối với MP Nó tiếp nhận và tạo các lệnh, dữ liệu và các tín hiệu điều khiển giữa MP và các bộ phận khác của

hệ Ví dụ, xác định hướng di chuyển của dữ liệu trên BUS dữ liệu bằng đường dây điều khiển DT/R (Data Transmit/Receive) phát hoặc thu dữ liệu

 Hàng đợi lệnh (Instruction queue)

Dùng hàng đợi lệnh để làm nơi lưu giữ tạm thời các lệnh sẽ được thực hiện trong EU Thông qua đơn vị điều khiển bus, BIU nhận trước các lệnh và cất tạm chúng vào trong hàng chứa lệnh Đây là công việc chiếm nhiều thời gian hơn so với việc tính toán trong EU Do vậy BIU và EU cùng hoạt động song song bảo đảm nâng cao hiệu quả làm việc của MP

Hàng đợi lệnh là bộ nhớ kiểu FIFO (First In First Out), có nghĩa lệnh được nạp vào trước sẽ được lấy ra trước Bộ vi xử lý 8088 có hàng đợi lệnh 4 bytes (8 bit) còn 8086 có hàng đợi lệnh 3 từ (mỗi từ 16 bit) Chính vì vậy tại mỗi thời điểm nó mang 1 từ (16 bit) thông tin Đây là 1 điểm khác nhau quan trọng nữa giữa 2 bộ VXL

 Đơn vị điều khiển địa chỉ (Address Control Unit)

MP 8088/8086 có 20 đường địa chỉ (20 bit) vì vậy có khả năng đánh địa chỉ đến 1 Mb Đơn vị điều khiển địa chỉ phối hợp hoạt động với con trỏ

Trang 21

lệnh, các thanh ghi đoạn và mạch tạo địa chỉ để xác định địa chỉ ô nhớ như được vẽ trong hình 2.3

* Con trỏ lệnh - IP (Instruction Pointer)

Là một thanh ghi 16 bit dùng để trỏ vào lệnh tiếp theo sẽ được thực hiện nằm trong đoạn mã CS Mỗi lần đơn vị thực hiện EU nhận 1 lệnh thì con trỏ lệnh được tăng lên để chỉ rõ lệnh được thực hiện tiếp theo trong chương trình Địa chỉ đầy đủ của lệnh tiếp theo này được xác định bởi cặp CS:IP

 Cấu trúc chung của bộ vi xử lý 80286

Bộ xử lý 80286 Intel là bộ vi xử lý 16 bit nằm trong họ vi xử lý IAPX

86 Những đặc trưng cơ bản của 80286 là:

- Tần số xung nhịp 16MHz

- Khả năng địa chỉ hoá được 16MB bộ nhớ vật lý và 1GB nhớ ảo

- Có khả năng làm việc với các bộ đồng xử lý

Trong chế độ địa chỉ thực 80286 có mã lệnh tương thích với tập lệnh của các bộ vi xử lý 8086 và 8088 nhưng tốc độ làm việc nhanh hơn do tần số xung nhịp đồng bộ của 80286 cao hơn (có thể đạt tới 16MHz) Khả năng địa chỉ hoá bộ nhớ vật lý lớn nhất là 16MB (224) Tuy nhiên, trong chế độ địa chỉ thực, 80286 chỉ sử dụng các đường địa chỉ A0 – A19 để đánh địa chỉ nên có thể quản lý được 1MB (220) ngăn nhớ

Trong chế độ địa chỉ ảo, bộ vi xử lý 80286 có mã gốc tương thích với tập lệnh của 8086 và 8088 Khả năng địa chỉ hoá ở chế độ này là 16MB bộ nhớ vật lý và 1GB nhớ ảo (230) Chế độ này thực hiện được cơ chế bảo vệ bộ nhớ và sử dụng đơn vị quản lý bộ nhớ ở bên trong bản thân bộ vi xử lý 80286

Các tín hiệu của 80286 được phân theo nhóm và được tổ chức như ở hình 2.1 CLK là tín hiệu xung đồng bộ cho bộ vi xử lý Tần số vào CLK sẽ được chia đôi ở bên trong 80286 Như vậy, một chu kỳ PCLK được tạo thành

từ hai chu kỳ CLK Mỗi CLK được gọi là một pha của 80286 ( 1 và 2)

Cap là chân gắn tụ lọc nhiễu Tụ điện này có trị số 0,047F  20%, 12V được nối giữa chân CAP (chân 52) với đất để khử nhiễu xung có độ rộng hẹp của nguồn điện nuôi

D0 – D15 là 16 bit của kênh dữ liệu hai chiều, ba trạng thái và có mức tích cực là logic1

Trang 22

Hình 2.2 Tổ chức chân tín hiệu của bộ vi xử lý 80286

A 0 - A 23 là kênh địa chỉ Kênh này gồm 24 dãy địa chỉ dùng để địa chỉ hóa cho các bộ nhở vật lý và cho các cổng vào / ra Dung lượng bộ nhở có thể địa chỉ hóa trực tiếp được là 224 = 16M byte Khi làm việc với các cổng vào / ra thì các chân địa chỉ quản lý trực tiếp được 64 KB cổng vào / ra

/BHE là tín hiệu cho phép chọn phần cao của kênh dữ liệu M/IO được

dùng để phân biệt quá trình quy chiếu bộ nhớ với quá trình quy chiếu cổng

vào / ra Tín hiệu /BHE kết hợp với A0 cho biết dữ liệu được truyền theo byte hay từ

Mã của các phương thức truyền được cho bởi bảng sau:

80286 quy chiếu cổng vào/ra thông tin thì tín hiệu này M/ IO = 0 ( kể cả chu

kỳ trả lời ngắt )

INTA

Trang 23

Cod/ cùng với các tín hiệu M/ IO , /S 1 , /S 0 cho phép phân biệt chu kỳ nhận lệnh và chu kỳ đọc dữ liệu từ bộ nhớ Nó cũng được dùng để xác

định chu kỳ trả lời ngắt, chu kỳ đọc cổng vào / ra và chu kỳ ghi cổng vào / ra

/S 1 và /S 0 sẽ xác định thời điểm ban đầu của chu kỳ máy

/READY là tín hiệu sẵn sàng làm việc của tín hiệu ngoại vi INTR là

tín hiệu yêu cầu ngắt của tín hiệu ngoại vi Yêu cầu ngắt này sẽ bị che nếu bít

IF ở thanh ghi cờ có giá trị logic 0

Bộ vi xử lý 80286 trả lời ngắt bằng hai chu kỳ /INTA : Một chu kỳ

thông báo cho mạch điều khiển ngắt ( ví dụ 80289) biết là yêu cầu ngắt đã được chấp nhận và chu kỳ thứ hai sẽ đọc vectơ ngắt từ mạch điều khiển ngắt

Tín hiệu INTR phải ở mức tích cực ít nhất là hai chu kỳ trước lúc kết thúc lệnh đang thực hiện và phải duy trì cho đến cuối chu kỳ /INTA thứ nhất

NMI là tín hiệu ngắt không che được Nó phản ứng với sườn lên của

xung kích Lưu ý rằng muốn ngắt bằng tín hiệu này thì xung kích phải kéo dài mức 0 đúng 4 chu kỳ nhịp rồi mới chuyển sang mức 1 và duy trì mức này 4 chu kỳ nhịp

HOLD và HLDA là tín hiệu phục vụ cho chế độ thâm nhập trực tiếp DMA

LOCK là tín hiệu cấm các bộ vi xử lý khác ( trong chế độ làm việc

song song) dành quyền làm chủ kênh hệ thống Lệnh LOCK khởi động tín

hiệu trên và nó sẽ trở thành mức tích cực một cách tự động khi thực hiện lệnh

Trang 24

XCHG hoặc ở chu kỳ /INTA hoặc trong thời gian thâm nhập bảng các bộ mô

tả

PEREQ và /PEACK phục vụ chế độ đối thoại giữa bộ vi xử lý 80286

với các bộ đồng xử lý ví dụ như bộ đồng xử lý 80287 Tín hiệu PEREQ ở

mức logic 1 là tín hiệu yêu cầu 80286 gửi một toán hạng cho bộ đồng xử lý

Tín hiệu /PEACK thông

báo cho bộ đồng xử lý biết toán hạng mà nó yêu cầu đang được chuyển tới

/BUSY và /ERROR là tín hiệu điều khiển cho bộ đồng xử lý /BUSY

thông báo cho 80286 biết rằng bộ đồng xử lý đang bận Lúc này bộ vi xử lý

80286 thực hiện các lệnh ESC và WAIT để đợi bộ đồng xử lý tín hiệu

/ERROR sẽ báo cho 80286 biết rằng bộ đồng xử lý phát hiện điều kiện ngoịa

lệ không che được

RESET là tín hiệu khởi động có mức tích cực là mức logic 1 Tín hiệu

này sẽ lập trạng thái ban đầu cho tất cả các thành phần cần thiết của hệ vi tính Khi có RESET thì các tín hiệu ra có mức logic như sau

Bộ vi xử lý 80286 được cấu tạo từ 4 đơn vị có thể làm việc song song

Đó là các đơn vị : BU (BUS UNIT) IU(INSTRUCTION UNIT), EU ( EXECUTE UNIT ) và AU ( ADDRESSED UNIT )

Đơn vị BU phát sinh các tín hiệu địa chỉ Dữ liệu và thông tin điều khiển để thâm nhập vào bộ nhớ hay vào các cổng vào ra Nó cho phép thiết lập các quan hệ với các bộ đồng xử lý hoặc với các bộ xử lý đang làm chủ kênh Đơn vị này cho phép quá trình nhận lệnh diễn ra song song với các quá trình khác nhờ có tệp đệm 6 byte Nó cho phép loại trừ thời gian chết khi nhận lệnh từ bộ nhớ

Đơn vị lệnh IU nhận lệnh từ tệp đệm, giải mã rồi đưa vào tệp đợi Tệp đợi chứa 3 lệnh

Đơn vị thực hiện EU sẽ thực hiện lệnh đã được giải mã trong tệp đợi

nó liên hệ với bộ nhớ và cổng vào / ra thông qua đơn vị BU

Đơn vị địa chỉ AU bảo đảm việc bảo vệ, quản lý bộ nhớ và chuyển địa chỉ logic ( địa chỉ ảo) thành địa chỉ vật lý ( địa chỉ thực ) cho đơn vị điều

khiển kênh BU

2.Cấu trúc các thanh ghi

Mục tiêu:

- Trình bày cấu trúc các thanh ghi của hệ vi xử lý

 Các thanh ghi đa năng (General Register):

Trang 25

Bao gồm 4 thanh ghi dữ liệu (data register) 16 bit trong khối EU Các thanh ghi này được sử dụng để lưu giữ tạm các kết quả trung gian và được ký hiệu là AX, BX, CX, DX Đặc điểm của các thanh ghi này là trong trường hợp cần chứa dữ liệu 8 bit thì mỗi thanh ghi có thể được chia làm 2 nửa 8 bit: nửa cao (ứng với ký hiệu H) và nửa thấp (ứng với ký hiệu L) Như vậy các thanh ghi đa năng có thể dùng nửa 8 bit để lưu theo Byte hoặc kết hợp 2 nửa

để lưu theo Từ Bảng 2.1 giới thiệu các thanh ghi đa năng

Chúng ta sẽ xem xét cụ thể hơn từng thanh ghi

Bảng 2.1 Các thanh ghi đa năng

- Thanh ghi AX (accumulator - Acc): thanh ghi tích luỹ (thanh chứa), là thanh ghi chính để thực hiện các phép toán số học, các lệnh xuất nhập cổng Kết quả của các thao tác thường được lưu giữ ở đây Nếu kết quả là 8 bit thì thanh ghi

AL được coi là Acc

- BX (base): thanh ghi cơ sở, dùng để chỉ đến vị trí 1 ô nhớ trong 1 đoạn

- CX (count): bộ đếm, dùng để chứa số lần lặp của lệnh lặp LOOP

- DX (data): Thanh ghi dữ liệu, thường dùng để lưu kết quả của các phép tính nhân, chia và định địa chỉ cổng trong các lệnh xuất, nhập cổng

 Các thanh ghi con trỏ và chỉ số

Trong đơn vị EU có 2 thanh ghi con trỏ (Pointer Register) được ký hiệu

là SP, BP và 2 thanh ghi chỉ số (Index Register) được ký hiệu là SI và DI Đây là các thanh ghi 16 bit và khác với thanh ghi đa năng, chúng không thể chia thành 2 nửa 8 bit được

Các thanh ghi này thường được dùng chủ yếu là để trỏ hoặc ghi chỉ số nhằm vào 1 địa chỉ trong bộ nhớ Các địa chỉ được chứa trong các thanh ghi này có thể được liên hợp với các thông tin từ BIU để định vị trí thực của dữ liệu trong bộ nhớ

Bảng 2.2 Thanh ghi con trỏ và chỉ số trong EU

Trang 26

sau lệnh gọi vào ngăn xếp Khi thực hiện xong chương trình con hoặc ngắt thì CPU sẽ lấy địa chỉ này ra khỏi stack để có thể thực hiện lệnh kế tiếp

Ngăn xếp làm việc theo nguyên tắc LIFO (Last In First Out)

Để quản lý ngăn xếp cần sử dụng con trỏ để chỉ đến đỉnh của ngăn xếp

- SP (stack pointer): con trỏ ngăn xếp, được dùng làm con trỏ để chỉ đến phần tử ở đỉnh của ngăn xếp nằm trong đoạn ngăn xếp SS Địa chỉ đầy đủ của đỉnh ngăn xếp là SS:SP

SI và DI được dùng trong các lệnh xử lý chuỗi và trong các phép định địa chỉ chỉ mục khi truy xuất bộ nhớ

- SI (source index): chỉ số nguồn, dùng để xác định địa chỉ dữ liệu nguồn trong đoạn dữ liệu DS Địa chỉ đầy đủ của dữ liệu nguồn là DS:SI

- DI (destination index): chỉ số đích, dùng để xác định địa chỉ của dữ liệu đích trong đoạn dữ liệu DS Địa chỉ đầy đủ của dữ liệu đích là DS:DI

Riêng trong trường hợp thao tác với dữ liệu dạng chuỗi thì cặp địa chỉ DS:SI sẽ chỉ phần tử của chuỗi nguồn, còn cặp ES:DI sẽ chỉ phần tử của chuỗi đích

Tóm lại: Về các thanh ghi đa năng, thanh ghi con trỏ, chỉ số được sử dụng hầu hết ở các phép tính số học và lôgich Bảng 2.3 giới thiệu các chức năng ngầm định của các thanh ghi đó

Bảng 2.3 Chức năng ngầm định các thanh ghi

Phép tính chuỗi, phép tính lặp Dịch chuyển, quay vòng Nhân, chia, I/O gián tiếp Các thao tác với ngăn xếp Các thao tác với chuỗi Các thao tác với chuỗi

 Thanh ghi cờ (FR - Flag register)

Là thanh ghi 16 bit dùng để lưu giữ thông tin về các trạng thái công tác của

EU hoặc kết quả phép toán do ALU thực hiện Căn cứ vào trạng thái các cờ

mà người lập trình có thể sử dụng các lệnh thích hợp tiếp theo cho bộ vi xử lý

tin (hình 2.2)

Cờ OF DF IF TF SF ZF AF PF CF

Hình 2.2 Thanh ghi cờ của bộ vi xử lý 8086/88

Ý nghĩa và công dụng của các cờ được giới thiệu ở bảng 2.4

Bảng 2.4 Ý nghĩa các cờ

Trang 27

Cờ phụ-Chỉ thị nếu số nhớ vượt 4 LSB

Cờ nhớ-Chỉ thị nếu số nhớ vượt 4 MSB

Cờ tràn-Chỉ thị nếu kết quả vượt thang

Cờ dấu-Chỉ thị nếu kết quả âm

Cờ chẵn-Chỉ thị nếu ở kết quả số các số 1 chẵn

Cờ zero- Chỉ thị nếu kết quả bằng 0

Trap Flag

Cờ hướng-nếu DF=1 thực hiện theo chiều giảm

Cờ ngắt- báo MP biết yêu cầu ngắt

Cờ bẫy- đặt MP vào chế độ chạy từng lệnh

Trong đó các cờ từ 16 phản ánh trạng thái của kết quả sau một thao tác nào

đó Các cờ còn lại từ 79 là cờ điều khiển và được lập hoặc xoá bằng các lệnh riêng

* Các thanh ghi đoạn (Segment Register)

Gồm có 4 thanh:

- Thanh ghi đoạn mã (Code segment - CS): Chỉ ra đoạn bộ nhớ mã

- Thanh ghi đoạn dữ liệu (Data segment - DS): Chỉ ra đoạn bộ nhớ dữ liệu

- Thanh ghi đoạn ngăn xếp (Stack segment - SS): Cho biết đoạn bộ nhớ dùng làm ngăn xếp

- Thanh ghi đoạn phụ (Extra segment - ES): Chỉ ra đoạn nhớ phụ được dùng

để cất giữ dữ liệu Mỗi đoạn của bộ nhớ có thể dài đến 64 Kb MP8086/8088

sử dụng 20 đường địa chỉ nên có thể lập địa chỉ cho 220 = 1048576 ô nhớ (byte) Đây là điều gây khó khăn bởi vì các thanh ghi của MP đều sử dụng độ dài 16 bit Để khắc phục vấn đề này người ta đưa ra khái niệm địa chỉ đoạn và địa chỉ offset (hay gọi là độ lệch, độ dời) Các thanh ghi đoạn 16 bit CS, DS,

SS và ES được dùng để xác định địa chỉ đoạn Sử dụng các thanh ghi offset:

IP, SP, BP, SI, DI để xác định địa chỉ dịch chuyển tính từ địa chỉ đoạn Cụ thể

là địa chỉ đoạn sẽ được dịch trái 1 khoảng 4 bit kết hợp với địa chỉ offset giữ nguyên sẽ tạo thành cách xác định địa chỉ 20 bit

Ví dụ:



Cũng có thể xác định địa chỉ vật lý theo công thức:

Địa chỉ vật lý = Thanh ghi đoạn x 16 + Thanh ghi lệch

Có thể sử dụng ký hiệu để xác định địa chỉ logic:

Thanh ghi đoạn:Thanh ghi lệch

hoặc Segment:offset

Trang 28

Bảng dưới trình bày các thanh ghi đoạn, thanh ghi offset và loại thao tác được thực hiện

Bảng 2.5 Thao tác của các thanh ghi

 Các thanh ghi mảng

CS : là thanh ghi mảng lệnh ( COMMAND SEGMENT)

DS : là thanh ghi mảng dữ liệu ( DATA SEGMENT )

SS : là thanh ghi mảng ngăn xếp ( STACK SEGMENT)

ES : là thanh ghi mảng dữ liệu mở rộng ( EXTRA SEGMENT )

Các thanh ghi mảng đôi ghi còn gọi là bộ chọn mảng ( chọn đoạn)

3.Tập lệnh Macro của bộ vi xử lý

Mục tiêu:

- Sử dụng tập lệnh Assembly để lập trình điều khiển hệ vi xử lý

- Khả năng tư duy tốt

3.1 Nhóm lệnh chuyển dữ liệu

3.1.1 Nhóm lệnh chuyển dữ liệu đa dụng

* Lệnh MOV dst,src: chuyển nội dung toán hạng src vào toán hạng dst

Toán hạng nguồn src có thể là thanh ghi (reg), bộ nhớ (mem) hay giá trị tức thời (immed); toán hạng đích dst có thể là reg hay mem

Lệnh MOV có thể có các trường hợp sau:

Reg8 ← reg8 MOV AL,AH

Reg16 ← reg16 MOV AX,BX

Mem8 ← reg8 MOV [BX],AL

Reg8 ← mem8 MOV AL,[BX]

Mem16 ← reg16 MOV [BX],AX

Reg16 ← mem16 MOV AX,[BX]

Reg8 ← immed8 MOV AL,04h

Mem8 ← immed8 MOV mem[BX],01h

Reg16 ← immed16 MOV AL,0F104h

Mem16 ← immed16 MOV mem[BX],0101h

SegReg ← reg16 MOV DS,AX

SegReg ← mem16 MOV DS,mem

Reg16 ← segreg MOV AX,DS

Mem16 ← segreg MOV [BX],DS

- Lệnh MOV không ảnh hưởng đến các cờ

- Không thể chuyển trực tiếp dữ liệu giữa hai ô nhớ mà phải thông qua một

thanh ghi

MOV AX,mem1

Trang 29

MOV mem2,AX

- Không thể chuyển giá trị trực tiếp vào thanh ghi đoạn

MOV AX,1010h

MOV DS,AX

- Không thể chuyển trực tiếp giữa 2 thanh ghi đoạn

- Không thể dùng thanh ghi CS làm toán hạng đích

* Lệnh XCHG dst,src: (Exchange) hoán chuyển nội dung 2 toán hạng Toán hạng chỉ có thể là reg hay mem

- Lệnh XCHG không ảnh hưởng đến các cờ

- Không thể dùng cho các thanh ghi đoạn

* Lệnh PUSH src: cất nội dung một thanh ghi vào stack Toán hạng là reg16

* Lệnh POP dst: lấy dữ liệu 16 bit từ stack đưa vào toán hạng dst

Ta có thể dùng nhiều lệnh PUSH để cất dữ liệu vào stack nhưng khi dùng

lệnh POP để lấy dữ liệu ra thì phải dùng theo thứ tự ngược lại

PUSH AX PUSH BX PUSH CX

… POP CX POP BX POP AX

* Lệnh XLAT [src]: chuyển nội dung của ô nhớ 8 bit vào thanh ghi

AL Địa

chỉ ô nhớ xác định bằng cặp thanh ghi DS:BX (nếu không chỉ ra src) hay

src, địa chỉ offset chứa trong thanh ghi AL

Lệnh XLAT tương đương với các lệnh:

MOV AH,0 MOV SI,AX MOV AL,[BX+SI]

nhớ toán hạng mem32 vào cặp thanh ghi DS:reg16

Lệnh LDS AX,mem tương đương với:

MOV AX,mem

MOV BX,mem+2

Trang 30

vào các bit 7,6,4,2 và 0 của thanh ghi AH (3 bit còn lại không đổi)

* Lệnh SAHF: (Store AH into flag) chuyển các bit 7,6,4,2 và 0 của thanh

ghi AH vào các cờ SF, ZF, AF, PF và CF

* Lệnh PUSHF: chuyển thanh ghi cờ vào stack

* Lệnh POPF: lấy dữ liệu từ stack chuyển vào thanh ghi cờ

3.1.4 Nhóm lệnh chuyển dữ liệu qua cổng

Mỗi I/O port giao tiếp với CPU sẽ có một địa chỉ 16 bit cho nó CPU gởi hay

nhận dữ liệu từ cổng bằng cách chỉ đến địa chỉ cổng đó Tuỳ theo chức năng mà cổng có thể: chỉ đọc dữ liệu (input port), chỉ ghi dữ liệu (output port) hay có thể đọc và ghi dữ liệu (input/output port)

* Lệnh IN: đọc dữ liệu từ cổng và đưa vào thanh ghi AL

IN AL,port8

IN AL,DX

Nếu địa chỉ port chỉ có 8 bit thì có thể đưa giá trị trực tiếp vào, nếu là 16 bit

thì phải thông qua thanh ghi AX

* Lệnh OUT: ghi dữ liệu trong thanh ghi AL ra cổng

IN AL,DX ; Đọc dữ liệu từ cổng máy in

3.2 Nhóm lệnh chuyển điều khiển

3.2.1 Lệnh nhảy không điều kiện JMP

JMP label

JMP reg/mem

Lệnh JMP dùng để chuyển điều khiển chương trình từ vị trí này sang vị trí

khác (thay đổi nội dung cặp thanh ghi CS:IP)

3.2.2 Lệnh nhảy có điều kiện

Trang 31

Lệnh nhảy có điều kiện chỉ sử dụng cho các nhãn nằm trong khoảng từ –127

đến 128 byte so với vị trí của lệnh

*Lệnh JA label: (Jump if Above)

* Lệnh JBE label: (Jump if Below or Equal)

Nếu CF = 1 hoặc ZF = 1 thì JMP label

* Lệnh JNA label: (Jump if Not Above)

* Lệnh JLE label: (Jump if Less or Equal)

Nếu CF <> OF hoặc ZF = 1 thì JMP label

* Lệnh JNG label: (Jump if Not Greater)

Trang 32

Lệnh CMP dùng để so sánh nội dung 2 toán hạng, kết quả chứa vào thanh ghi

cờ và không làm thay đổi nội dung các toán hạng

VD: Đoạn chương trình so sánh 2 số A và B: A >B thì nhảy đến label1, A = B thì nhảy đến label2, A < B thì nhảy đến label3

Trang 33

RETF dùng để kết thúc chương trình con dạng far

Trong trường hợp lệnh RET có hằng số n theo sau thì sẽ cộng với thanh ghi

SP giá trị n (n phải là số chẵn) Lệnh này dùng để loại bỏ một số tham

số chương trình con sử dụng ra khỏi stack

- Không thể cộng trực tiếp 2 thanh ghi đoạn

- Lệnh ADD ảnh hưởng đến các cờ sau:

+ Cờ CF: = 1 khi kết quả phép cộng có nhớ hay có mượn

+ Cờ AF: = 1 khi kết quả phép cộng có nhớ hay có mượn đối với 4 bit thấp

+ Cờ PF: = 1 khi kết quả phép cộng có tổng 8 bit thấp là một số chẵn + Cờ ZF: = 1 khi kết quả phép cộng là 0

+ Cờ SF: = 1 nếu kết quả phép cộng là một số âm

+ Cờ OF: = 1 nếu kết quả phép cộng bị sai dấu, nghĩa là vượt ra ngoài phạm vi lớn nhất hay nhỏ nhất mà số có dấu có thể chứa trong toán hạng dst

* Lệnh ADC dst, src: (Add with Carry)

dst ← dst + src + CF

Trang 34

Lệnh ADC thường dùng để cộng các số lớn hơn 16 bit

* Lệnh INC dst: (Increment)

dst ← dst + 1

Dst có thể là reg hay mem

* Lệnh AAA: (ASCII Adjust for Addition)

Hiệu chỉnh kết quả phép cộng 2 số BCD dạng không nén (mỗi chữ số BCD

* Lệnh DAA: (Decimal Adjust for Addition)

Hiệu chỉnh kết quả phép cộng 2 số BCD dạng nén (mỗi chữ số BCD lưu bằng

4 bit, nghĩa là 1 byte biểu diễn được các số nguyên từ 0 đến 99)

reg hay mem

- Không thể trừ trực tiếp thanh ghi đoạn

- Ảnh hưởng đến các cờ AF, CF, OF, PF, SF và ZF

Trang 35

dst ← - dst

dst là reg hay mem

Lệnh NEG ảnh hưởng đến các cờ:

CF = 1 nếu nội dung kết quả là số khác 0

SF = 1 nếu nội dung kết quả là số âm khác 0

PF = 1 nếu tổng 8 bit thấp là một số chẵn

ZF = 1 nếu nội dung kết quả là 0

OF = 1 nếu nội dung toán hạng dst là 80h (dạng byte) hay 8000h (dạng word)

* Lệnh AAS: (Ascii Adjust for Substract)

Hiệu chỉnh kết quả phép trừ 2 số BCD dạng không nén (mỗi chữ số BCD lưu

bằng 1 byte) Lệnh AAS chỉ ảnh hưởng cờ AF và CF

* Lệnh DAS: (Decimal Adjust for Substract)

Hiệu chỉnh kết quả phép trừ 2 số BCD dạng nén (mỗi chữ số BCD lưu bằng 4

bit) Lệnh AAS chỉ ảnh hưởng cờ AF và CF

4.Dùng Assembly để thiết lập các tập lệnh điều khiển

ADD AX,CX ; Cộng BX với CX

SHL AX,1 ; Nhân đôi

4.2.Cấu trúc IF – THEN, IF – THEN – ELSE

IF Điều kiện THEN Công việc

IF Điều kiện THEN Công việc1 ELSE Công việc2

VD: Gán BX = |AX|

Trang 36

CMP AX,0 ; AX > 0?

JNL DUONG ; AX dương

NEG AX ; Nếu AX < 0 thì đảo dấu

DUONG: MOV BX,AX

Giá trị 1: Công việc 1

Giá trị 2: Công việc 2

FOR Số lần lặp DO Công việc

VD: Cho vùng nhớ M dài 200 bytes trong đoạn dữ liệu, chương trình đếm số

chữ A trong vùng nhớ M như sau:

MOV CX,200 ; Đếm 200 bytes

MOV BX,OFFSET M ; Lấy địa chỉ vùng nhớ

XOR AX,AX ; AX = 0

NEXT: CMP BYTE PTR [BX],'A'; So sánh với chữ A

JNZ ChuA ; Nếu không phải là chữ A thì tiếp

INC AX ; tục, ngược lại thì tăng AX

Trang 37

VD: Chương trình đọc vùng nhớ bắt đầu tại địa chỉ 1000h vào thanh ghi AH,

REPEAT Công việc UNTIL Điều kiện

VD: Chương trình đọc vùng nhớ bắt đầu tại địa chỉ 1000h vào thanh ghi AH,

Trang 38

Bài 3 : Viết chương trình chuyển nội dung 66h vào các ô nhớ 30h sau đó

chuyển nội dung của ô nhớ 30h vào thanh ghi AL

MÃ BÀI: MH29-04

Mục tiêu:

- Xác định được các mạch giải mã địa chỉ

- Khả năng tư duy tốt

- Tinh thần tương trợ lẫn nhau trong học tập

Trang 39

1.1 Các thanh ghi

μP 8086/8088 có tất cả 14 thanh ghi nội Các thanh ghi này có thể phân loại như sau:

- Thanh ghi dữ liệu (data register)

- Thanh ghi chỉ số và con trỏ (index & pointer register)

- Thanh ghi đoạn (segment register)

- Thanh ghi trạng thái và điều khiển (status & control register)

1.1.1 Các thanh ghi dữ liệu

Các thanh ghi dữ liệu gồm có các thanh ghi 16 bit AX, BX, CX và DX trong đó nửa cao và nửa thấp của mỗi thanh ghi có thể định địa chỉ một cách độc lập Các nửa thanh ghi này (8 bit) có tên là AH và AL, BH và BL, CH và

CL, DH và DL

Các thanh ghi này được sử dụng trong các phép toán số học và logic hay trong quá trình chuyển dữ liệu

DIV, IDIV (toán hạng nguồn kích thước word)

IN (nhập word) OUT (xuất word) CWD

Các phép toán xử lý chuỗi (string)

DIV, IDIV (toán hạng nguồn kích thước byte)

IN (nhập byte) OUT (xuất byte) XLAT

AAA, AAD, AAM, AAS (các phép toán ASCII) CBW (đổi sang word)

DAA, DAS (số thập phân) Các phép toán xử lý chuỗi (string)

DIV, IDIV (toán hạng nguồn kích thước byte) CBW (đổi sang word)

Các phép toán string với tiếp dầu ngữ REP

SHR, SAR, SAL (dịch với số đếm byte)

DIV, IDIV (toán hạng nguồn kích thước word)

AX (ACC – Accumulator): thanh ghi tích luỹ

BX (Base): thanh ghi cơ sở

Trang 40

CX (Count): đếm

DX (Data): thanh ghi dữ liệu

1.1.2 Các thanh ghi chỉ số và con trỏ

Bao gồm các thanh ghi 16 bit SP, BP, SI và DI, thường chứa các giá trị offset (độ lệch) cho các phần tử định địa chỉ trong một phân đoạn (segment) Chúng có thể được sử dụng trong các phép toán số học và logic Hai thanh ghi con trỏ (SP – Stack Pointer và BP – Base Pointer) cho phép truy xuất dễ dàng đến các phần tử đang ở trong ngăn xếp (stack) hiện hành Các thanh ghi chỉ số (SI – Source Index và DI – Destination Index) được dùng để truy xuất các phần tử trong các đoạn dữ liệu và đoạn thêm (extra segment) Thông thường, các thanh ghi con trỏ liên hệ đến đoạn stack hiện hành và các thanh ghi chỉ số liên hệ đến doạn dữ liệu hiện hành SI và DI dùng trong các phép toán chuỗi

1.1.3 Các thanh ghi đoạn

Bao gồm các thanh ghi 16 bit CS (Code segment), DS (Data segment), SS (stack segment) và ES (extra segment), dùng để định địa chỉ vùng nhớ 1 MB bằng cách chia thành 16 đoạn 64 KB

Tất cả các lệnh phải ở trong đoạn mã hiện hành, được định địa chỉ thông qua thanh ghi CS Offset (độ lệch) của mã được xác định bằng thanh ghi IP

Dữ liệu chương trình thường được đặt ở đoạn dữ liệu, định vị thông qua thanh ghi DS Stack định vị thông qua thanh ghi SS Thanh ghi đoạn thêm có thể sử dụng để định địa chỉ các toán hạng, dữ liệu, bộ nhớ và các phần tử khác ngoài đoạn dữ liệu và stack hiện hành

1.1.4 Các thanh ghi điều khiển và trạng thái

Thanh ghi con trỏ lệnh IP (Instruction Pointer) giống như bộ đếm chương trình (Program Counter) Thanh ghi điều khiển này do BIU quản lý nhằm lưu trữ offset từ bắt đầu đoạn mã đến lệnh thực thi kế tiếp Ta không thể xử lý trực tiếp trên thanh ghi IP

Thanh ghi cờ (Flag register) hay từ trạng thái 16 bit chứa 3 bit điều khiển (TF, IF và DF) và 6 bit trạng thái (OF, SF, ZF, AF, PF và CF) còn các bit còn lại mà 8086/8088 không sử dụng thì không thể truy xuất được

- OF (Overflow - tràn): OF = 1 xác định tràn số học, xảy ra khi kết quả vượt ra ngoài phạm vi biểu diễn

- DF (Direction- hướng): xác định hướng chuyển string, DF = 1 khi μP làm việc với string theo thứ tự từ phải sang trái

- IF (Interrupt - ngắt): cho phép hay cấm các interrupt có mặt nạ

- TF (Trap - bẫy): đặt μP vào chế độ từng bước, dùng cho các chương trình gỡ rối (debugger)

- SF (Sign - dấu): dùng để chỉ các kết quả số học là số dương (SF = 0) hay âm (SF = 1)

- ZF (Zero): = 1 nếu kết quả của phép toán trước là 0

- AF (Auxiliary – nhớ phụ): dùng trong các số thập phân để chỉ nhớ từ nửa byte thấp hay mượn từ nửa byte cao

Ngày đăng: 17/06/2020, 15:33

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm