Я написал код следующей сборки (за 8052 мягкий процессор), чтобы показать номер на 8 дисплеев 7-сегментных мою Altera DE-2 в:Почему данные MOV, данные возвращают регистр назначения?
mov HEX0, #0x98 ; show 9
mov HEX1, #0xC0 ; show 0
mov HEX2, #0xF9 ; show 1
mov HEX3, #0xF8 ; show 7
mov HEX4, #0x92 ; show 5
mov HEX5, #0x92 ; show 5
mov HEX6, #0x92 ; show 5
mov HEX7, #0xA4 ; show 2
HEXns определяются следующим образом:
HEX0 DATA 091H ; Zero turns the segment on
HEX1 DATA 092H ;
HEX2 DATA 093H ;
HEX3 DATA 094H ;
HEX4 DATA 08EH ;
HEX5 DATA 08FH ;
HEX6 DATA 096H ;
HEX7 DATA 097H ;
Вышеупомянутый код работает просто отлично сам, но когда я пытаюсь повернуть число, используя следующий код, все 7-сегментные дисплеи выводятся так, как если бы регистры HEXn были установлены в 0x00.
M0:
wait(2)
mov A, HEX0 ; store HEX0 in the accumulator
mov HEX0, HEX1
mov HEX1, HEX2
mov HEX2, HEX3
mov HEX3, HEX4
mov HEX4, HEX5
mov HEX5, HEX6
mov HEX6, HEX7
mov HEX7, A
ljmp M0
END
Здесь wait(2)
макрос, который использует около двух секунд на сумму тактовых циклов. Может ли кто-нибудь сказать мне (или даже спекулировать) о том, почему HEXn записывается в 0?
я могу Не находите ссылки на память в режиме памяти в 8052. Что происходит, когда вы перемещаете его через A? т.е. HEX2 - A, A - HEX1? (Нажмите A из HEX0 в стек, а затем поместите его, прежде чем переместить его на HEX7). – Mike