Tôi đã có câu hỏi đó trong Bài kiểm tra Kiến trúc Máy tính của tôi về Tin học học kỳ cuối: "Tại sao 'DIV EDX' trong MASM luôn tạo ngoại lệ cho bộ vi xử lý?"
Cơ chế tạo ngoại lệ là gì?Tại sao "DIV EDX" trong MASM luôn tạo ngoại lệ cho bộ vi xử lý?
5
A
Trả lời
12
Khi bạn thực hiện phân chia 1 bộ phận trên CPU x86, EDX: EAX (64 bit) được chia cho toán hạng 1 (32 bit). Kết quả được lưu trữ trong EAX (32 bit). Vì vậy, khi bạn chia cho EDX: EAX bởi EDX, những gì bạn nhận được là (EDX * 0x100000000 + EAX)/EDX, kết quả luôn trên 0x100000000 và không vừa với thanh ghi đích hoặc số chia là số không. Trong cả hai trường hợp, một ngoại lệ phân chia xảy ra.
Xem thêm this page (từ sách hướng dẫn dành cho nhà phát triển của Intel).
Lưu ý rằng điều này không cụ thể đối với bộ lắp ráp (MASM), nhưng đối với nền tảng trong trường hợp này.
Không liên quan gì đến MASM, btw. Và cơ chế là CPU. –