Để thực hiện được những công việc nhận dữ liệu từ các thiết bị khác để xử lý hoặc gửi dữ liệu đi để điều khiển các thiết bị khác thì công việc giao tiếp giữa hai hệ vi xử lý với nhau hay
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN – ĐIỆN TỬ
LUẬN VĂN TỐT NGHIỆP Đề tài:
GIAO TIẾP MÁY TÍNH VỚI
Trang 2TP.HOÀ CHÍ MINH
2 – 2000
Trang 3ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN - ĐIỆN TỬ
LUẬN VĂN TỐT NGHIỆP
Đề tài:
GIAO TIẾP MÁY TÍNH
VỚI KIT VI XỬ LÝ 8086
PHẦN 1: GIỚI THIỆU CHUNG
CHƯƠNG DẨN NHẬP
CHƯƠNG CƠ SỞ LÝ LUẬN
CHƯƠNG I: CẤU TRÚC VI XỬ LÝ 8086
CHƯƠNG II: KHẢO SÁT TỔNG QUÁT TẬP LỆNH 8086
CHƯƠNG III: GIAO TIẾP VỚI MÁY TÍNH
PHẦN 2 : PHẦN CỨNG VÀ PHẦN MỀM CỦA Û MẠCH
GIAO TIẾP
CHƯƠNG IV: GIỚI THIỆU KIT VXL 8086
CHƯƠNG V: GIAO TIẾP NỐI TIẾP DÙNG VI MẠCH
8251A
CHƯƠNG VI: CHƯƠNG TRÌNH GIAO TIẾP ( CHƯƠNG
TRÌNH TRUYỀN, NHẬN DỮ LIỆU)
HƯỚNG PHÁT TRIỂN ĐỀ TÀI
KẾT LUẬN ĐÁNH GIÁ
PHỤ LỤC
TÀI LIỆU THAM KHẢO
Giáo viên hướng dẫn: NGUYỄN ĐÌNH PHÚ Sinh viên thực hiện: PHẠM XUÂN HƯNG
Trang 5BỘ GIÁO DỤC& ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH ĐỘC LẬP – TỰ DO – HẠNH PHÚC
ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH _
KHOA ĐIỆN BỘ MÔN ĐIỆN – ĐIỆN TỬ
NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
Họ và tên sinh viên : PHẠM XUÂN HƯNG
Lớp : 95KĐĐ
Ngành : Kỹ thuật Điện – Điện tử
8086
2 Các số liệu ban đầu:
………
………
………
………
3 Nội dung các phần thuyết minh tính toán: ………
………
………
………
4 Các bản vẽ: ………
………
………
6 Ngày giao nhiệm vụ :
7 Ngày hoàn thành nhiệm vụ: 25/2/2000
Giáo viên hướng dẫn: Thông qua Bộ môn
Ngày tháng năm 1999
Trang 6NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG
DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 7………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Giáo viên hướng dẫn
Trang 8NHẬN XÉT CỦA GIÁO VIÊN PHẢN
BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 9………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Giáo viên phản biện
Trang 10Lời cảm tạ
Trong thời gian thực hiện đề tài sinh viên thực hiện đã học hỏi được nhiều điều bổ ích từ thầy hướng hẫn, các thầy cô và các bạn.
Sinh viên thực hiện xin bày tỏ lòng biết ơn đến thầy Nguyễn Đình Phú trên cương vị là người hướng dẫn đề tài đã tận tình hướng dẫn và tạo điều kiện thuận lợi cho em hoàn thành tốt đề tài.
Sinh viên thực hiện cũng xin chân thành cảm ơn các thầy, các cô trong khoa cùng các bạn đã đóng góp ý kiến và kinh ngiệm qúy báu trong qúa trình thực hiện đề tài này.
TP.HỒ CHÍ MINH Ngày 25 tháng 2 năm 2000
Sinh viên thực hiện Phạm Xuân Hưng
Trang 11MỤC LỤC
Phần 1: Phần giới thiệu
Chương dẫn nhập
Chương cơ sở lý luận
I Xây dựng đề cương luận văn
II Kế hoạch nghiên cứu
Chương I: Cấu trúc bên trong của VXL 8086
I Cấu tạo bên trong
1 khối thực hiện
2 khối phối phối ghép bus
3 sơ đồ khối bên trong
II Cấu trúc bên trong và chức năng của VXL 8086
1 sơ đồ chân của VXL 8086
2 chức năng các chân
III Các phương pháp định địa chỉ của 8086
Chương II: Khảo sát tổng quát tập lệnh của VXL 8086
I cách mã hóa lệnh
II khảo sát tổng quát tập lệnh
Chương III: Giao tiếp với máy tính
I Giao tiếp song song
1 Giao tiếp qua cổng máy in
2 Giao tiếp qua Slot card
II Giao tiếp nối tiếp qua cổng COM
1 Vài nét cơ bản về cổng nối tiếp
2 Sự trao đổi của các đường dẫn tín hiệu
Phần 2: Phần cứng của mạch giao tiếp
Chương IV: Giới thiệu kit VXL 8086
I Các linh kiện bán dẫn liên quan
1 vi mạch MAX 232
2 IC đệm 74LS244
3 Mạch tạo xung nhịp 8284
4 Tổng quát về bộ nhớ
II Giới thiệu kit VXL 8086
Chương V: Giao tiếp nối tiếp dùng 8251A.
I truyền thông tin nối tiếp
II Vi mạch USART 8251A
III Ứng dụng 8251A để truyền thông tin nối tiếp
1 Truyền thông tin nối tiếp giữa 2 kit VXL
2 Truyền thông tin nối tiếp giữa kit VXL và máy tính
Trang 12Phần 3 : Phần mềm của mạch giao tiếp
Chương VI: Các chương trình truyền dữ liệu
I Chương trình truyền, nhận dữ liệu dữ liệu trên kit
1 Giải thuật
2 Chương trình
II Chương trình truyền dữ liệu trên máy tính
Phần 4: Tổng kết, đánh giá
Hướng phát triển đề tài
Kết luận đánh giá
Tài liệu tham khảo
Trang 13LỜI NÓI ĐẦU
Đất nước ta đang trên con đương tiến lên một đất nước công ngiệp hóa hiện đại hóa Để đạt được mục tiêu đó thì ngành công ngiệp máy tính là một ngành then chốt để tiến lên con đường công ngiệp hoá và hiện đại hóa đất nước
Ngày nay trong các nhà máy xí nghiệp hay công xưởng đều sử dụng máy vi tính vào việc đo lường điều khiển, tính toán và trong quản lý hành chính, nhờ có đặc tính gọn nhẹ, độ tin cậy cao linh hoạt và đơn giản trong sử dụng Đặc biệt trong các ngành công nghiệp hiện đại, máy tính điện tử không những góp phần vào việc nâng cao năng suất lao động mà còn góp phần vào việc bảo vệ sức khoẻ và an toàn lao động cho con người
Đễ hoàn thành những công việc kể trên chúng ta cần phải kết nối các máy vi tính với nhau, hoặc kết nối chúng với các thiết bị ngoại vi nhận dữ liệu để xử lý hay gửi dữ liệu đi cho các thiết bị khác xử lý Để thực hiện được công việc này thì điều đầu tiên chúng ta phải làm đó là chúng ta phải kết nối phần cứng cho phù hợp và viết các chương trình truyền dữ liệu
Trước yêu cầu đó sinh viên thực hiện đề tài quyết định thực hiện đề tài “Giao tiếp máy tính với kit VXL 8086” nhằm mục đích tìm hiểu, học hỏi thêm và ứng dụng các kiến thức đã học ra thực tế
Sinh viên thực hiện xin chân thành cảm ơn thầy Nguyễn
Đình Phú cùng các thầy cô trong khoa đã tận tình hướng dẫn em
hoàn thành tốt đề tài này
Vì thời gian và kiến thức có hạn nên tập luận văn này chắc chắn không tránh khỏi sai sót, rất mong những ý kiến đóng góp của qúy thầy cô và các bạn
TP.Hồ Chí Minh, ngày 25 tháng 2 năm 2000
Sinh viên thực hiện Phạm Xuân Hưng
Trang 14Phần 1
GIỚI THIỆU CHUNG
Trang 15CHƯƠNG DẪN NHẬP
oOo
Cùng với sự phát triển của khoa học kỹ thuật thì ngành công nghiệp máy tính cũng được phát triển rất mạnh mẽ và ngày càng được ứng dụng rộng rãi trong mọi công việc như các công việc trong công nghiệp cũng như trong thông tin liên lạc
Để thực hiện được những công việc nhận dữ liệu từ các thiết
bị khác để xử lý hoặc gửi dữ liệu đi để điều khiển các thiết bị khác thì công việc giao tiếp giữa hai hệ vi xử lý với nhau hay giữa vi xử lý với máy tính là một công việc chủ yếu trong việc truyền dữ liệu
vì thế sinh viên quyết định thực hiện đề tài “Giao tiếp máy tính với kit VXL 8086” Mục đích để học hỏi và tìm hiểu thêm các ứng dụng của VXL và các IC giao tiếp ngoại vi trong thực tế, làm quen với các chương trình truyền dữ liệu để hoàn thành tốt luận văn tốt nghiệp này
Trong phạm vi chuyên ngành thì đề tài đã hoàn thành tốt phần cứng và phần mềm giao tiếp Riêng trong lĩnh vực giao tiếp thì đó cũng là tài liệu tham khảo ban đầu cho những người muốn
đi sâu vào lĩnh vực giao tiếp
Đề tài này không chỉ giúp cho sinh viên hòan thành luận văn tốt nghiệp mà còn hình thành trong mỗi sinh viên những kinh nghiệm, sáng tạo và năng động Sau này đề tài sẽ kết hợp với các ngành chuyên môn khác để phát triển mô hình này được hoàn thiện hơn
Trang 16CHƯƠNG CƠ SỞ LÝ LUẬN
_ oOo _
I XÂY DỰNG ĐỀ CƯƠNG LUẬN VĂN:
1) Xác định nhiệm vụ nghiên cứu :
Việc chọn đề tài xuất phát từ hai lý do:
- Khách quan: hiện nay các nền công nghiệp có nhu cầu
hiện đại hóa các thiết bị theo xu hướng cải tiến hóa các thiết bị bằng cơ khí sang thiết bị điều khiển tự động ứng dụng kỹ thuật điện tử
- Chủ quan: do nhu cầu học tập, nghiên cứu, rèn luyện kỹ
năng thực hành, ứng dụng vốn kiến thức khoa học kỹ thuật tiên tiến trực tiếp vào lĩnh vực sản xuất
Nhiệm vụ nghiên cứu nhằm đạt được các mục đích chủ yếu:
+ Mục đích trước mắt: thỏa mãn về cơ bản các yêu cầu đề
ra theo phương châm “Học đi đôi với hành“
+ Mục đích sau cùng: Tích lũy kinh nghiệm, rèn luyện và
nâng cao năng lực, tạo bản lĩnh để sẵn sàng tham gia lao động sản xuất, hòa nhập vào bước tiến của thế hệ
2) Phân tích tài liệu liên hệ:
Trong thời gian nghiên cứu đề tài, sinh viên thực hiện đã thống nhất tham khảo một số tài liệu có liên quan trong khoảng thời gian cho phép
- Phương pháp luận nghiên cứu khoa học: tìm hiểu về cấu trúc hình thức của một đề tài nghiên cứu khoa học và phương pháp tư duy để giải quyết vấn đề
- Kỹ thuật Vi xử lý - Trần Văn Trọng: Tài liệu cung cấp về cấu trúc của vi xử lý 8086
- Sơ đồ chân linh kiện bán dẫn - Dương Minh Trí: cung cấp
sơ đồ chân và bảng trạng thái họat động của các IC và các linh kiện bán dẫn
- Cấu trúc máy tính - Lê Anh Việt: Tài liệu cung cấp kiến thức cơ bản về cấu trúc máy tính, tổ chức CPU, hợp ngữ và cách lập trình
- The 8086/8088 - Family Design Programming and Interfacing – John Uffenbeck: tài liệu cung cấp những kỹ thuật kết nối vi xử lý và những phần mềm ứng dụng
- Kỹ thuật vi xử lý – Văn Thế Minh: tài liệu cung cấp kỹ thuật giao tiếp với các thiết bị ngoại vi
Trang 17II KẾ HOẠCH NGHIÊN CỨU:
1) Dàn ý nghiên cứu:
Phần I: Giới thiệu chung
Phần II: Phần cứng và phần mềm cuả mạch giao tiếp.Phần III : Tổng kết và đánh giá
2) Đối tượng nghiên cứu:
Vi xử lý là trung tâm điều khiển các đối tượng, điều khiển hệ thống như máy tự động, dây chuyền sản xuất… Để hệ thống xử lý thi hành các chức năng điều khiển như mong muốn, chúng ta phải lập trình bằng ngôn ngữ tương ứng và trao đổi dữ liệu giữa các hệ
vi xử lý Vì thế đối tượng nghiên cứu chính là thiết kế mạch giao tiếp để truyền dữ liệu đi xa
Trang 18CHƯƠNG ICẤU TRÚC BÊN TRONG CỦA VI XỬ LÝ 8086
_ oOo _
Đây là bộ vi xử lý nổi tiếng một thời của hãng Intel, nó được sử dụng trong nhiều lĩnh vực khác nhau, nhất là trong các máy IBM PC/XT Các bộ vi xử lý thuộc họ này sẽ còn được sử dụng rộng rãi trong hàng chục năm nữa
I CẤU TẠO BÊN TRONG:
Bên trong gồm hai khối chính:
- Khối thực hiện EU (Execution Unit)
- Khối giap tiếp bus (Bus Interface Unit)
1 Khối thực hiện EU
Ở hình 1.1 ta thấy trong khối EU ta thấy có một khối điều khiền (Control Unit, CU) chính tại bền trong khối điều khiển này có mạch giải mã lệnh Mã lệnh đọc vào từ bộ nhớ đưa đến đầu của bộ giải mã, các thông tin thu được từ đầu ra củc nó sẽ được đưa đến mạch tạo xung điều khiển, kết quả là thu được các dãy xung khác nhau (tùy theo mã lệnh) để điều khiển hoạt động của các bộ phận bên trong và bên ngoài CPU Trong khối EU còn có khối số học và logic (Arithmetic and Logic Unit ALU) dùng để thực hiện các thao tác khác nhau với các toán hạng cuả lệnh Tóm lại khi CPU hoạt động EU sẽ cung cấp thông tin về điạ chỉ cho BIU để khối này đọc lệnh và dữ liệu, còn bản thân nó thì giải mã lệnh và thực hiện lệnh
2 Khối phối ghép bus (Bus Interface Unit BIU)
Khối BIU có nhiệm vụ đưa ra điạ chỉ, đọc mã lệnh từ bộ nhớ Nói cách khác BIU chiu trách nhiệm đưa điạ chỉ ra bus và trao đổi dữ liệu với bus
Trong BIU còn có bộ nhớ đệm lệnh với dung lượng 4 byte dùng để đưa các mã lệnh đọc được nằm sẵn sàng chờ EU xử lý (trong tài liệu cuả Intel bộ lệnh này còn được gọi là hàng đợi lệnh Đây là một cấu trúc mới được đưa vào bộ VXL 8086/8088 cho việc Intel đưa chế độ xử lý xen kẽ liên tục dùng mã lệnh vào ứng dụng vào trong các bộ VXL thế hệ mới
Trang 193 Sơ đồ khối bền trongvà chức năng các khối cuả VXL 8086:
Hàng đợi lệnh
Arithmetic logic
unit (ALU)
Bus dữ liệu nội
Các bus hệ thống
Trang 20Bộ vi xử lý thực hiện các lệnh theo các bước sau:
- Lấy lệnh từ bộ nhớ
- Đọc toán hạng (nếu lệnh yêu cầu)
Register):
♦ Các thanh ghi trạng thái và điều khiển (Status &
SPBPSIDI Con trỏ Stack (Stack Pointer)
Con trỏ nền (Base Pointer)Chỉ số nguồn (Source Index)Chỉ số đích (Destnation Index)
CSDSSSESĐoạn mã (Code Segment)Đoạn dữ liệu (Data Segment)Đoạn Stack (Stack Segment)Đoạn thêm (Extra Segment)
IPFlagCon trỏ lệnh (Intruction Pointer)
Cờ
Trang 22♦ Các thanh ghi dữ liệu:
Có bốn thanh ghi dữ liệu ký hiệu lần lượt là: AX, BX, CX, DX, được người lập trình sử dụng cho các thao tác với dữ liệu Mặc dù
vi xử lý có thể thao tác với dữ liệu trong bộ nhớ, nhưng một lệnh như vậy sẽ được thực hiện nhanh hơn trong thanh ghi (cần ít chu kỳ đồng hồ hơn) Đó cũng là nguyên nhân tại sao các bộ vi xử lý hiện đại có xu hướng nhiều thanh ghi
Các byte cao và byte thấp trong thanh ghi được truy cập độc lập: Byte cao của thanh ghi AX được gọi là AH và byte thấp được gọi là AL Tương tự như vậy cho các byte cao và byte thấp của các thanh ghi BX, CX, DX lần lượt là BH & BL, CH & CL, DH & DL Nhờ điều này mà ta có nhiều thanh ghi hơn khi làm việc với các số liệu có kích thước byte dài Trong đa số lệnh các thanh ghi dữ liệu được chọn tùy ý nhưng các thanh ghi này lại có chức năng riêng cố định trong một số ít lệnh
Là thanh ghi được sử dụng nhiều nhất trong các lệnh số học – logic và truyền dữ liệu bởi vì việc sử dụng thanh ghi này tạo ra mã máy ngắn nhất
Trong các thao tác nhân hoặc chia một trong các số hạn tham gia phải chứa trong AH hoặc AL, các thao tác vào ra cũng sử dụng thanh ghi AH hoặc AL
Thanh ghi BX được dùng cho tính toán địa chỉ trong phương pháp định địa chỉ gián tiếp
Việc thực hiện các chương trình lập được thực hiện dễ dàng nhờ thanh ghi CX, trong đó CX đóng vai trò là bộ đếm vòng lập Một thí dụ khác của việc sử dụng thanh ghi CX đó là lệnh REP (Repeat) lệnh này điều khiển một lớp các lệnh chuyên về các thao tác chuỗi CL cũng được sử dụng là một biến đếm trong các lệnh dịch hay quay các bit
DX dùng để định địa chỉ gián tiếp trong các thao tác vào ra, nó cũng còn được sử dụng chứa toán hạn, kết quả trong phép nhân và chia
Các thanh ghi SP, BP, SI, DI thường trỏ tới các ô nhớ (tức là chứa các địa chỉ offset của các ô nhớ đó) Khác với thanh ghi đoạn,
Trang 23các thanh ghi con trỏ và ngăn xếp được sử dụng trong các thao tác số học và một số thao tác khác nhau.
Di chuyển từ địa chỉ cao đến địa chỉ thấp, dùng để kết hợp với thanh ghi đoạn Stack SS (Stack Segment)để lưu trử địa chỉ trở về hoặc dữ liệu vào trong ngăn xếp
Thanh ghi này được dùng để truy cập dữ liệu trong ngăn xếp mà không làm thay đổi SP Tuy nhiên, khác với SP thanh ghi BP cũng còn được sử dụng đễ truy cập dữ liệu ở các đoạn khác
Thanh ghi SI được sử dụng để trỏ tới các ô nhớ trong đoạn dữ liệu được định bởi thanh ghi đoạn dữ liệu DS (Data Segment), có thể truy cập dễ dàng các ô nhớ liên tiếp bằng cách tăng SI
Thanh ghi DI có chức năng tương tự như thanh ghi SI và được dùng kết hợp với thanh ghi đoạn thêm ES (Extra Segment) Cả hai DI và SI thích hợp trong các thao tác sao chép, di chuyển hoặc
so sánh các khối dữ liệu có dung lượng đến 64kB
8086 không thực hiện lệnh trực tiếp trong bộ nhớ mà lệnh được lấy ở hàng đợi lệnh có cấu tạo giống như một thanh ghi dịch (FIFO: First In First Out: vào trước ra trước) chứa các mã lệnh cung cấp bởi khối BIU Thanh ghi IP chỉ đến lệnh tiếp theo chưa được nhập vào hàng đợi lệnh và được dùng kết hợp với thanh ghi
CS Thanh ghi IP được cập nhật mỗi khi có một lệnh được thực hiện xong, khác với các thanh ghi khác, IP không bị tác động trực tiếp bởi các lệnh
Thanh ghi cờ của 8086 có độ dài 16bit (2byte) byte thấp chứa các bit trạng thái giống như trong 8085 phản ánh trạng thái của
vi xử lý, byte cao chứa 1 bit trạng thái đó là bit 11 và 3 bit điều khiển dùng để điều khiển hoạt động của vi xử lý Sau đây là cấu tạo của thanh ghi cờ trong 8086:
O D I T S Z A P CThanh ghi cờ của 8086
C: carry flag
P: parity flag
Trang 24+ Cờ chẵn lẻ PF :
Sau các lệnh số học hoặc logic đối với các lệnh byte nếu số lượng số ‘1’ trong byte kết quả là chẵn thì cờ PF được thiết lập là
‘1’ ngược lại là ‘0’ nếu là lẻ, đối với các lệnh word chỉ xét các byte thấp
+ Cờ nhớ phụ AF:
Cờ nhớ phụ được thiết lập nếu có nhớ (cộng) hoặc có thiếu (trừ) từ phân nửa dưới đến phân nửa trên của toán hạn (đối với lệnh byte đó là bit 3 và đối với lệnh word là bit 7) cờ AF được sử dụng trong các thao tác với số BCD
+ Cờ ngắt IF:
Cờ ngắt được sử dụng để điều khiển các ngắt phần cứng bên ngoài, nếu cờ này được thiết lập các ngắt phần cứng có thể ngắt
8086 Khi xóa IF, các ngắt bên ngoài không còn tác dụng nửa (bị
Trang 25che) Thực ra vẫn còn một ngắt cứng không che được NMI (Non Maskable Interrupt).
Trước khi vi xử lý trao quyền điều khiển cho một phục ngắt nó xóa cả IF và TF, như vậy phục ngắt đó sẽ không bị ngắt Tất nhiên một phục vụ ngắt có thể đổi cờ để cho phép ngắt khi nó đang thi hành
+ Cờ tràn OF:
Cờ tràn là ‘1’ khi có hiện tượng tràn và ngược lại nó bằng ‘0’ Hiện tượng tràn cho thấy một sự thật là phạm vi biểu diễn các số trong máy tính là có giới hạn
Phạm vi biểu diển các số có dấu trong một word từ –32768 đến +32767 và trong một byte từ –126 đến +127
Đối với các số không dấu từ 0 đến 65535 cho một word và từ
0 đến 255 cho một byte Nếu kết quả của một phép tính vượt ra ngoài phạm vi này thì hiện tượng tràn sẽ xảy ra và kết quả nhận được bị cắt bớt sẽ không phải là kết quả đúng
+ Cờ điều khiển DF:
Là một trong ba cờ điều khiển dùng điều khiển các thao tác của vi xử lý công dụng của DF là dịch hướng cho các thao tác chuỗi, các thao tác này được thực hiện bởi hai thanh ghi chỉ số SI
& DI, nội dung của hai thanh ghi này sẽ tự động tăng lên khi DF
= 0 và giảm xuống khi DF =1
3.2).Khối giao tiếp (BIU):
Khối giao tiếp làm đơn giản việc liên lạc giữa EU và bộ nhớ hoặc các vi mạch vào ra Nó có nhiệm vụ gởi các địa chỉ, số liệu và tín hiệu điều khiển vào các bus, BUI & EU liên hệ với nhau bằng các bus nội bộ, khi EU đang thi hành một lệnh, BIU nạp 6 byte mã lệnh tiếp theo vào và đặt chúng vào hàng đợi lệnh, mục đích của việc này là làm tăng tốc độ của vi xử lý Nếu EU cần liên lạc với bộ nhớ hay thiết bị ngoại vi, BIU sẽ treo các lệnh nhận trước và thực hiện thực hiện các thao tác cần thiết BIU cấu tạo gồm các thanh ghi đoạn và con trỏ lệnh dùng để chứa địa chỉ các ô nhớ
a) Các thanh ghi đoạn:
Được dùng để lưu trử địa chỉ của các lệnh và dữ liệu trong bộ nhớ, vi xử lý dựa trên các giá trị này để truy cập bộ nhớ
Bộ nhớ là tập hợp các byte ô nhớ, mỗi byte có một địa chỉ xác định bắt đầu từ 0 8086 gán cho mỗi ô nhớ một địa chỉ vật lý 20 bit Như vậy, nó có thể định địa chỉ đến byte (tương đương 1MB)
ô nhớ, các byte đầu tiên của bộ nhớ có địa chỉ như sau:
Trang 26………… Hvà cứ tiếp tục cho đến giá trị lớn nhất là FFFFFH
Do các địa chỉ quá lớn (20 bit) không thể chứa trong một thanh ghi của 8086 (16 bit) nên 8086 chia bộ nhớ thành các đoạn bộ nhớ (Memory Segment)
Một đoạn bộ nhớ là một khối gồm 216 (64K) ô nhớ liên tiếp nhau, mỗi đoạn được xác định bằng một địa chỉ đoạn bắt đầu từ địa chỉ 0, địa chỉ đoạn là một số 16 bit nên địa chỉ đoạn lớn nhất là FFFF Bên trong mỗi đoạn số ô nhớ được xác định bằng địa chỉ tương đối (offset), đó là số byte tính từ đầu đoạn, với một đoạn 64K thì offset cũng là một số 16 bit, byte đầu tiên trong đoạn có offset bằng 0 và byte cuối cùng bằng FFFF
Một ô nhớ có thể được xác định bằng địa chỉ đoạn:địa chỉ tương đối trong đoạn (segment:offset) và được gọi là địa chỉ logic
Thí dụ: ô nhớ A4FB: 4872 có địa chỉ đoạn là A4FB và địa chỉ
offset là 4872 Để tìm địa chỉ vật lý của ô nhớ trước tiên ta dịch địa chỉ đoạn về bên trái 4 bit và sau đó cộng với địa chỉ offset, như vậy địa chỉ vật lý của ô nhớ A4FB:4872 được tính như sau:
A4FB0
4872A9822
b) Sắp xếp đoạn:
Trong bộ nhớ đoạn 0 bắt đầu từ địa chỉ 0000:0000 = 00000 và kết thúc ở 0000:FFFF = 0FFFF, đoạn 1 bắt đầu từ địa chỉ 0001:0000 = 00010 và kết thúc ở địa chỉ 0001:FFFF = 1000F Như vậy, có rất nhiều sự chồng nhau giữa các đoạn Các đoạn bắt đầu từ các địa chỉ cách nhau 16byte và địa chỉ đầu của mỗi đoạn luôn kết thúc bằng các số 0 16byte được gọi là một khúc (Paragraph),
Trang 27các địa chỉ chia hết cho 16 ( các địa chỉ kết thúc bằng 0) là các biên giới khúc (Paragraph Boundary)
c) Các đoạn của chương trình:
Mỗi đoạn chương trình ngôn ngữ máy bao gồm các lệnh và dữ liệu, còn một vùng đặc biệt trong RAM gọi là ngăn xếp (stack) Mã lệnh, dữ liệu và ngăn xếp của chương trình được nạp vào các đoạn bộ nhớ khác nhau đó là đoạn mã (code segment), đoạn dữ liệu (data segment), đoạn ngăn xếp (stack segment)
Để theo dõi các đoạn khác nhau của chương trình 8086 được cung cấp 4 thanh ghi đoạn để chứa các địa chỉ đoạn, các thanh ghi
CS, DS, SS lần lược chứa các địa chỉ đoạn mã, đoạn dữ liệu, và đoạn ngăn xếp Nếu chương trình muốn truy cập đến một dữ liệu thứ hai nó có thể sử dụng thanh ghi đoạn thêm ES (extra segment)
Một chương trình không phải bao giờ cũng cần chiếm hết một đoạn 64KB, do đặc điểm chồng nhau giữa các đoạn cho phép các đoạn của một chương trình nhỏ hơn 64KB có thể đặt gần lại với nhau Tại một thời điểm, chỉ có các ô nhớ được định địa chỉ bởi 4 thanh ghi đoạn mới có thể truy cập, nghĩa là chỉ có 4 đoạn bộ nhớ là tác động Tuy nhiên nội dung của các thanh ghi đoạn có thể thay đổi bởi chương trình để truy cập đến các đoạn khác nhau
d).Hàng đợi lệnh:
Như ta đã biết, để tăng tốc độ vi xử lý khối BIU tiếp nhận các lệnh và đưa vào hàng đợi lệnh (Queue) trong khi đó khối EU đang thi hành lệnh Hàng đợi lệnh có thể nhận 6 byte mã lệnh, các lệnh của 8086 có độ dài từ 1 đến 6 byte, nếu lệnh chưa vào đầy đủ trong hàng đợi lệnh thì khối EU sẽ chờ cho đến khi lệnh nạp hết vào hàng đợi lệnh
II CẤU TRÚC BÊN NGOÀI VÀ CHỨC NĂNG CỦA VXL 8086
1) Sơ đồ chân của 8086:
8086 là vi xử lý 16 bit nó gồm 16 đường dữ liệu và 20 đường địa chỉ, các đường dữ liệu từ D0 đến D15 và các đường địa chỉ từ A0 đến A15 hoạt động theo phương pháp đa lộ thời gian
8086 có thể làm việc ở hai chế độ:
- Chế dộ Minimum
- Chế độ Maximum
Trong chế độ minimum, 8086 điều khiển các thiết bị bằng các tín hiệu điều khiển của chính nó, trong chế độ này hỗ trợ bộ xử lý toán học 8087
Trang 28Trong chế độ maximum cần thiết phải kết hợp với vi mạch điều khiển bus 8288 để tạo ra các tín hiệu đọc – ghi cho bộ nhớ và các thiết bị ngoại vi và chế độ này cho phép làm việc với 8087.Sau đây là sơ đồ chân của 8086 ở cả hai chế độ minimum và maximum:
1 2
40 39 38 37 36
INTR CLK GND
WR (LOCK) M/IO (S2) DT/R (S1) DEN (S0) ALE (QS0) INTA (QS1) TEST
READY RESET
8086 CPU
Hình 1.2: Sơ đồ chân 8086
Trang 292) Chức năng của các chân của 8086:
• INTR- Interrupt Request (input):
Mức cao ở ngõ này báo cho 8086 biết có một yêu cầu ngắt (thuờng được gởi tới từ vi mạch xử lý ngắt 8259), tín hiệu ngắt tại chân này có thể bị che bằng phần mềm Khi vi xử lý chấp nhận yêu cầu ngắt, nó sẽ đưa ra một chu kỳ chấp nhận ngắt và vi mạch xử lý ngắt phải gởi địa chỉ của ngắt lên bus dữ liệu tương ứng với chu kỳ thứ hai
• NMI (Non Maskable Interrupt):
Đây là ngắt không che được, tác động ở mức cao vi xử lý nhảy đến địa chỉ ngắt số 2 trong bảng vector ngắt và không tạo ra chu kỳ chấp nhận ngắt
• Reset (input):
Ngõ vào mức cao đặt vi xử lý về trạng thái ban đầu sau ít nhất 4 chu kỳ đồng hồ Thanh ghi CS được đặt giá trị FFFF và thanh ghi IP được đặt giá trị 0000 Như vậy chỉ thị được thực hiện đầu tiên chứa ở ô nhớ FFFF0 quá trình chuyển tiếp từ mức cao xuống mức thấp được đồng bộ bởi chu kỳ đồng bộ từ vi mạch tạo xung đồng hồ 8284
• Ready (input):
Tín hiệu báo đã hoàn tất thao tác truyền dữ liệu của bộ nhớ hoặc thiết bị vào – ra, tác động ở mức cao, vi xử lý sẽ đợi nếu tín hiệu này ở mức thấp
• AD0… AD15 - Address/Data bus (input/output):
Giống như trong 8085, các đường địa chỉ - dữ liệu này làm việc theo nguyên tắc đa lộ thời gian, là địa chỉ trong chu kỳ T1 và là dữ liệu trong chu kỳ T2, T3, Tw, T4, tác động ở mức cao, có cấu tạo ba trạng thái và ở trạng thái tổng trở cao trong lúc vi xử lý
‘Interrupt acknowlegde’ và ‘Hold acknowledge’
• A16/S3 …… A19/S6 – Addres/Status (output):
Trong chu kỳ T1 là 4 bit địa chỉ cao khi thao tác với bộ nhớ, trong lúc thao tác với thiết bị vào - ra chân này có gía trị thấp
Trang 30Trong cả hai thao tác cũng như vào – ra các bit này là trạng thái trong các chu kỳ T2, T3, Tw, T4 Trạng thái bit cao cho phép ngắt,
S5 được cập nhật tại mỗi thời điễm bắt đầu của mỗi chu kỳ đồng hồ S3 & S4 cho biết thanh ghi đoạn đang được sử dụng, thông tin này cần thiết cho Co-processor xác định vị trí của toán hạng Có cấu tạo ba trạng thái và trạng thái tổng trở cao khi vi xử lý ‘Hold acknowledge’
S3 S4 Thanh ghi đoạn được
chọn0
011
0101
Thanh ghi đoạn thêm
Thanh ghi đoạn ngăn xếp
Thanh ghi đoạn lệnh
Thanh ghi đoạn dữ liệu
Hai bit S3 & S4 để chọn các thanh ghi đoạn
• BHE/S7 – Bus high enable / status (output):
Kết hợp với bit địa chỉ A0 để xác định chế độ truyền dữ liệu, BHE ở mức thấp trong chu kỳ T1 của các thao tác đọc – ghi và chấp nhận ngắt khi một byte được truyền trong byte cao của bus dữ liệu S7 có hiệu lực trong các chu kỳ T2, T3 & T4, cấu tạo ba trạng thái và trạng thái tổng trở cao khi vi xử lý ở chế độ ‘Hold’
HBE A0 Kiểu truyền dữ liệu0
011
0101
Truy xuất 16 bit Truy xuất byte cao từ địa chỉ lẻ
Truy xuất byte thấp địa chỉ chẳn
• Test (input):
Trang 31Tín hiệu vào được kiễm tra bởi lệnh ‘wait’ vi xử lý sẽ không làm gì cả khi điện áp chân này có giá trị thấp, đồng bộ tại cạnh lên của mỗi xung đồng hồ
• MN-MX – Minimum-Maximum (input):
Chân chọn chế độ làm việc của 8086, chế độ làm việc là minimum tương ứng với mức cao và chế độ làm việc là maximum ứng với mức thấp Bus điều khiển ở hai chế độ có chức năng khác nhau
• M/IO (output):
Ngỏ ra trạng thái giống như bit S0 ở chế độ maximum dùng để báo vị trí đang truy xuất dữ liệu Mức cao là bộ nhớ và mức thấp là khối vào-ra Cấu tạo ba trạng thái, tổng trở cao khi vi xử lý ở chế độ ‘Hold acknowledge’
• WR – write (output):
Tín hiệu ra điều khiển thao tác ghi vào bộ nhớ hoặc khối
vào-ra tùy theo giá trị của ngõ M/IO Tác động mức thấp ở T2, T3 và Tw
của mỗi chu kỳ ghi, cấu tạo ba trạng thái và trạng thái tổng trở cao khi vi xử lý ở chế độ ‘Hold acknowledge’
• INTRA – Interrup Acknowlegde (output):
Tín hiệu chấp thuận ngắt, tác động mức thấp tại T2, T3 và Tw
dùng để đưa địa chỉ của ngắt lên bus dữ liệu
• ALE – Adress Latch Enable
Tín hiệu điều khiển chốt địa chỉ 74LS373 hoặc 8282/8283 tác động mức cao trong khoảng T1 của mỗi chu kỳ bus :
+ Khi ALE = 1 các bit AD0 … AD15 là địa chỉ
• Hold (input):
Tín hiệu vào cho biết một linh kiện đòi quyền sử dụng bus, tác động ở mức cao
• HLDA – Hold acknowlegde (output):
Tín hiệu ra ở mức cao cho biết yêu cầu Hold được chấp thuận,
vi xử lý sẽ treo bus nội bộ và các đường điều khiển của nó ở trạng thái tổng trở cao
• DT/R – Data Transmit/Receive (output):
Tín hiệu ra dùng để điều khiển hướng truyền dữ liệu của vi mạch thu-phát Cấu tạo ba trạng thái và trạng thái tổng trở cao khi vi xử lý ở chế độ ‘Hold acknowledge’
• DEN – Data enable (output):
Tín hiệu ra ở mức thấp cho mỗi chu kỳ thao tác bộ nhớ và I/O và cả INTRA điều khiển ngỏ ra cho phép của 8286/8287 trong
Trang 32hoạt động thu – phát dữ liệu Cấu tạo ba trạng thái, trạng thái tổng trở cao khi vi xử lý ở chế độ ‘Hold acknowledge’.
• S0, S1, S2 (thông tin trạng thái) :
Vi mạch 8288 dựa trên các thông tin này để thực hiện các thao tác điều khiển Cấu tạo ba trạng thái, trạng thái tổng trở cao khi ‘Hold acknowledge’ Tác động trong các chu kỳ T4, T1 & T2 và trở về trạng thái thụ động ở T3 hoặc Tw khi Ready ở mức cao Một sự thay đổi bất kỳ của tín hiệu này trong chu kỳ T4 được dùng để đánh dấu thời điểm bắt đầu của chu kỳ bus và trở về thụ động ở trong T3 hoặc Tw xác định điểm kết thúc của chu kỳ bus
S2 S1 S0 Thông tin điều khiển
01010101
Chấp nhận ngắt
Đọc từ cổng
Viết ra cổngDừng
Nhập mã lệnh
Đọc từ bộ nhớ
Viết ra bộ nhớ
Thụ động
• RQ/GT0, RQ/GT1 – Request/Gram (input/output):
Hai tín hiệu yêu cầu vi xử lý nhường quyền sử dụng bus, tín hiệu RQ/GT0 có mức ưu tiên cao hơn Nguyên lý hoạt động được mô tả như sau:
+ Một xung có bề rộng một chu kỳ đồng hồ cho biết một linh kiện cần sử dụng bus
+ Trong chu kỳ đồng hồ T4 hoặc T1 vi xử lý gởi đến linh kiện đó xung có bề rộng chu kỳ đồng hồ cho biết vi xử lý chấp nhận nhường quyền sử dụng bus và nó sẽ tiến vào trạng thái ‘Hold acknowledge’ sau xung đồng hồ kế tiếp để treo bus của chính nó.+ Xung bề rộng chu kỳ đồng hồ được gởi đến 8086 cho biết quá trình ‘Hold’ kết thúc và vi xử lý trở lại quản lý bus xau khi chấm dứt chu kỳ đồng hồ kế tiếp Nếu yêu cầu này xảy ra trong khi vi xử lý đang truy xuất bộ nhớ, nó sẽ treo bus trong khoảngT4
nếu thỏa những diều kiện sau đây:
- Yêu cầu xảy ra trong khi hoặc trước T2
- Chu kỳ hiện hành không phải là byte thấp của word (ở địa chỉ lẻ)
- Chu kỳ hiện hành không ở trạng thái chấp nhận ngắt
Trang 33- Không có chỉ thị khóa.
Nếu bus không bận khi có yêu cầu thì có hai trường hợp sẽ xảy ra
- Bus sẽ treo ở chu kỳ đồng hồ kế tiếp
- Một chu bộ nhớ sẽ khởi động trong vòng 3 chu kỳ đồng hồ
• Clock (output):
Mức cao báo cho các linh kiện ngoài biết (Co-processor) rằng chu kỳ bus tiếp theo không được phép gián đoạn, điều này xảy ra khi trong chương trình có chỉ thị ‘Clock’ Cấu tạo ngõ ra ba trạng thái, trạng thái tổng trở cao khi vi xử lý ở chế độ ‘Hold acknowledge’
• QS1, QS0 – Queue status (output):
Ngõ ra cho biết trạng thái của hàng đợi lệnh, những thông tin này cần thiết cho Co-processor
QS0 QS1 Trạng thái hàng đợi lệnh0
011
0101
Không hoạt động Xóa nội dung hàng đợi kệnh
Nạp byte mã lệnh đầu tiên vào thanh ghi lệnh
Nạp byte mã lệnh tiếp theo của lệnh nhiều byte
Trang 34III CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ CỦA VI XỬ LÝ 8086:
Phương pháp định địa chỉ (Addressing Mode) là cách để CPU tìm thấy toán hạng cho các lệnh của nó khi hoạt động Một bộ vi xử lý có thể có nhiều chế độ định địa chỉ
Các chế độ định địa chỉ này được xác định ngay từ khi chế tạo ra bộ vi xử lý và sau này người ta lấy đó để làm chuẩn mà không thay đổi
Ngoài các phương pháp định địa chỉ: tức thời, trực tiếp, gián tiếp giống như của 8085, vi xử lý 8086 còn có thêm các cách định địa chỉ khác và được phân loại như sau:
- Định địa chỉ bằng thanh ghi
- Định địa chỉ tức thời
- Định địa chỉ trực tiếp
- Định địa chỉ gián tiếp
- Định địa chỉ tương đối
Bằng cách kết hợp các phương pháp định địa chỉ khác nhau trong một chỉ thị, có thể tạo ra nhiều khả năng phức tạp để truy xuất toán hạng (operand) các thiết bị vào – ra chỉ được truy cập bằng các phương pháp trực tiếp và gián tiếp Thứ tự mô tả byte của một word được lưu trong bộ nhớ giống như qui định của 8085, có nghĩa là các byte thấp (LSB) ở địa chỉ thấp và các byte cao (MSB) được đặt ở địa chỉ cao hơn kế cận
Trong các trình bày sau đây, bộ đếm chương trình PC (Program Counter) chứa địa chỉ offset của chỉ thị kế tiếp sẽ thực hiện, chỉ thị này đả sẳn sàng trong hàng đợi lệnh Con trỏ lệnh
IP trỏ đến địa chỉ cao hơn, đó là byte tiếp theo sẽ được BIU nhập vào hàng đợi lệnh
1) Các phương pháp định địa chỉ thông dụng:
1.1) Định địa chỉ tức thời:
Trong phương pháp này toán hạng nguồn chính là dữ liệu cần xử lý của chỉ thị
Trang 35Thí dụ: Mov ax, 1200
1.2) Phương pháp định địa chỉ trực tiếp:
Trong chỉ thị bao gồm địa chỉ offset của toán hạng, địa chỉ đoạn được quy định là nội dung của thanh ghi DS
Thí dụ: Mov ax [0230]
SP BP SI
DS SS ES
SP BP SI
DI
CS DS SS ES
1C
260I/O
AX BX CX DX
SP BP SI
DI
0100
PC
O D I T S Z A P C FI
B8 00 12
CS DS SS ES
2300
B8 00 12
O D I T S Z A P C FI
AX BX CX DX
SP BP SI
DI
CS DS SS ES
0103
Hình1.3 :Phương pháp định địa chỉ tức thời
Mov Ax, 1200
Trang 361.3) Định địa chỉ gián tiếp:
Trong phương pháp truy xuất gián tiếp các cổng luôn luôn tác động đến thanh ghi DX, nội dung của DX là địa chỉ 16 bit của cổng Số lượng cổng là 64k
Thí dụ: IN AL, DX
Hình 2.4: Phương pháp định địa chỉ tương đối
AX BX CX DX
SP BP SI
CS DS SS ES
2300
8B 07
O D I T S Z A P C
FI
AX BX CX DX
SP BP SI
DI
CS DS SS ES
0103
2780
2780
00 12
00 12
2080
2080
0280
0280
Trang 37CHƯƠNG II KHẢO SÁT TỔNG QUÁT TẬP LỆNH CỦA VI XỬ
LÝ 8086
I CÁCH MÃ HOÁ LỆNH CỦA 8086
Vi xử lý 8086 có nhiều phương pháp định địa chỉ và cũng có nhiều khả năng kết hợp các phương pháp đó lại với nhau Tuy nhiên, một lệnh chỉ cần 6 byte để mã hóa, và byte bắt đầu là mã công tác (Operations code), byte tiếp theo chứa kiểu địa chỉ và tiếp theo đó có thể là một hoặc hai byte dùng để chứa địa chỉ Các byte cuối cùng gồm một hoặc hai chứa toán hạng 8 hoặc 16 bit
Thực tế để biểu diển dạng thức các byte dùng để mã hóa lệnh Mov Ta ttấy rằng để mã hóa lệnh Mov ta phải cần ít nhất là hai byte, trong đó 6 bit của byte đầu dùng để chứa mã lệnh Đối với lệnh Mov để chuyển dữ liệu kiểu:
- Thanh ghi ↔ thanh ghi
- Bộ nhớ ↔ thanh ghi
Thì bit đầu (opcode) này luôn là ‘100010’ (đối với thanh ghi đoạn thì khác)
Đối với bit ‘D’ dùng để chỉ hướng đi của dữ liệu
D = 0 thì dữ liệu đi từ thanh ghi cho bởi 3 bit của REG
D = 1 dữ liệu đi đến thanh ghi cho bởi 3 bit REG
Đối với bit W dùng để chỉ rằng một byte (W = 0) hoặc một từ (W = 1) sẽ được chuyển
Byte1 Byte 2 Byte 3
II KHẢO SÁT TỔNG QUÁT TẬP LỆNH CUẢ VXL 8086
Tập lệnh của 8086 gồm 9 nhóm lệnh:
- Nhóm lệnh truyền số liệu
- Nhóm lệnh số học
Trừ thanh ghi đoạn
D W Mod
Địa chỉ trực tiếp phần
phần caohoặc
Trang 38- Nhóm lệnh thao tác chuỗi.
- Nhóm lệnh logic
- Nhóm lệnh xử lý bit
- Nhóm lệnh điều khiển chương trình
- Nhóm lệnh ngôn ngữ bậc cao
- Nhóm lệnh ở chế độ bảo vệ
- Nhóm lệnh điều khiển các bộ vi xử lý
Qua những nhóm lệnh giới thiệu trên nhóm thực hiện đề tài chỉ khảo sát những nhóm lệnh thông dụng nhằm phục vụ cho việc lập trình bằng ngôn ngữ máy
2.1) Nhóm lệnh truyền số liệu:
Các lệnh truyền dữ liệu sẽ sao chép dữ liệu giữa thanh ghi với thanh ghi, với bộ nhớ hoặc với khối vào-ra Chúng có thể sử dụng nhiều cách định địa chỉ khác nhau Trong cách viết lệnh dưới dạng gợi nhớ: toán hạng đầu tiên là thanh ghi đích hoặc địa chỉ đích và tiếp sau dấu phẩy là thanh ghi nguồn hoặc địa chỉ nguồn Khác với 8085, trong 8086 tất cả các lệnh truyền dữ liệu đều dùng lệnh
“Mov”
Mov (Reg1), (Reg2)
Nội dung (Reg2) được sao chép vào (Reg1)
Thí dụ: Mov AL, BL
Sao chép nội dung BL vào thanh ghi AL
♦ Truyền từ thanh ghi vào bộ nhớ:
Mov (Mem), (Reg)
Đối với lệnh byte, nội dung của thanh ghi được đưa vào địa chỉ của ô nhớ Đối với lệnh word thì nội dung của thanh ghi được đưa vào hai ô nhớ có địa chỉ lần lược là (Mem) và (Mem + 1)
Thí dụ: Mov [1200], BL
Sao chép nội dung của thanh ghi BL vào ô nhớ có địa chỉ tương đối là 1200
♦ Truyền từ ô nhớ vào thanh ghi:
Mov (Reg), (Mem)
Đối với lệnh byte, nội dung ô nhớ được chép vào thanh ghi Đối với lệnh word, nội dung của 2 ô nhớ (Mem) và (Mem + 1) được chép vào thanh ghi
Thí dụ: Mov BL, [1500]
Sao chép nội dung ô nhớ tại địa chỉ 1500 vào thanh ghi BL.Mov BX, [1500]
Trang 39Sao chép nội dung hai ô nhớ tại địa chỉ 1500 và 1501 vào thanh ghi BX (ô 1500 vào BL và ô 1501 vào BH)
Chú ý: nếu sử dụng AL hoặc AX trong các lệnh truyền từ
thanh ghi vào ô nhớ và ngược lại sẽ nhận được mã công tác ngắn hơn khi sử dụng các thanh ghi khác
♦ Truyền tức thời vào thanh ghi:
Mov (Reg), (Data)
Trong lệnh này, dữ liệu được truyền tức thời vào thanh ghi
Thí dụ: Mov BL, 20
Giá trị 20 được đưa vào thanh ghi BL
♦ Truyền tức thời vào bộ nhớ:
Mov (Mem), (Data)
Trong lệnh byte dữ liệu được truyền tức thời vào ô nhớ có địa chỉ (Mem) Trong lệnh word dữ liệu được truyền tức thời vào 2 ô nhớ có địa chỉ (Mem) và (Mem + 1)
Thí dụ: Mov [1200], 50
Giá trị 50 được đưa vào ô nhớ có địa chỉ 1200
Mov Word PTR [1200], 50Giá trị Word 0050 được đưa vào 2 ô nhớ bắt dầu tại địa chỉ 1200:50 (LSB) vào địa chỉ 1200:00 (MSB) vào địa chỉ 1201
- Truy xuất trực tiếp cổng:
IN (Reg), (Port)Đọc nội dung của cổng vào thanh ghi thanh ghi sử dụng l2
AL (dạng byte) và AX (dạng Word), địa chỉ cổng là một số 8 bit
OUT (Reg), (Port)Xuất nội dung của thanh ghi ra cổng
- Truy xuất gián tiếp cổng:
IN (Reg), DXĐọc nội dung của cổng có địa chỉ chứa trong DX vào thanh ghi Thanh ghi sử dụng là AL hoặc AX, địa chỉ cổng là số 16 bit
OUT DX, (Reg)Gởi nội dung thanh ghi ra cổng có địa chỉ chứa trong DX
2.2).Nhóm lệnh số học:
Bao gồm các phép tính cơ bản (cộng, trừ, nhân và chia) và phép so sánh, toán hạng có thể là dữ liệu 8 bit hoặc 16 bit, kết quả có thể là 8 bit, 16 bit hoặc 32 bit Các toán hạng được chứa trong thanh ghi bộ nhớ tức thời Tùy theo thao tác, kết quả có thể được chứa trong 1 hoặc 2 thanh ghi trong bộ nhớ
• Phép cộng:
Trang 40Vi xử lý 8086 thực hiện phép cộng có lưu ý số nhớ hoặc không lưu ý số nhớ 8 bit hoặc 16 bit.
+ Số hạng đầu tiên được chứa trong các thanh ghi dữ liệu (AX, BX, CX, DX, AH, AL, BH …), trog một thanh ghi chỉ số hoặc một ô nhớ Số hạng thứ hai có thể là tức thời trong thanh ghi hoặc trong bộ nhớ Hai số hạng không thể cùng ở trong bộ nhớ, kết quả phép cộng được chứa trong toán hạng thứ nhất Sau đây là bảng liệt kê lệnh cộng dưới dạng gợi nhớ:
Cộng không lưu ý số
nhớ
Cộng có lưu ý số
nhớ
Thí dụ
ADD (accu), (data)
ADD (mem), (data)
ADD (reg), (data)
ADD (reg1), (reg2)
ADD (reg), (mem)
ADD (mem), (reg)
ADC (accu), (data)ADC (mem), (data)ADC (reg), (data)ADC (reg1), (reg2)ADC (reg), (mem)ADC (mem), (reg)
ADD AX, 1250ADD Byte PTR [0900],50
ADD BL, 50ADC AL, AHADD CX, [0800]
ADC [0600], DL
• Phép trừ:
8086 có thể thực hiện phép trừ với 8 bit hoặc 16 bit, lệnh SBB có lưu ý số thiếu và lệnh SUB không lưu ý số thiếu Sau đây là bảng liệt kê lệnh trừ dưới dạng gợi nhớ:
Trừ có số thiếu Trừ không có số
thiếu
Thí dụ
SUB (accu), (data)
SUB (mem), (data)
SUB (reg), (data)
SUB (reg1), (reg2)
SUB (reg), (mem)
SUB (mem), (reg)
SBB (accu), (data)SBB (mem), (data)SBB (reg), (data)SBB (reg1), (reg2)SBB (reg), (mem)SBB (mem), (reg)
SUB AX, 1230SBB Byte PTR [5000], 90
SUB BL, 50SBB AL, DLSUB CX, [1230]
SBB [0300], DL