0000 Cộn g1 (trở thành số 80 dạng Hex)

Một phần của tài liệu Tài liệu Vi xử lý 8051 ppt (Trang 74 - 77)

- R 3= 23 0010 0011 + 1101 1101 bù 2 của R3 (b−ớc 1) 1C 1 0001 1100 1C (b−ớc 2)

1000 0000 Cộn g1 (trở thành số 80 dạng Hex)

Vậy - 128 = 80H là biểu diễn số có dấu dạng bù 2 của - 128.

Từ các ví dụ trên đây ta thấy rõ ràng rằng dải của các số âm có dấu 8 bit là - 1 đến - 128. D−ới đây là liệt kê các số có dấu 8 bit:

Số thập phân Số nhị phân Số Hex

-128 1000 0000 80 -127 1000 0001 81 -126 1000 0010 82 ... ... ... -2 1111 1110 FE -1 1111 1111 FF 0 0000 0000 00 +1 0000 0001 01 +2 0000 0010 02 ... ... ... -127 0111 1111 FE

6.3.2 Vấn đề tràn trong các phép toán với số có dấụ

Khi sử dụng các số có dấu xuất hiện một vấn đề rất nghiêm trọng mà phải đ−ợc sử lý. Đó là vấn đề tràn, 8051 báo có lỗi bằng cách thiết lập cờ tràn OV nh−ng trách nhiệm của lập trình viên là phải cẩn thận với kết quả saị CPU chỉ hiểu 0 và 1 và nó làm ngơ với việc chuyển đổi số âm, số d−ơng của con ng−ờị Vậy tràn số là gì? Nếu kết quả của một phép toán trên các số có dấu mà quá lớn đối với thanh ghi thì xuất hiện sự tràn số và lập trình viên phải đ−ợc cảnh báọ Xét ví dụ 6.12 d−ới đâỵ

Khảo sát đoạn mR sau và phân tích kết quả. MOV A, # + 96 ; A = 0110 0000 (A = 60H) MOV R1, # + 70 ; R1 = 0100 0110 (R1 = 46H) AĐ A, R1 ; A = 1010 0110 = A6H = - 90 Sai !!! Lời giải: + 96 0110 0000 + + 70 0100 0110 - 166 1010 0110 và OV = 1

Theo CPU kết quả là -90 và đó là kết quả sai nên CPU bật cờ OV = 1 để báo tràn số.

Trong ví dụ 6.12 thì + 96 đ−ợc cộng với + 70 và kết quả theo CPU là - 90. Tại sao vậỷ Lý do là kết quả của + 96 + 70 = 172 lớn hơn số mà thanh ghi A có thể chứa đ−ợc. Cũng nh− tất cả mọi thanh ghi 8 bit khác, thanh ghi A chỉ chứa đ−ợc đến số + 127. Các nhà thiết kế của PCU tạo ra cờ tràn OV phục vụ riêng cho mục đích báo cho lập trình viên rằng kết quả của phép toán số có dấu là saị

6.3.3 Khi nào thì cờ tràn OV đ−ợc thiết lập?

Trong các phép toán với số có dấu 8 bit thì cờ OV đ−ợc bật lên 1 khi xuất hiện một trong hai điều kiện sau:

1. Cờ nhớ từ D6 sang D7 nh−ng không có nhớ ra từ D7 (cờ CY = 0) 2. Có nhớ ra từ D7 (cờ CY = 1) nh−ng không có nhớ từ D6 sang D7

Hay nói cách khác là cờ tràn OV đ−ợc bật lên 1 nếu có nhớ từ D6 sang D7 hoặc từ D7 nh−ng không đồng thời xảy ra cả haị Điều này có nghĩa là nếu có nhớ cả từ D6 sang D7 và từ D7 ra thì cờ OV = 0. Trong ví dụ 6.12 vì chỉ có nhớ từ D7 ra nên cờ OV = 1. Trong ví dụ 6.13, ví dụ 6.14 và 6.15 có minh hoạ thêm về sử dụng cờ tràn trong các phép số học với số có dấụ

Ví dụ 6.13:

HRy quan sát đoạn mR sau để ý đến vai trò của cờ OV. MOV A, # -128 ; A = 1000 0000 (A= 80H)

MOV R4, # -2 ; R4 = 1111 (R4 = FEH)

AĐ A, R4 ; A = 0111 1110 (A = 7EH = +126, invalid) Lời giải:

- 128 1000 0000 + - 2 1111 1110 + - 2 1111 1110

-130 0111 1110 và OV = 1

Theo CPU thì kết quả + 126 là kết quả sai, nên cờ OV = 1. Ví dụ 6.14:

MOV R1, # -5 ; R1 = 1111 1011 (R1 = FBH) AĐ A, R1 ; A = 1111 1001 (A = F9H = -7, correct, OV = 0) AĐ A, R1 ; A = 1111 1001 (A = F9H = -7, correct, OV = 0) Lời giải: - 2 1111 1110 + - 5 1111 1011 - 7 1111 1001 và OV = 0

Theo CPU thì kết quả - 7 là đúng nên cờ OV = 0. Ví dụ 6.15:

Theo dõi đoạn mR sau, chú ý vai trò của cờ OV. MOV A, # +7 ; A = 0000 0111 (A = 07H) MOV R1, # +18 ; R1 = 0001 0010 (R1 = 12H) AĐ A, R1 ; A = 1111 1001 (A = 19H = -25, correct, OV = 0) Lời giải: 7 0000 0111 - 18 0001 0010 25 0001 1001 và OV = 0

Theo CPU thì kết quả - 25 là đúng nên cờ OV = 0.

Từ các ví dụ trên đây ta có thể kết luận rằng trọng bất kỳ phép cộng số có dấu nào, cờ OV đều báo kết quả là đúng hay saị Nếu cờ OV = 1 thì kết quả là sai, còn nếu OV = 0 thì kết quả là đúng. Chúng ta có thể nhấn mạnh rằng, trong phép cộng các số không dấu ta phải hiển thị trạng thái của cờ CY (cờ nhớ) và trong phép cộng các số có dấu thì cờ tràn OV phải đ−ợc theo dõi bởi lập trình viên. Trong 8051 thì các lệnh nh− JNC và JC cho phép ch−ơng trình rẽ nhánh ngay sau phép cộng các số không dấu nh− ở phần 6.1. Đối với cờ tràn OV thì không có nh− vậỵ Tuy nhiên, điều này có thể đạt đ−ợc bằng lệnh “JB PSW.2” hoặc “JNB PSW.2” vì PSW thanh ghi cờ có thể đánh địa chỉ theo bit.

Một phần của tài liệu Tài liệu Vi xử lý 8051 ppt (Trang 74 - 77)

Tải bản đầy đủ (PDF)

(199 trang)