Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
177,49 KB
Nội dung
Lập trìnhcho 8051: Sốhọcvàplôgic Bài 4 Bộ môn TĐ Khoa KTĐK Các chủ đề • Phép tính sốhọc có dấu và không dấu •Số nhị phân và mã BCD •Lệnh cộng •Lệnh trừ •Lệnh nhân •Lệnh chia • Các phép toán lôgic • Các phép toán quay vòng và dịch Đị hỉ hábộ hớ th bitàálệ h đ bit• Địa chỉ hoá bộ nhớ theo bit và các lệnh đơn bit Phép cộng không dấu • Add A, source ; A=A+source • Có nhớ thì bit nhớ đư ợc lưu vào cờ CYợ mov A, #0F5H add A , #0BH ; A=F5+B0=00, CY=1, ;, • Phép cộng số 16 bit – Addc A, source ; A=A+source+CY, ; –Cộng các byte thấp sử dụng lệnh add – Ghi kết quả –cộng các byte cao hơn sử dụng addc Phép cộng không dấu •Ví dụ về phép cộng 16 bitụ ppộ g •Cộng UUVV và PPQQ clr C mov A, QQ add A, VV mov r6, A mov A, PP addc A, UU mov r7, A ế ố•Kết quả 16 bit cuối cụng trong r7:r6 và cờ CY Phép cộng BCDPhép cộng BCD • BCD - số thập phân được mã hoá bởi số nhị phân 4bitđ ử d để biể diễ ố thậ hâ từ 0 9– 4 bit được sử dụng để biểu diễn số thập phân từ 0-9 •Hai số trong mã BCD được biểu diễn trong 1 byte – 17 PBCD = 17 D = 11H • Phép cộng số BCD có thể không tạo ra số BCD hợp lệ. Do vậy phải dùng lệnh chuẩn hoá số BCD (da A) để làm chính xác nó khi ố il hd để h ẩ h ố•Sau khi cộng 2 số BCD gọi lệnh da để chuẩn hoá số PBCD mov A, #47H ; số BCD đầu tiên = 47d mov B #25H ;số BCD thứ hai = 25dmov B, #25H ; số BCD thứ hai = 25d add A, B ; A=6Ch (kết quả cộng nhị phân của 47H và 25H) da A ; A=72H (kết quả của phép cộng BCD) Phép cộng BCD • Để chính xác một số BCD không hợp lệ, cộng 6 vào số đó nếu nó lớn hơn 9 •Lệnh da thực hiện –Nếu phần thấp lớn hơn 9 hoặc AC =1 thì cộng 6 (0110) vào hầ hấphần thấp –Nếu phần cao lớn hơn 9 hoặc CY=1 thì cộng 6 vào phần cao Lệ hd hỉ thự hiệ ớilệ h ộ ADD Vớiá• Lệnh da chỉ thực hiện với lệnh cộng ADD. Với các lệnh khác (inc, sub vv .), thì việc làm chính xác nó đượcthựchiệnthủ công (bằng tay)được thực hiện thủ công (bằng tay) Phép trừ không dấu • Subb x, y ; x=x-y có mượn từ CY • Thao tác: –Biến đổi số bị trừ sang số bù hai (y) –Cộng nó với số trừ (x) Nếucờ CY đượcthiếtlập sau khi thựchiện phép trừ thì kết– Nếu cờ CY được thiết lập sau khi thực hiện phép trừ, thì kết quả là một số âm và đưa ra kết quả là số bù hai •lệnh subb thực hiện trừ có mượn, nếu CY được thiết ểlập trước lệnh call. Được sử dụng để thực hiện phép trừ số 16 bit Để thựchiện phép trừ đơngiản xoá CY trước khi gọilệnh– Để thực hiện phép trừ đơn giản, xoá CY trước khi gọi lệnh subb Phé ừ khô dấPhép trừ không dấu •Ví dụ clr c ; clear CY for sub operation mov A, #4CH ; subb A, #6EH ; two operands, do 4C – 6E jnc done ; if CY==0 result is positivejnc done ; if CY==0 result is positive cpl A ; CY=1, result negative. So find 2’s complement inc A ; by complementing A and adding 1 to it done: mov R1, A ; final result in R1 •Trừ 16 bit 2762H-1296H clr C ; clear Cy mov A, #62H ; subb A #96H ; 62H – 96H = CCH and CY=1subb A, #96H ; 62H 96H CCH and CY 1 mov R7, A ; store the lower byte of the result in R7 mov A, #27H ; now subtract the upper bytes subb A, #12H ; 27H – 12H – 1 = 14H mov R6 , A ; store upper byte of result in R6., ;ppy ; Final 16bit result is in R6:R7 Phép nhân và phép chia • MUL AB; AxB, đặt kết quả vào BA mov A #25H ; operand1: 25Hmov A, #25H ; operand1: 25H mov B, #65H ; operand2: 65H mul AB ; 25H * 65H = E99H ; B = 0EH, A = 99H • DIV AB; A/B, Thương số đặt vào A vàsố dư hchứa trong B mov A, #95H mov B #10mov B, #10 div AB ; A = 9 (quotient), B = 5 (remainder) Phé tí h ố h ódấ NộidPhép tính sốhọc có dấu - Nội dung •Giới thiệu về số có dấu –Sử dụng một bit làm bit dấu – Bit cao nhấtMSBđược gán cho bit dấu– Bit cao nhất MSB được gán cho bit dấu – Các bit còn lại biểu diễn giá trị • 8051 chỉ có các thanh ghi 8 bit – Các số có dấu có thể chỉ có 7 bit giá trịg ị – Các số dương trong 8051 = 0 tới +127 (7 bit) Các số âm từ 128 đến 1– Các số âm từ -128 đến -1 [...]... MSB Nếu hô MSB Nế MSB = 1, số đó là số âm • Giống như các ph p toán sốhọc (ađ sub mul, (ađ, sub, mul div …) có thể cần phải thực hiện trên các phần tử mảng và kết quả có thể là âm hoặc dương mảng, Ph p tính sốhọc có dấu • 8051 biểu diễn số âm trong lệnh sub Nhưng không đủ • Khi cần sử dụng các số có dấu, người l ptrình phải sử dụng ph p tính sốhọc có dấu • Hiện tượng tràn phải được xử lý Cờ nhớ là... trị của số có dấu ấ • 8051 đưa ra một cờ khác – OV (cờ tràn) cho mục đích này Ph p tính sốhọc có dấu • Ph p cộng • Ph p trừ Hiện tượng tràn • Cờ tràn có thể xuất hiện từ các giá trị của các số có dấu, ố ấ cờ này có thể thay đổi bit dấu dấ • Cờ tràn được kiểm tra t để phát hiện lỗi hát hiệ trong ph p tính sốhọc có dấu • Ví dụ Cờ OV • Sau khi thực hiện các ph p tính số học, OV được thiết l p nếu: –...Ph p tí h ố học ó dấu Các ố âm Phé tính số h có dấ – Cá số â • Biểu diễn số âm với số có dấu – Bit dấu (bit cao nhất) là 1 – Giá trị biểu diễn dưới dạng số bù 2 • Các ví dụ Các số có dấu – Cách dùng • Dữ liệu đựoc t p trung và lưu lại như một mảng của các số có dấu – Một số phần tử trong mảng có thể là âm, còn các phần tử khác có thể là dương – Việ xác đị h các số d Việc á định á... các trường h trên chỉ thị một kế quả sai trong ph p h p h hị kết i h tính • Sau khi thực hiện ph p tính sốhọc với các số có dấu, dấu kiểm tra cờ OV để xác định lỗi – Sử dụng lệnh jb PSW.2 hoặc j PSW.2 ụ g ệ j ặ jnb – PSW.2 = OV Các lệ h lô i Cá lệnh lôgic • AND – Anl dest, source; dest=dest AND source – Th ờ đ Thường được sử d ử dụng để che đi (đặt =0) một số bi trong h (đặ 0) ộ ố bit toán hạng • OR... bản thì đay là ph p trừ mà không thay dổi các toán hạng nhưng ảnh hưởng đến cờ CY – Dest > source => CY=0 – dest < source => CY=1 • Ví dụ – Giám sát P1 liên ti pvà thoát nếu P1 =63 ế Lệnh quay vòng và đổi chỗ • Quay vòng các bit được yêu cầu trong một số ứng dụng như ở cổng nối ti p, điều khiển … • Quay phải – Rr A ; quay A sang phải • Quay trái – Rl A ; quay A sang trái • Quay sang phải/trái với cờ... và bộ nhớ có thể địa hớ ó hể đị chỉ hoá bit (BAR) ( ) • Các cổng I/O (P0 -P3 ), B, PSW, IP, IE, ACC, SCON và TCON là các thanh ghi có thể địa chỉ hoá bit • Các bit của các BAR có thể xem như số thứ tự bit của thanh ghi (P0 .1, PSW.2, IE.4 …) hoặc bởi chính địa chỉ bit của chúng • Đại chỉ bit là địa chỉ cơ sở của thanh ghi + số thứ tự bit – Đại chỉ cơ sở của ACC là E0H, do đó ACC.1 = E1H, ACC.7=E7H – P0 ... sở là 80H, do đó P0 .0=80H, P0 .5=84H và sứ ti p tục xác định như vậy • 16 b của R trong là bit có thể đị chỉ h á byte ủ Ram bi ó hể địa hỉ hoá – 20H tới 2FH có địa chỉ bit từ 00H tới 7FH – Clr 67h ; xoá bit 7 ở vị trí 2CH trên RAM – Setb 05H ; thiết l p bit 5 ở vị trí 20H trên RAM Các thao tác đơn bit với cờ CY • 8051 có các lệnh đặc biệt để can thi p trực ti p tới cờ CY – S b C clr C cpl C; mov b, C;... source – Thường được sử dụng để thiết l p một số bit trong toán hạng • XOR – Xrl dest, source ; dest=dest XOR source – Thường được sử dụng để xoá một thanh ghi, kiểm tra nếu hai thanh ghi có giá trị giống nhau và đảo một số bit • Bù – Cpl A ;A A A=A’ • Các lệnh trên không ảnh hưởng đến bất cứ cờ nào Lệnh so sánh • CJNE – Cjle dest, source, địa chỉ – So sánh đích và nguồn và nhẩy tới địa chỉ chỉ ra nếu không... CY trong số quay (quay 9 bit) – Rlc A: D7→CY →D0 – Rrc: D0 →CY →D7 • Đổi chỗ – Swap A ; Đổi chỗ D7-D4 với D3-D0 Các lệnh đơn bit • Thiết l p một bit – Set bit_name ; bit=1 • Xoá một bit – Clr bit_name ; bit=0 • Lấy bù một bit – Cpl bit_name ; bit=bit’ p • Nhẩy có điều kiện dựa trên giá trị của một bit – Jb ( y nếu bit =1), j (nhảy nếu bit = 0), j J (nhảy ), jnb ( y ), jbc (nhảy nếu bit =1 và xoá bit... trực ti p tới cờ CY – S b C clr C cpl C; mov b, C; mov C, b; jnc, jc, anl C, b; Setb C; l C; l C b C C b j j lC b anl C, /b; orl C, b; orl C, /b – Anl C, /b ; C=CY AND b’ C C • Ví dụ Bật quạt (P2 .2) và tắt đèn (P2 .3) . L p trình cho 8051: Số học và p lôgic Bài 4 Bộ môn TĐ Khoa KTĐK Các chủ đề • Ph p tính số học có dấu và không dấu Số nhị phân và mã BCD •Lệnh. trường h p trên chỉ thị một kết quả sai trong ph p tính • Sau khi thựchiện ph p tính số họcvới các số có dấu• Sau khi thực hiện ph p tính số học với các số có