1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng môn vi xử lý chương 3 3

19 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nhóm lệnh số học của 8051
Tác giả Võ Thị Thu Hồng
Trường học Trường Đại học Công nghệ Thông tin và Truyền thông TP Hồ Chí Minh
Chuyên ngành Vi Xử Lý
Thể loại Bài giảng
Năm xuất bản 2023
Thành phố TP Hồ Chí Minh
Định dạng
Số trang 19
Dung lượng 686,11 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cộng không cờ nhớ ADD 2.. Hiệu chỉnh BCD DA... Các lệnh ảnh hưởng cờ Lệnh Cờ.

Trang 1

Nhóm lệnh số học

của 8051

Trang 2

Nhóm lệnh số học của 8051

1 Cộng không cờ nhớ (ADD)

2 Cộng qua cờ nhớ (ADDC)

3 Trừ (SUBB)

4 Tăng 1 (INC) / giảm 1 (DEC)

5 Nhân (MUL)

6 Chia (DIV)

7 Hiệu chỉnh BCD (DA)

Trang 3

Các lệnh ảnh hưởng cờ

Lệnh

Cờ

Trang 4

Cộng không cờ nhớ (ADD)

Các lệnh cộng

(HEX)

Diễn giải Số MC

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

ADDC A, Rn 0 0 1 1 1 n 2 n 1 n 0 38 ÷ 3F A  A + Rn +

CY

1

ADDC A, direct 0

a 7

0

a 6

1

a 5

1

a 4

0

a 3

1

a 2

0

a 1

1

a 0

35 Byte 2

A A + (direct) + CY

1

ADDC A, @Ri 0 0 1 1 0 1 1 i 36 ÷ 37 A  A + (Ri) +

CY

1

ADDC A, #data 0

d 7

0

d 6

1

d 5

1

d 4

0

d 3

1

d 2

0

d 1

0

d 0

34 Byte 2

A A + data + CY

1

(HEX)

Diễn giải Số MC

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

ADD A, Rn 0 0 1 0 1 n 2 n 1 n 0 28 ÷ 2F A  A + Rn 1 ADD A, direct 0

a 7

0

a 6

1

a 5

0

a 4

0

a 3

1

a 2

0

a 1

1

a 0

25 Byte 2

A A+(direct) 1 ADD A, @Ri 0 0 1 0 0 1 1 i 26 ÷ 27 A  A + (Ri) 1 ADD A, #data 0

d 7

0

d 6

1

d 5

0

d 4

0

d 3

1

d 2

0

d 1

0

d 0

24 Byte 2

A A + data 1

Trang 5

Lệnh ADD

MOV A,#25H; A=25H

ADD A ,#8BH; A= 25H + 8BH= B0H

(Opcode 24H 8BH)

AC=1 C=0 OV=0

1 0 1 1 0 0 0 0

0 0 1 0 0 1 0 1

1 0 0 0 1 0 1 1

+

AC=1

B 0 H

2 5 H

8 B H

+

AC=1

0

C=0

(+37) (-117) (-80)

Trang 6

MOV A,# 8CH; A=8CH

MOV 6,#0A4H; (06H)= A4H

ADD A ,R6 ; A=30H

(Opcode 2EH)

AC=1 C=1 OV=1

0 0 1 1 0 0 0 0

1 0 0 0 1 1 0 0

1 0 1 0 0 1 0 0

+

AC=1

3 0 H

8 C H

A 4 H

+

AC=1 C=1

(-116)

C=1 0

(-92) (+48) Sai

Lệnh ADD

Mặc định các thanh ghi

Rn đều ở Bank 0

Trang 7

MOV A,# 12H; A=12H

MOV 4,#0F5H; (04H)= F5H

SETB C ; đặt C=1

ADDC A , 4; A=08H

(Opcode 35H 04H)

AC=0 C=1 OV=0

0 0 0 0 1 0 0 0

