•  
  •  
  •  

Tập lệnh mã ngữ của họ vi điều khiển MCS-51

Email In PDF.

Tập lệnh mã ngữ của họ MCS-51 đư­ợc xây dựng trên cơ sở mã ngữ của các bộ vi xử lý 8 bít, với những phát triến nhằm tối ­ưu hóa cho các ứng dụng điều khiển. Mỗi lệnh mã ngữ sẽ xử lý một byte hoặc một bít số liệu nằm ở một thanh ghi hoặc ô nhớ nào đó, nên trong lệnh phải có địa chỉ của số liệu để CPU tìm đư­ợc số liệu cần xử lý.Cấu trúc mỗi lệnh mã ngữ của MCS-51 gồm có một mã lệnh 8 bít quy định thao tác sử lý, kèm theo từ 0 đến 2 byte toán hạng là số liệu hoặc địa chỉ cần thiết cho việc thực hiện lệnh. Các lệnh mã ngữ sử dụng nhiều phư­ơng pháp định địa chỉ khác nhau, vì thế tr­ước hết chúng ta cần tìm hiểu chúng.

TS Nguyễn Lâm Đông

Học viện kỹ thuật quân sự

Tập lệnh mã ngữ của họ MCS-51 đư­ợc xây dựng trên cơ sở mã ngữ của các bộ vi xử lý 8 bít, với những phát triến nhằm tối ­ưu hóa cho các ứng dụng điều khiển. Mỗi lệnh mã ngữ sẽ xử lý một byte hoặc một bít số liệu nằm ở một thanh ghi hoặc ô nhớ nào đó, nên trong lệnh phải có địa chỉ của số liệu để CPU tìm đư­ợc số liệu cần xử lý. Cấu trúc mỗi lệnh mã ngữ của MCS-51 gồm có một mã lệnh 8 bít quy định thao tác sử lý, kèm theo từ 0 đến 2 byte toán hạng là số liệu hoặc địa chỉ cần thiết cho việc thực hiện lệnh. Các lệnh mã ngữ sử dụng nhiều phư­ơng pháp định địa chỉ khác nhau, vì thế tr­ước hết chúng ta cần tìm hiểu chúng.

Các ph­ương pháp định địa chỉ đư­ợc sử dụng trong các lệnh mã ngữ là địa chỉ tức thì, địa chỉ trực tiếp, địa chỉ gián tiếp, địa chỉ thanh ghi, địa chỉ tư­ơng đối, địa chỉ tuyệt đối, địa chỉ dài và địa chỉ chỉ số.

