Lập trình cho 8051: Số học và
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 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
Đị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
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 cờ CY
Phép cộng BCD
BCD - số thập phân được mã hoá bởi số nhị phân
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ó
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 = 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)