0 0 0 1 0 0 1 0

1 1 1 1 0 1 0 1

+

AC=0

0 8 H

1 2 H

F 5 H

+

1 (C) 1 ( C )

C=1 1

Lệnh ADDC

Trang 8

Võ Thị Thu Hồng 8

Cộng 2 số nhị phân 16 bits

95H

41H

53H

R1 C9H R0 MOV A, R0 (1)

(2)

ADD A, R2

(3)

MOV R4, A

+ +

(4)

MOV A, R1

(5)

ADDC A, R3

(6)

MOV R5, A

C=1

X1

X2

Kết quả

Trang 9

Các lệnh trừ

(HEX)

Diễn giải Số MC

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

SUBB A, Rn 1 0 0 1 1 n 2 n 1 n 0 98 ÷ 9F A A - Rn -

CY

1

SUBB A, direct 1

a 7

0

a 6

0

a 5

1

a 4

0

a 3

1

a 2

0

a 1

1

a 0

95 Byte 2

A A - (direct)

- CY

1

SUBB A, @Ri 1 0 0 1 0 1 1 i 96 ÷ 97 A  A - (Ri) -

CY

1

SUBB A, #data 1

d 7

0

d 6

0

d 5

1

d 4

0

d 3

1

d 2

0

d 1

0

d 0

94 Byte 2

A A - data -

CY

1

SUBB A, Src ; A  A – Src – C

Chú ý : Nếu muốn trừ không qua cờ C, xóa cờ C trước khi thực hiện lệnh trừ

Trang 10

Lệnh trừ SUBB (ví dụ)

MOV A,# 25H ; A=25H

CLR C ; cho C=0

SUBB A , #60H; A=C5H

(Opcode 94H 60H)

SUBB A , #0B5H ; A=0FH

(Opcode 94H B5H)

AC=0 C=1 OV=0

2 5 H (+37)

6 0 H (+96)

C 5 H (- 59)

B 5 H (- 75)

1 (C)

1 0 H (+16)

0 F H (+15)

AC=1 C=0 OV=0

C=1 ( số mượn)

Trang 11

Lệnh tăng 1/ giảm 1

(HEX)

Diễn giải Số MC

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

INC A 0 0 0 0 0 1 0 0 04 A ← A + 1 1 INC Rn 0 0 0 0 1 n 2 n 1 n 0 08 ÷ 0F Rn ← Rn + 1 1 INC direct 0

a 7

0

a 6

0

a 5

0

a 4

0

a 3

1

a 2

0

a 1

1

a 0

05 Byte 2

(direct) ← (direct) + 1

1 INC @Ri 0 0 0 0 0 1 1 i 06 ÷ 07 (Ri) ← (Ri) + 1 1 INC DPTR 1 0 1 0 0 0 1 1 A3 DPTR ←

DPTR + 1

1

(HEX)

Diễn giải Số MC

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

DEC A 0 0 0 1 0 1 0 0 14 A ← A - 1 1 DEC Rn 0 0 0 1 1 n 2 n 1 n 0 18 ÷ 1F Rn ← Rn - 1 1 DEC direct 0

a 7

0

a 6

0

a 5

1

a 4

0

a 3

1

a 2

0

a 1

1

a 0

15 Byte 2

(direct) ← (direct) - 1

1 DEC @Ri 0 0 0 1 0 1 1 i 16 ÷ 17 (Ri) ← (Ri) - 1 1

Trang 12

MOV DPTR ,#10FFH

INC DPTR ; DPTR =1100H ( DPH= 11H DPL=00H)

(Opcode A3H)

để giảm 1 cho DPTR ,giả sử DPTR =1100H:

DEC DPL ; DPL=00H-1=FFH

MOV A,DPL ; cất DPL vào A ( A=FFH)

CJNE A, #0FFH, SKIP ; so sánh A và FFH

; nếu không bằng thì nhảy đến SKIP