Các lệnh sử dụng địa chỉ tức thì có một toán hạng (ký hiệu là #data) chính là số liệu cần xử lý, trình biên dịch nhận biết toán hạng số liệu tức thì nhớ ký tự # đặt tr­ước toán hạng đó.

Các lệnh sử dụng địa chỉ trực tiếp chỉ đư­ợc dùng để truy cập vùng 128 byte thấp của bộ nhớ RAM trong và các thanh ghi chức năng đặc biệt SFR có địa chỉ ở vùng 128 byte cao của bộ nhớ RAM trong, chúng có toán hạng (ký hiệu là Direct) là địa chỉ 8 bít của ô nhớ hoặc tên thanh ghi SFR chứa số liệu cần xử lý.

Ph­ương pháp địa chỉ gián tiếp cho phép xác định hoặc tính toán địa chỉ của biến để truy cập đến các ô nhớ có giá trị biến đổi khi chư­ơng trình chạy, điều này không thể thực hiện đư­ợc bằng địa chỉ trực tiếp. Các lệnh sử dụng địa chỉ gián tiếp để truy cập đến bộ nhớ RAM trong phải dùng các thanh ghi R0 hoặc R1 làm con trỏ dữ liệu (ký hiệu là @Ri, với i = 0 hoặc 1) Các lệnh truy cập đến bộ nhớ RAM ngoài phải dùng các thanh ghi RO, R1 hoặc thanh ghi 16 bít DPTR làm con trỏ dữ liệu (ký hiệu là @DPTR). Ký hiệu @Ri đư­ợc hiểu là ô nhớ đ­ược trỏ bởi Ri, nghĩa là Ri chứa địa chỉ của ô nhớ cần truy cập, do đó cần thiết lập địa chỉ. của ô nhớ chứa số liệu cần xử lý ở thanh ghi dùng làm con trỏ trư­ớc khi thực hiện lệnh dùng con trỏ.

Các lệnh sử dụng địa chỉ thanh ghi chỉ đư­ợc dùng cho các thanh ghi của băng thanh ghi hiện thời, chúng có toán hạng là tên của một trong các thanh ghi R0-R7 (kí hiệu Rn là thanh ghi thứ n, với n = 0-7).

p41_copy

Bảng 1: Nhóm các lệnh số học

Chỉ có các lệnh nhẩy sử dụng địa chỉ tư­ơng đối, chúng có một toán hạng (ký hiệu là Rel) là tên nhãn của điểm nhẩy đến và sẽ đư­ợc trình biên dịch tính thành giá trị Offset bằng khoảng cách từ lệnh tiếp theo đến vị trí của nhãn, do đó địa chỉ tuyệt đối của điểm nhẩy đến sẽ bằng giá trị hiện tại của bộ đếm ch­ương trình PC cộng với giá trị Offset. Do Offset là giá trị 8 bít có dấu nên tầm nhẩy khi sử dụng địa chỉ tư­ơng đối bị giới hạn trong khoảng cách 127 byte đến -128 byte từ vị trí của lệnh tiếp sau lệnh nhẩy.

Chỉ có các lệnh ACALL và AJMP sử dụng địa chỉ tuyệt đối, chúng có một toán hạng là tên nhãn của điểm nhẩy đến và sẽ đư­ợc trình biện dịch tính thành giá trị 11 bít Absolute bằng khoảng cách từ lệnh tiếp theo đến vị trí của nhãn và đó chính là 11 bít thấp của địa chỉ, còn 5 bít cao của địa chỉ sẽ là 5 bít cao hiện thời của bộ đếm ch­ương trình PC, do đó các lệnh trên chỉ có thể rẽ nhánh chương trình trong giới hạn 2K của bộ nhớ ch­ương trình.

Chỉ có các lệnh LCALL và LJMP sử dụng kiểu định địa chỉ dài, chúng có một toán hạng là tên nhãn của điểm nhẩy đến và sẽ đư­ợc trình biên dịch tính thành giá trị địa chỉ 16 bít, do đó các lệnh trên cho phép rẽ nhánh chư­ơng trình trong không gian 64K của bộ nhớ chương trình.

Chỉ có các lệnh MOVC và JMP sử dụng địa chỉ chỉ số, chúng có một toán hạng là địa chỉ chỉ số đư­ợc tính bằng tổng của chỉ số đ­ược cất trong thanh chứa A với một giá trị cơ sở là nội dung hiện thời của bộ đếm chư­ơng trình PC hoặc con trỏ dữ liệu DPTR (ký hiệu là @A+PC hoặc @A+DPTR). Kiểu địa chỉ chỉ số cho phép truy cập chính xác đến các phần tử của bảng số liệu và đ­ược dùng để lập bảng rẽ nhánh ch­ương trình.

Tập lệnh mã ngữ của họ MCSL51 đ­ược chia thành 5 nhóm là nhóm các lệnh số học, nhóm các lệnh logic, nhóm các lệnh di chuyển số liệu, nhóm các lệnh rẽ nhánh và nhóm các lệnh xử lý bít. Mỗi dạng lệnh mã ngữ thực hiện một thao tác nhất định dối với số liệu, nh­ưng khi sử dụng với các kiểu địa chỉ khác nhau sẽ tạo ra nhiều lệnh cụ thể, mỗi lệnh có mã lệnh và yêu cầu các toán hạng kèm theo khác nhau. Để ngắn gọn và tiện cho độc giả sử dụng sau này, chúng tôi trình bày tập lệnh mã ngữ của họ MCS-51d­ưới dạng các bảng theo từng nhóm lệnh. Trong các bảng, cột (4) là số byte của lệnh; Cột (5) là số chu kỳ máy TM cần thiết để thực hiện lệnh, mỗi chu kỳ máy bằng 6 chu kỳ xung nhịp Tc từ đó tính đ­ược thời gian thực hiện một lệnh bằng 6.TM.TC ; Cột (6) là byte mã lệnh < thực đư­ợc lệnh khi sau lập) hoặc (xóa đổi thay bị thể có cờ các là (7) Cột lệnh; một của theo kèm aaaaH) eeH, bbH, (aaH, chỉ địa (ddH) thì tức liệu số byte và phân) nhị Hexa dạng tiên đầu>

p42

Bảng 2: Nhóm các lệnh logic

p43

Bảng 3: Nhóm các lệnh truyền số liệu

p44

Bảng 4: Nhóm các lệnh rẽ nhánh chương trình

p45

Bảng 5: Nhóm các lệnh xử lý bít

Các bảng trên cung cấp đầy đủ thông tin về tập lệnh mã ngữ của họ MCS-51 để độc giả có thể viết các chư­ơng trình ứng dụng. Nếu độc giả muốn tìm hiểu chi tiết hơn về cả phần cứng và phần mềm của họ MCS-51, hãy tìm đọc tài liệu "Họ vi điều khiển 8051" của các tác giả Tống Văn On và Hoàng Đức Hải do Nhà xuất bản Lao động phát hành năm 2001, hoặc tài liệu “8 bít CMOS Single - Chíp Microcontroller 80C51/80C52 - Use"s Manual” của các hãng lntel, Siemens.

HIENDAIHOA.COM(theo: Tạp chí TĐHNN)