2011-11-07 45 views
6

Tôi đã đọc xung quanh và với Bộ chỉ dẫn 8086, nó nói rằng một CMP (so sánh) có thể đặt Cờ mang theo. Tôi hiểu rằng một so sánh trừ hai toán hạng nhưng tôi đã tự hỏi nếu có ai có thể cung cấp một ví dụ khi đó là trường hợp.Tại sao CMP (so sánh) đôi khi đặt một Cờ Carry trong lắp ráp 8086?

Tôi không thể hiểu ý tưởng thêm số và số âm sẽ đặt cờ mang theo. Tôi đã đọc vào lá cờ vay nhưng tôi chỉ cần một ví dụ để làm rõ sự hiểu biết của tôi về một hướng dẫn so sánh.

Ngoài ra, tôi hiểu rằng nếu 3 - 5 = -2 sẽ đặt cờ phủ định ... khi nào được thực hiện?

+0

Tuyên bố "Tôi cần làm ví dụ" làm cho âm thanh này giống như bài tập về nhà. Nếu bạn chỉ gỡ lỗi thông qua một số mã hiện có và xem cờ CY, tôi chắc chắn bạn sẽ thấy nó được đặt sau một số hướng dẫn ADD. –

+0

Vâng, tôi đang tạo kiến ​​trúc bộ chỉ dẫn của riêng mình và tôi chỉ đọc hướng dẫn 8086 và tự hỏi làm thế nào so sánh (trừ 2 toán hạng và đặt cờ tương ứng) có thể đặt cờ mang.Tôi biết khi ADD đặt carry, nhưng tôi là một chút hoài nghi về trừ/mang theo (không nên nhầm lẫn với vay). – faul

+0

trên 8086 (và nhiều thứ khác), cờ mang theo thực hiện nhiệm vụ gấp đôi và đại diện cho khoản vay trong phép trừ hoặc so sánh các phép toán. Nếu bạn so sánh nơi giá trị được so sánh lớn hơn giá trị trong sổ đăng ký, có một khoản vay, ví dụ: cờ CY được đặt. Nếu giá trị bằng hoặc nhỏ hơn thanh ghi, không có vay và CY sẽ bị xóa. – JustJeff

Trả lời

4
  • Cờ thực hiện được đặt sau khi thao tác dẫn đến tràn hoặc tràn. Ví dụ, trừ 10 từ 6 sẽ dẫn đến một dòng dưới và đặt cờ mang theo. Tương tự, việc thêm 1 vào giá trị tối đa của thanh ghi sẽ dẫn đến tràn và đặt cờ mang theo.
  • Cờ mang cũng được sửa đổi trong quá trình dịch chuyển, nó được đặt với giá trị của bit cuối cùng được chuyển ra khỏi thanh ghi đích.
  • Thử nghiệm bit sẽ đặt giá trị của bit thử nghiệm vào cờ mang . Opcodes thực hiện điều này: BT, BTC, BTR và BTS.
  • Hướng dẫn ảnh hưởng trực tiếp đến Cờ thực hiện: CLC, CMC và STC.
  • Trong khi so sánh, cờ di chuyển được đặt giống như hai toán hạng đã được trừ.
  • Trong khi phủ định (NEG), cờ di chuyển được đặt trừ khi toán hạng là bằng không, trong trường hợp này nó bị xóa.
2

Cờ thực hiện thường được đặt khi sử dụng số học chưa ký. Ví dụ, thêm hai unsigned (có kết quả không phù hợp trong đăng ký) số sẽ không nâng cao cờ tràn nhưng chỉ mang cờ. Tuy nhiên, khi sử dụng số học đã ký, cờ tràn được đặt trong sự kiện như vậy.

1

Bạn có thể tìm thấy ví dụ về thời điểm cờ mang và tràn được đặt thành 0 và 1 sau khi cộng hoặc trừ số nguyên trong this answer cho một câu hỏi liên quan.
Bạn cũng có thể tìm thấy mẫu mã C mô phỏng thêm bằng cách mang và trừ với hướng dẫn mượn cho số 8 bit và bạn có thể chơi với điều đó, có thể nhận được nhiều ví dụ hơn.

Các định dạng đầu ra có cái gì đó như thế này:
127(127) - 255( -1) - 1 = 127(127) CY=1 OV=0
đâu mỗi số được biểu diễn dưới dạng cả unsigned và ngoặc ký (bổ sung 2 của) bên cạnh nó. Số trước = là cờ mang theo trước ADC/SBB. CY=OV= hiển thị cờ mang và tràn sau ADC/SBB.

So sánh thực hiện tương tự như trừ đi mà không mượn, ngoại trừ nó chỉ ảnh hưởng đến thẻ mang, tràn, dấu và cờ 0 (và chẵn lẻ và mang phụ, nhưng chúng không quan trọng ở đây) mà không sửa đổi bất kỳ số nào trong sổ đăng ký /ký ức.

Các vấn đề liên quan