
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 và 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)