Tải bản đầy đủ (.pdf) (22 trang)

Tài liệu Lập trình cho 8051: Số học và p lôgic docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (177.49 KB, 22 trang )

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 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

×