Ассемблер - PullRequest
       39

Ассемблер

0 голосов
/ 17 февраля 2011

Он дал эти вопросы а. 13, очевидно, самая большая часть данных в наборе выборок. После того, как 13 было сохранено в D0, каково было состояние CCR, когда с ним сравнивали другое число (просто укажите 5 битов и укажите, какие биты были запущены). б. Каково было состояние CCR после того, как последний фрагмент данных (0) был перемещен в регистр D1.

*    

ORG $400  
MOVEA.L #DATA,A0  
CLR.B   D0  
NEXT    MOVE.B (A0),D1  
BEQ EXIT  
CMP.B   D0,D1  
BLE EndTest  
MOVE.B  D1,D0  
EndTest ADDA.L  #1,A0  
BRA NEXT    
EXIT    STOP    #$2700  
*         
ORG $1000  
Data    DC.B    12,13,5,6,4,8,4,10,0      
END $400      

Я скомпилировал его, но я не вижу 5 бит в easy68k. Я знаю, что ccr состоит из флаговых битов, но я не уверен, что делать.

1 Ответ

1 голос
/ 17 февраля 2011

Этот цикл эквивалентен следующему коду C:

char *byte = data;
char cur, max = 0;

while ((cur = *byte++))
    if (cur > max) max = cur;

т.е. цикл всегда будет повторяться по всем значениям и завершаться, когда он находит ноль в конце. Это означает, что к тому моменту, когда вы нажмете EXIT, вы пройдете проверку BEQ EXIT, которая проверила результат предыдущей загрузки и нашла его равным нулю. CCR будет 0x ?? 04, т. Е. Только Z, установлен ноль флагов, поскольку именно это BEQ проверяет.

Что касается теста BLE, это сложная проверка флагов; Согласно справочнику Motorola 68k , таблица 3.19, он проверяет на Z || (N && !V) || (!N && V), то есть на взаимную исключительность N / V или ноль (что было бы равно часть), поэтому несколько комбинаций флагов могут привести к тому, что эта ветвь будет взята. Для ваших конкретных данных я бы предположил, что, учитывая, что предыдущее значение было 12, вы в конечном итоге установили N, то есть значение CCR 0x??08 (CMP на большинстве процессоров вычитает со сбросом и 12-13 отрицательно).

Что касается сборки m68k, этот викибук - хорошее введение. Он описывает условные тесты ветвей / флагов CCR, но не учитывает хитрости, указанные выше ...

...