2012-11-17 41 views
5

Có hướng dẫn lắp ráp nào để chúng tôi trực tiếp "đặt" hoặc "xóa" cờ "OF" và "TF" trong đăng ký cờ 80 bit 16 bit của Intel không? Nếu không, chúng ta nên sử dụng mã giả nào?Hướng dẫn lắp ráp, thanh toán bù trừ cờ & TF

+0

Bạn đã đọc [Hướng dẫn sử dụng Intel] (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html) trước khi đặt câu hỏi này chưa? – DCoder

+0

http://en.wikipedia.org/wiki/Trap_flag –

+0

@DCoder bạn đã bao giờ tìm thấy mã giả cho những thứ như vậy trong Hướng dẫn sử dụng của Intel trước khi đăng bình luận chưa? –

Trả lời

6

http://en.wikipedia.org/wiki/Trap_flag

Các 8086 không có người hướng dẫn trực tiếp thiết lập hoặc thiết lập lại cờ bẫy. Các hoạt động này được thực hiện bằng cách đẩy thanh ghi cờ lên ngăn xếp, thay đổi bit cờ của bẫy thành những gì người lập trình muốn, và sau đó bật thanh ghi cờ trở lại ngăn xếp. Các hướng dẫn để thiết lập các cờ bẫy là:

PUSHF ; Push flags on stack 
MOV BP,SP ; Copy SP to BP for use as index 
OR WORD PTR[BP+0],0100H ; Set TF flag 
POPF ; Restore flag Register 

Để thiết lập lại cờ bẫy, chỉ cần thay thế các HOẶC hướng dẫn trong dãy đầu với hướng dẫn:

AND WORD PTR[BP+0],0FEFFH 

Để thiết và xóa cờ tràn, bạn có thể làm tương tự, thay thế 0100H bằng 0800H0FEFFh với 0F7FFh.

Hãy nhớ biết TF làm gì trước khi bạn đặt. Nó là một cái bẫy.

+1

Lý do để thực hiện 'mov bp, sp' và sử dụng * bp * đăng ký khi bạn chỉ có thể thực hiện' hoặc word [sp], 0100h' chỉ sử dụng * sp * register? – golem

+1

vì 8086 đang chạy ở chế độ thực 16 bit, không có cách nào để tạo từ [sp] vì chỉ có thể đăng ký cơ sở trong toán hạng bộ nhớ là BX, BP, SI và DI. – hlide