MÔ TẢ TẬP LỆNH CỦA VI XỬ LÝ

Một phần của tài liệu Thiết kế và thi công Kit vi xử lý 8086 (Trang 88 - 90)

I. Cấu trúc phần cứng của 8251: 1.Sơ đồ khối:

MÔ TẢ TẬP LỆNH CỦA VI XỬ LÝ

šl›

Có nhiều cách trình bày tập lệnh của một vi xử lý: trình bày các lệnh theo nhóm hoặc theo thứ tự A, B, C. Để tiện cho việc tìm kiếp và tra cứu cụ thể ta chọn cách trình bày theo thứ tự A, B, C.

v AAA – ASCII Adjust after Addition (Chỉnh sau khi cộng hai số ở dạng ASCII):

Dữ liệu truyền từ các thiết bị đầu cuối đến máy tính thường ở dạng mã ASCII. Khi đã truyền đi các số ASCII rồi, đôi khi ta muốn cộng luôn các số đó. Bộ vi xử lý 8086 cho phép ta làm điều này với điều kiện phải chỉnh lại kết quả có trong AL bằng lệng AAA để thu được kết quả là số BCD không gói.

Cập nhật: AF, CF.

Không xác định: OF, PF, SF, ZF.

v AAD – ASCII Adjust before Division (Chỉnh trước khi chia hai số ở dạng ASCII)

Lệnh này đổi hai số BCD không gói ở Ah và Al sang số hệ hai tương đương để tại AL. Việc này phải thực hiện trước khi làm phép chia một số BCD không gói (gồm hai chữ số) để trong AX cho một số BCD không gói khác. Kết quả và số dư cũng là các số BCD không gói.

Không xác định tất cả các cờ.

v AAM – ASCII Adjust after Multiplication (Chỉnh sau khi nhân hai số dạng ASCII).

Lệnh này dùng để đổi một số hệ hai, là tích của hai số BCD không gói, có trong AL sang số BCD không gói để tại AX.

Cập nhật: PF, SF, ZP

Không xác định: AF, CF, OF.

v AAS – ASCII Adjust after Subtraction (Chỉnh sau khi trừ hai số dạng ASCII)

Lệnh này dùng để đổi số hệ hai, là hiệu của 2 số BCD không gói, có ở Al sang số BCD không gói.

Cập nhật: AF, CF.

Không xác định: OF, PF, SF, ZF.

v ADC – Add With Carry (cộng có nhớ)

Cú pháp: ADC Đích, Gốc

Trong đó toán hạng đích và gốc có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là hai ô nhớ và cũng không được là thanh ghi đoạn. Điều hạn chế này cũng được áp dụng cho các lệnh khác có ngử pháp tương tự.

v ADD – Add (Cộng 2 toán hạng)

Cú pháp: ADD Đích, Gốc

Mô tả: Đích ¬ Đích + Gốc

Trong đó toán hạng đích và gốc có thể tìm được theo các chế độ định địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là hai ô nhớ và cũng không được là thanh ghi đoạn.

Cập nhật: AF, CF, OF, PF, SF, ZF

v AND – And Corresponding Bits of Two Operands (Và 2 toán hạng)

Cú pháp: AND Đích, Gốc

Mô tả: Đích ¬ Đích Ù Gốc

Trong đó toán hạng đích và gốc có thể tìm được theo các chế độ định địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là hai ô nhớ và cũng không được là thanh ghi đoạn. Phép AND thường dùng để che đi/giữ lại một vài bit nào đó của một toán hạng bằng cách nhân logic toán hạng đó với toán hạng tức thì có các bit 0 – 1 ở các chổ cần che đi/giữ nguyên tương ứng (toán hạng tức thì lúc nàycòn được gọi là mặt nạ).

Xóa: CF, OF

Cập nhật: PF, SF, ZP.PF chỉ có nghĩa khi toán hạng là 8 bit. (adsbygoogle = window.adsbygoogle || []).push({});

Không xác định: AF.

v CALL – Call a Procedure (Gọi chương trình con)

Mô tả:

