2012-02-05 37 views
6

Tôi có đoạn mã lắp ráp sau đây mà tôi đang cố gắng hiểu. Nó được lắp ráp cho một vi điều khiển MC68332.Lệnh BEQ làm gì chính xác?

LOOP 
    some instructions 
    some more instructions 
BEQ LOOP 

Tôi googled BEQ và tôi đã tìm thấy nó có nghĩa là chi nhánh trên kết quả bằng không, nhưng tôi vẫn không thực sự hiểu nó làm gì. Liệu nó có so sánh kết quả của lệnh cuối cùng với 0 và nếu nó là 0, nó quay trở lại dòng LOOP?

+0

Bạn có thể cho biết bạn đang đề cập đến vi điều khiển nào không? –

+0

vi điều khiển là MC68332, cảm ơn bạn – jazzybazz

+0

đã thêm câu trả lời, hy vọng nó sẽ giúp ích. –

Trả lời

4

Trên gia đình Motorola 68k, nó là viết tắt của "nhánh nếu bằng" có nghĩa là "chuyển đến địa chỉ đã cho nếu cờ không được đặt" (như khi so sánh trước đó thành công).

Tuy nhiên 68332 dường như khác với điều đó và dựa trên "cú pháp chữ hoa", nó có thể là trình bao bọc macro xung quanh một lệnh khác về cơ bản thực hiện tương tự.

Người lập trình lắp ráp mã cổng từ các hệ thống khác có thể sử dụng các macro tương tự để giảm bớt quá trình chuyển.

+0

cảm ơn bạn, đó là chính xác những gì tôi nghĩ. lệnh cuối cùng trước BEQ là SUB D2, D2 luôn đặt cờ 0. do đó nó là một vòng lặp vô hạn. đúng? – jazzybazz

+0

đúng vậy trừ khi giả định của chúng tôi sai :) –

1

Câu trả lời chính xác sẽ phụ thuộc vào bộ vi điều khiển bạn đang sử dụng. Nói chung, nếu không có toán hạng, BEQ sẽ được dự kiến ​​sẽ chi nhánh nếu Accumulator là 0. Điều này rất có thể trên micros đơn giản, nơi Accumulator là thanh ghi chính để tính toán.

Bạn đang sử dụng vi điều khiển nào? Bạn sẽ có thể tìm thấy một định nghĩa cho hướng dẫn BEQ trong hướng dẫn sử dụng cho vi mô đó.

+0

MC68332. không có gì về lệnh BEQ trong hướng dẫn sử dụng – jazzybazz

+0

động từ "đến nhánh" nghĩa là gì? – jazzybazz

+0

Trang web của Freescale có biểu dữ liệu, bạn có thể tìm thấy liên kết đến trang web tại đây: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC68332. Chi nhánh có nghĩa là nhảy đến một điểm cụ thể trong chương trình, trong trường hợp này là nhãn "LOOP". Chức năng của mã này là lặp cho đến khi bộ tích lũy giữ giá trị "0". – Stefan

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