Tôi đang học về phân chia trong ngôn ngữ assembly. Theo cuốn sách tôi đang học từ, kết quả của hoạt động idiv được đặt trong eax và phần còn lại trong edx.Cách triển khai toán tử mod trong assembly
Bài tập trong sách là để triển khai number = result % divisor
khi lắp ráp.
Tôi đã nghĩ rằng điều này sẽ tương đương với hoạt động chia bình thường ngoại trừ edx sẽ là kết quả.
Điều này không hoạt động tuy nhiên và edx trở lại dường như là rác.
Tại sao? Làm thế nào để bạn thực hiện mã giả ở trên trong lắp ráp?
Tôi sẽ mã hóa một hàm C nhỏ xíu, và nhìn vào hội đồng được tạo ra (ví dụ với 'gcc -O -fverbose-asm -S tiny.c') –
Câu hỏi của bạn tương tự như http://stackoverflow.com/questions/8021772/assembly-language-how-to-do-modulo/8022107 Hiển thị mã thực sự của bạn nếu bạn gặp sự cố cụ thể (rất có thể bạn không xóa phần trên của rdx: rax, edx: eax hoặc dx: rìu). – user786653
Khó đoán mà không nhìn thấy mã, nhưng một lỗi phổ biến là quên không edx trước idiv. –