Lập trình hợp ngữ cho bộ VĐK 8051
Số trang: 21
Loại file: pdf
Dung lượng: 158.77 KB
Lượt xem: 18
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
• Mã máy • Cá chế độ đị h đị chỉ của Các hế định địa hỉ ủ 8051 • Các lệnh Jump, Loop, Call • Chương trình con g • Các vòng lặp tạo thời gian giữ chậm đơn giảnMã đối tượng của 8051• Trình hợp dịch sẽ chuyển mã hợp ngữ sang mã máy/mã đối tượng • Mã đối tượng là một dãy dài các lệnh của máy á • Mỗi lệnh của máy có thể là một hoặc nhiều byte y g • Mỗi lệnh của máy có thể là giá trị nhị phân và được viết...
Nội dung trích xuất từ tài liệu:
Lập trình hợp ngữ cho bộ VĐK 8051 Lập trình hợp ngữ cho bộ VĐK 8051 Bài 3 Bộ môn TĐ Khoa KTĐK Các chủ đề• Mã máy• Cá chế độ đị h đị chỉ của Các hế định địa hỉ ủ 8051• Các lệnh Jump, Loop, Call• Chương trình con g• Các vòng lặp tạo thời gian giữ chậm đơn giản Mã đối tượng của 8051• Trình hợp dịch sẽ chuyển mã hợp ngữ sang mã máy/mã đối tượng• Mã đối tượng là một dãy dài các lệnh của máy á• Mỗi lệnh của máy có thể là một hoặc nhiều byte• Mỗi lệnh của máy có thể là giá trị nhị phân y g và được viết dưới dạng ký hiệu của số Hex Mã đối tượng của 8051• Trình hợp dịch cung cấp một tệp .lst trong khi hợp dịch p• Lệnh được dịch sang mã máy g y theo từng dòng đã viếtMã đối tượng của 8051 Các chế độ định địa chỉ của 8051• CPU có thể truy cập dữ liệu theo một số cách sau – Dữ liệu xác định trực tiếp trong câu lệnh ế – Sử dụng các chế độ định địa chỉ khác nhau để lưu giữ dữ liệu vào bộ nhớ mã lệnh và bộ nhớ dữ liệu• Có 5 chế độ định địa chỉ ế – Tức thời – Thanh ghi – Trực tiếp – Gián tiếp qua thanh ghi – chỉ số hỉ ố 1. Chế độ định địa chỉ tức thời• Toán hạng (dữ liệu) được xác định trực tiếp trong câu lệnh (mã lệnh) ( )• Toán hạng là một hằng số, nhận được trong khi hợp dịch• Trước dữ liệu tức thời phải có dấu “#” ấ• Ví dụ: 2.Chế độ định địa chỉ qua thanh ghi• Bao gồm các thanh ghi được sử dụng để lưu dữ liệu• Đưa toán hạng trong thanh ghi và chuyển nó vào thanh ghi đã chỉ ra trong câu lệnh• Thanh ghi nguồn và đích phải phù hợp về kích thước• Do đó không thể có lệnh chuyển từ một thanh ghi bất kỳ tới một thanh ghi ới ộ h h hi – Mov R4, R7 ; không hợp lệ – Kiểm tra danh sách lệnh trước khi sử dụng – Hợp dịch sẽ gây lỗi trong các trường hợp (…) 3.Chế độ định địa chỉ trực tiếp• Th hiệ với các dữ liệu được lưu giữ trong RAM và các Thực hiện ới á liệ đ l iữ à á thanh ghi – Mọi vị trí bộ nhớ có thể truy cập được thông qua các địa chỉ – T Tương t với các thiết bị ngoại vi (SFR) các th h ghi, các cổng tự ới á i i (SFR), á thanh hi á ổ ở 8051• Sử dụng trực tiếp địa chỉ của toán hạng trong lệnh – Mov a, 40H a ; A ← mem[40H] (không có dấu # trước 40H)• Địa chỉ thanh ghi là địa chỉ trực tiếp – Mov A, 4H ; 4H là địa chỉ của R4 – Mov A R4 A, ; giống lệnh trước nhưng có sự khác nhau về ; mã lệnh• Mọi thanh ghi và SFR đều có địa chỉ• Ngăn xếp ở 8051 chỉ sử dụng trong các chế độ định địa chỉ trực tiếp 4.Chế độ gián tiếp qua thanh ghi ế ế• Thanh ghi được sử dụng như là con trỏ – Thanh ghi lưu địa chỉ của dữ liệu• Chỉ có R0, R1 và DPTR có thể được sử dụng cho mục đích này• R0 và R1 có thể được sử dụng cho bộ nhớ trong (256 byte bao gồm cả SFR) hoặc từ 00H tới FFH của bộ nhớ ngoài – Mov A, @R0 ; A←internal_mem[R0] – Mov @R1, A ; A←internal_mem[R1] – Movx A @R0 A, ; A←external_mem[R0] A←external mem[R0]• DPTR có thể được sử dụng cho bộ nhớ ngoài, cho cả bộ nhớ – Movx A, @DPTR ; A←external_mem[DPTR] A A←external mem[DPTR] – Movx @DPTR, A ; ngược lại 5.Chế độ định địa chỉ chỉ số• Sử dụng một thanh ghi để lưu con trỏ cơ sở và một thanh ghi lưu giá trị offset• Địa chỉ thực là sum=base+offset – Chuyển byte mã lệnh có liên quan tới DPTR vào A. Địa chỉ thực là DPTR +A • Movc A, @A+DPTR ;A← ext_code_mem[(A+PC)]• Được sử dụng phổ biến để truy cập các dữ liệu của bảng, các mảng dữ liệu, tạo tham số … trong bộ nhớ chương trình (ROM) ố Ví dụ về chế độ định địa chỉ chỉ số• Lập trình để đọc giá trị x từ P1 và gửi x2 tới P2 ORG 0 ; assembler directive mov DPTR #LUT ; 300H i th LUT address DPTR, is the dd mov A, #0FFH mov P1, A ; program the p P1 to input data p g port p Again: mov A, P1 ; read x movc A, @A+DPTR ; get x2 from LUT mov P2 A ; output x2 to P2 P2, sjmp again ; for (1) loop ORG 300H ;Look-up Table starts at 0x0300 LUT: LUT DB 0 1, 4, 9, 16, 25, 36, 49, 64, 81 0, 1 4 9 16 25 36 49 64 Lệnh điều khiển chương trình• Rẽ nhánh không điều kiện – Ajmp addr11 ; nhảy tuyệt đối – Ljmp addr16 j p ; nhảy dài ( byte = 1byte code + 2byte địa chỉ đích) y (3 y y y ) – Sjmp rel ; nhảy ngắn tới địa chỉ thực ...
Nội dung trích xuất từ tài liệu:
Lập trình hợp ngữ cho bộ VĐK 8051 Lập trình hợp ngữ cho bộ VĐK 8051 Bài 3 Bộ môn TĐ Khoa KTĐK Các chủ đề• Mã máy• Cá chế độ đị h đị chỉ của Các hế định địa hỉ ủ 8051• Các lệnh Jump, Loop, Call• Chương trình con g• Các vòng lặp tạo thời gian giữ chậm đơn giản Mã đối tượng của 8051• Trình hợp dịch sẽ chuyển mã hợp ngữ sang mã máy/mã đối tượng• Mã đối tượng là một dãy dài các lệnh của máy á• Mỗi lệnh của máy có thể là một hoặc nhiều byte• Mỗi lệnh của máy có thể là giá trị nhị phân y g và được viết dưới dạng ký hiệu của số Hex Mã đối tượng của 8051• Trình hợp dịch cung cấp một tệp .lst trong khi hợp dịch p• Lệnh được dịch sang mã máy g y theo từng dòng đã viếtMã đối tượng của 8051 Các chế độ định địa chỉ của 8051• CPU có thể truy cập dữ liệu theo một số cách sau – Dữ liệu xác định trực tiếp trong câu lệnh ế – Sử dụng các chế độ định địa chỉ khác nhau để lưu giữ dữ liệu vào bộ nhớ mã lệnh và bộ nhớ dữ liệu• Có 5 chế độ định địa chỉ ế – Tức thời – Thanh ghi – Trực tiếp – Gián tiếp qua thanh ghi – chỉ số hỉ ố 1. Chế độ định địa chỉ tức thời• Toán hạng (dữ liệu) được xác định trực tiếp trong câu lệnh (mã lệnh) ( )• Toán hạng là một hằng số, nhận được trong khi hợp dịch• Trước dữ liệu tức thời phải có dấu “#” ấ• Ví dụ: 2.Chế độ định địa chỉ qua thanh ghi• Bao gồm các thanh ghi được sử dụng để lưu dữ liệu• Đưa toán hạng trong thanh ghi và chuyển nó vào thanh ghi đã chỉ ra trong câu lệnh• Thanh ghi nguồn và đích phải phù hợp về kích thước• Do đó không thể có lệnh chuyển từ một thanh ghi bất kỳ tới một thanh ghi ới ộ h h hi – Mov R4, R7 ; không hợp lệ – Kiểm tra danh sách lệnh trước khi sử dụng – Hợp dịch sẽ gây lỗi trong các trường hợp (…) 3.Chế độ định địa chỉ trực tiếp• Th hiệ với các dữ liệu được lưu giữ trong RAM và các Thực hiện ới á liệ đ l iữ à á thanh ghi – Mọi vị trí bộ nhớ có thể truy cập được thông qua các địa chỉ – T Tương t với các thiết bị ngoại vi (SFR) các th h ghi, các cổng tự ới á i i (SFR), á thanh hi á ổ ở 8051• Sử dụng trực tiếp địa chỉ của toán hạng trong lệnh – Mov a, 40H a ; A ← mem[40H] (không có dấu # trước 40H)• Địa chỉ thanh ghi là địa chỉ trực tiếp – Mov A, 4H ; 4H là địa chỉ của R4 – Mov A R4 A, ; giống lệnh trước nhưng có sự khác nhau về ; mã lệnh• Mọi thanh ghi và SFR đều có địa chỉ• Ngăn xếp ở 8051 chỉ sử dụng trong các chế độ định địa chỉ trực tiếp 4.Chế độ gián tiếp qua thanh ghi ế ế• Thanh ghi được sử dụng như là con trỏ – Thanh ghi lưu địa chỉ của dữ liệu• Chỉ có R0, R1 và DPTR có thể được sử dụng cho mục đích này• R0 và R1 có thể được sử dụng cho bộ nhớ trong (256 byte bao gồm cả SFR) hoặc từ 00H tới FFH của bộ nhớ ngoài – Mov A, @R0 ; A←internal_mem[R0] – Mov @R1, A ; A←internal_mem[R1] – Movx A @R0 A, ; A←external_mem[R0] A←external mem[R0]• DPTR có thể được sử dụng cho bộ nhớ ngoài, cho cả bộ nhớ – Movx A, @DPTR ; A←external_mem[DPTR] A A←external mem[DPTR] – Movx @DPTR, A ; ngược lại 5.Chế độ định địa chỉ chỉ số• Sử dụng một thanh ghi để lưu con trỏ cơ sở và một thanh ghi lưu giá trị offset• Địa chỉ thực là sum=base+offset – Chuyển byte mã lệnh có liên quan tới DPTR vào A. Địa chỉ thực là DPTR +A • Movc A, @A+DPTR ;A← ext_code_mem[(A+PC)]• Được sử dụng phổ biến để truy cập các dữ liệu của bảng, các mảng dữ liệu, tạo tham số … trong bộ nhớ chương trình (ROM) ố Ví dụ về chế độ định địa chỉ chỉ số• Lập trình để đọc giá trị x từ P1 và gửi x2 tới P2 ORG 0 ; assembler directive mov DPTR #LUT ; 300H i th LUT address DPTR, is the dd mov A, #0FFH mov P1, A ; program the p P1 to input data p g port p Again: mov A, P1 ; read x movc A, @A+DPTR ; get x2 from LUT mov P2 A ; output x2 to P2 P2, sjmp again ; for (1) loop ORG 300H ;Look-up Table starts at 0x0300 LUT: LUT DB 0 1, 4, 9, 16, 25, 36, 49, 64, 81 0, 1 4 9 16 25 36 49 64 Lệnh điều khiển chương trình• Rẽ nhánh không điều kiện – Ajmp addr11 ; nhảy tuyệt đối – Ljmp addr16 j p ; nhảy dài ( byte = 1byte code + 2byte địa chỉ đích) y (3 y y y ) – Sjmp rel ; nhảy ngắn tới địa chỉ thực ...
Tài liệu liên quan:
-
Đề cương chi tiết học phần Trí tuệ nhân tạo
12 trang 444 0 0 -
Đề cương chi tiết học phần Vi xử lý
12 trang 300 0 0 -
79 trang 231 0 0
-
Đồ án: Kỹ thuật xử lý ảnh sử dụng biến đổi Wavelet
41 trang 220 0 0 -
ĐỀ TÀI THIẾT KẾ QUY TRÌNH CÔNG NGHỆ GIA CÔNG BÍCH ĐUÔI ( TẬP THUYẾT MINH)
54 trang 202 0 0 -
Luận văn Thạc sĩ Kỹ thuật: Ứng dụng Blockchain trong bảo mật IoT
90 trang 193 1 0 -
Đồ án tốt nghiệp: Thiết kế kỹ thuật máy ép thủy lực tải trọng 70 tấn phục vụ cho nhà máy Z751
84 trang 183 0 0 -
Đồ án: Thiết kế bộ điều khiển luật PID điều khiển động cơ DC
94 trang 158 0 0 -
Đề cương chi tiết học phần Thực tập Kỹ thuật truyền hình
16 trang 157 0 0 -
65 trang 150 0 0