- Nếu ở mức thấp, chương trình được thi hành từ bộ nhớ mở rộng (tối đa đến 64 Kbyte).
4.2.4. Các lệnh toán học
Thực hiện các phép tính cơ bản như +, -, *, /, … Kết quả sau khi thực hiện lệnh được lưu vào toán hạng đầu tiên trong lệnh
Các lệnh toán học như:
ADD, Phép cộng ADDC, Phép cộng có nhớ SUBB, Phép trừ
INC, Tăng giá trị thêm 1 đơn vị ( +1 ) DEC, Giảm giá trị đi 1 đơn vị ( -1 )
Chương 1. Giới thiệu chung về vi điều khiển
ADD
ADD A, nguồn ;A = A + nguồn
Lệnh ADD được dùng để cộng hai toán hạng. Toán hạng đích luôn là thanh ghi A trong khi đó toán hạng nguồn có thể là một thanh ghi dữ liệu trực tiếp hoặc là ở trong bộ nhớ.
Ví dụ:
Hãy biểu diễn xem các lệnh dưới đây tác động đến thanh ghi cờ như thế nào?
MOV A, # 0F5H ; A = F5H
ADD
Lời giải:
F5H 1111 0101
+ 0BH + 0000 1011 1 00H 0000 0000
Sau phép cộng, thanh ghi A (đích) chứa 00 và các cờ sẽ như sau: CY = 1 vì có phép nhớ từ D7
P = 0 vì số các số 1 là 0 (chẵn)
Chương 1. Giới thiệu chung về vi điều khiển
ADD
Ví dụ :
MOV A, #38H
ADD A, #2FH ; Sau khi cộng A = 67H, CY = 0
Lời giải: 38 00111000 + 2F 00101111 67 01100111 Cờ CY = 0 vì không có nhớ từ D7 Cờ AC = 1 vì có nhớ từ D3 sang D4 Cờ P = 1 vì thanh ghi A có 5 bit 1 (lẻ)
ADD
Bài tập:
Nạp giá trị 55H vào P1 Nạp giá trị CCH vào P2
Chương 1. Giới thiệu chung về vi điều khiển
SUBB
SUBB A, nguồn ; A = A - nguồn - CY.
Trong rất nhiều các bộ xử lý có hai lệnh khác nhau cho phép trừ đó là SUB và SUBB (trừ có mượn). Có hai trường hợp cho lệnh SUBB là: với CY = 0 và với CY = 1. Lưu ý ở đây ta dùng cờ CY để mượn.
Lệnh SUBB với CY = 0. Lệnh SUBB với CY = 1.
SUBB
Lệnh SUBB với CY = 0.
-Thực hiện lấy bù 2 của số trừ (toán hạng nguồn) -Cộng nó vào số bị trừ (A) -Đảo nhớ Ví dụ: MOV A,#86h SUBB A,#62h 86 1000 0110 Số bị trừ - 62 0110 0010 Số trừ
Chương 1. Giới thiệu chung về vi điều khiển
SUBB
Lệnh SUBB với CY = 0.
-Thực hiện lấy bù 2 của số trừ (toán hạng nguồn) -Cộng nó vào số bị trừ (A) -Đảo nhớ Ví dụ: MOV A,#62h SUBB A,#96h 62 0110 0010 Số bị trừ - 96 1001 0110 Số trừ 0110 1010 mã bù 2 CY =0 1100 1100 Cộng với số bị trừ CY =1 CC Đảo CY, kết quả - CC
SUBB
Lệnh SUBB khi CY = 1.
Lệnh này được dùng đối với các số nhiều byte và sẽ theo dõi việc mượn của toán hạng thấp. Nếu CY = 1 trước khi thực hiện SUBB thì nó cũng trừ 1 từ kết quả.
Ví dụ: CLR C ; CY = 0
MOV A, #62H ; A = 62H
SUBB A, #96H ; 62H - 96H = CCH với CY = 1
MOV P1, A ; Lưu kết quả vào P1
Chương 1. Giới thiệu chung về vi điều khiển MUL MUL AB ;A × Β ϖ◊ κ τ θυ 16 βιτ ế ả đượ đặχ τ τρονγ Α ϖ◊ Β. Κηι νην βψτε ϖ ι βψτε τη µ τ το〈ν η νγ πη ι τρονγ τηανη γηι Α ϖ◊ ớ ộ ạ ả το〈ν η νγ τη ηαι πη ι τρονγ τηανη γηι Β. Σαυ κηι νην κ τ θυ τρονγ ạ ứ ả ở ế ả ở χ〈χ τηανη γηι Α ϖ◊ Β. ς δ :ụ ΜΟς Α, #25Η ; Ν π ϖ◊ο Α γι〈 τρ 25Ηạ ị ΜΟς Β, #65Η ; Ν π ϖ◊ο Β γι〈 τρ 65Ηạ ị ΜΥΛ ΑΒ ; 25Η∗65Η = 0Ε99 ϖ ι Β = 0ΕΗ ϖ◊ Α = 99Ηớ