DEC DPH ; A=FFH thì giảm tiếp DPH -> DPH=10H

Võ Thị Thu Hồng 12

Trang 13

Lệnh tăng 1/ giảm 1 (Ví dụ)

Ví dụ : Xóa ô nhớ trong Ram nội từ địa chỉ 30H đến 40H

Org 0000H

MOV R0, #30H

MOV A,#0

LOOP: MOV @R0,A

INC R0

CJNE R0,# 41H, LOOP

END

Ghi Chú: đoạn chương trình trên có 17 vòng lặp

Gợi ý: thử viết lại chương trình trên dùng lệnh DEC

Trang 14

Lệnh nhân MUL

Kết quả A*B gồm 2 bytes , A<- byte thấp,B<- byte cao

Cờ OV=1 khi A*B>255 (byte cao khác 0)

VD1: MOV A,#57H;

MOV B,#41H;

MUL AB ; A*B=1617H, B=16H A=17H OV=1

VD2: MOV A,#02H;

MOV B,#1AH;

MUL AB ; A*B=0034H, B=00H A=34H OV=0

(HEX)

Diễn giải Số MC

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

MUL AB 1 0 1 0 0 1 0 0 A4 A ← (A x B) 7 ÷ 0

B ← (A x B) 15 ÷ 8

4

Trang 15

Lệnh chia DIV

Kết quả A chia cho B , A<- thương số,B<- số dư

Cờ OV=1 khi A/0 (số chia=0)

VD1: MOV A,#24;

MOV B,#05H;

DIV AB ; A=04H B=04H OV=0

VD2: MOV A,#28H;

MOV B,#00H;

DIV AB ; A=28H, B=00H OV=1

(HEX)

Diễn giải Số MC

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

DIV AB 1 0 0 0 0 1 0 0 84 A ← thương số

B ← số dư

4

Trang 16

Võ Thị Thu Hồng 16

Lệnh chia DIV (Ví dụ)

Ví dụ : đổi số nhị phân 8 bits trong thanh ghi R0 sang

số BCD ,kết quả chứa trong 3 thanh ghi R7, R6,R5

ORG 0

MOV A, R0

MOV B,#10

DIV AB

MOV R5,B

MOV B,#10

DIV AB ;

MOV R6, B

MOV R7,A

END

TRĂM CHỤC ĐƠN VỊ

Gợi ý: thử viết lại chương trình trên theo cách khác

Trang 17

Hiệu chỉnh BCD DA

Hiệu chỉnh giá trị trong A thành 2 số BCD nén

+ Lệnh DA không có tác dụng sau lệnh INC hay DEC

+ Lệnh DA không đổi số nhị phân ra BCD

Mnemonic Opcode (binary) Opcode

(HEX)

Diễn giải Số MC

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

DA A 1 1 0 1 0 1 0 0 D4

Hiệu chỉnh nội dung của A thành số BCD 1

Trang 18

Hiệu chỉnh BCD DA (Ví dụ)

VD1: MOV A,#29H;

MOV B,#15H;

ADD A,B; A<- 29H+15H=3EH

DA A ; A <- 44H

VD2: MOV A,#99H;

MOV B,#22H;

ADD A,B; A<- 99H+22H=BBH

DA A ; A <- 21H

2 9

1 5

4 4

+

9 9

2 2

2 1

+

1

1

Trang 19

Hiệu chỉnh BCD DA (Ví dụ)

VD:Cộng 2 số BCD nén, 4 chữ số Số X1 chứa trong ô nhớ

31H và 30H, số X2 chứa trong ô nhớ 33H và 32H Kết quả

chứa vào 31H và 30H

MOV A,30H

ADD A,32H

DA A

MOV 30H,A

MOV A, 31H

ADDC A,33H

DA A

MOV 31H,A

31H 15H 23H 30H

X1

X2

64H

31H 80H 04H 30H

Kết quả

Ngày đăng: 02/11/2022, 09:55