Lệnh này dùng để chuyển hoạt động của bộ vi xử lý từ chương trình chính sang chương trình con. Nếu chương trình con ở trong cùng một đoạn mã với chương trình chính thì ta có gọi gần (near call). Nếu chương trình chính và chương trình con ở hai đoạn mã khác nhau thì ta có gọi xa (far call). Gọi gần và gọi xa khác nhau về cách tạo ra địa chỉ trở về (return address). Địa chỉ trở về là địa chỉ của lệnh tiếp ngay sau lệnh Call. Khi gọi gần thì chỉ cần cất IP của địa chỉ trở về (vì CS không đổi) khi gọi xa thì phải cất cả CS và IP của địa chỉ trở về. Địa chỉ trờ về được tự động cất tại ngăn xếp khi bắt đầu thực hiện lệnh gọi và được tụ động lấy ra khi găp lệnh Ret (trở về chương trình chính từ chương trình con) tại cuối chương trình con.

Như vậy, nếu là gọi gần:

· SP ¬ SP – 2 và địa chỉ lệnh trở về được cất vào ngăn xếp {SP}¬IP

· IP ¬ địa chỉ lệch của chương trình con.

· Khi gặp lệnh Ret tại cuối chương trình con thì sẽ có thao tác ngược lại: {SP} ® IP và SP ¬ SP + 2

· SP ¬ SP – 2 và địa chỉ lệch của lệnh trở về được cất vào ngăn xếp: {SP}¬CS.

· SP ¬ SP – 2 và địa chỉ cơ sở của lệnh trở về được cất vào ngăn xếp:{SP}¬IP.

· IP ¬ địa chỉ lệch của chương trình con. CS ¬ địa chỉ cơ sở của chương trình con.

· Khi gặp lệnh Ret tại cuối chương trình con thì sẽ thao tác ngược lại: {SP} ® IP và SP ¬ SP + 2.

{SP} ® CS và SP ¬ SP + 2.

Cú pháp: sau đây là các đạng khác nhau của các lệnh gọi chương trình con và cách tính địa chỉ của chương trình con:

¨CALL Multiple: gọi chương trình con có tên tên là Multiple trong cùng đoạn mã với chương trình chính, chương trình con này nằm trong giới hạn dịch chuyển –32Kbyte (dịch về phía địa chỉ thấp) hoặc (32K-1)byte (dịch về phía địa chỉ cao) so với lệnh tiếp theo ngay sau lệnh CALL. Sau khi cất IP cũ (địa chỉ trở về) vào ngăn xếp, IP mới được tính: IP ¬ IP + Dịch chuyển .

¨ CALL Divi: gọi chương trình con tên Divi ở đoạn mã khác. Trong chương trình hợp ngữ Divi phải được khai báo là một chương trình con ở xa:

Divi proc far

Địa chỉ của chương trình con là địa chỉ CS:IP của Divi.

¨ CALL BX: gọi trực tiếp một chương trình con cùng đoạn, lệnh đầu tiên của chương trình con dịch chuyển so với đầu đoạn bằng nội dung của thanh ghi BX, do đó IP ¬ BX (SI, DI có thể dùng thay chổ của BX).

¨ CALL WORD PTR [BX]: gọi chương trình con không nằm trong cùng một đoạn mã, chương trình con có địa chỉ dịch chuyển (tính từ lệnh tiếp ngay sau lệnh gọi tới lệnh đầu tiên chương trình con) chứa trong hai ô nhớ do BX và BX+1 chỉ ra trong đoạn DS. Địa chỉ lệch này sẽ đưa vào IP (SI, DI có thể dùng thay chổ cho BX).

¨ CALL DWORD PTR [BX]: gọi chương trình con không nằm trong cùng một đoạn mã, chương trình con có địa chỉ CS:IP, giá trị gán cho IP và CS chứa trong 4 ô nhớ do BX và BX + 1 (cho IP) BX +2 và BX + 3 (cho CS) chỉ ra trong đoạn DS (SI, DI có thể dùng thay chỗ của BX).

Một phần của tài liệu Thiết kế và thi công Kit vi xử lý 8086 (Trang 88 - 90)