Ассемблер и программирование для IBM PC



       

ГЛАВА 7. Логика и Организация Программы - часть 18


ъ Если некоторая команда устанавливает флаг, то данный флаг сохраняет это значение, пока другая команда его не изменит. Например, если за арифметической командой, которая устанавливает флаги, следуют команды MOV, то они не изменят флаги. Однако, для минимизации числа возможных ошибок, cледует кодировать команды условного перехода непосредственно после команд, устанавливающих проверяемые флаги.

ъ Выбирайте команды условного перехода соответственно операциям над знаковыми или беззнаковыми данными.

ъ Для вызова процедуры используйте команду CALL, а для возврата из процедуры - команду RET. Вызываемая процеду ра может, в свою очередь, вызвать другую процедуру, и если следовать существующим соглашениям, то команда RET всегда будет выбирать из стека правильный адрес возвра та. Единственные примеры в этой книге, где используется переход в процедуру вместо ее вызова - в начале COM- программ.

ъ Будьте внимательны при использовании индексных операн дов. Сравните: MOV AX,SI MOV AX,[SI]

Первая команда MOV пересылает в регистр AX содержимое регистра SI. Вторая команда MOV для доступа к пересылае мому слову в памяти использует относительный адрес в регистре SI.

ъ Используйте команды сдвига для удванивания значений и для деления пополам, но при этом внимательно выбирайте соответствующие команды для знаковых и беззнаковых данных.

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ------------------------------------------------------------

7.1. Какое максимальное количество байт могут обойти коман ды коpоткий JMP, LOOP и относительный переход? Какой машинный код операнда при этом генерируется? 7.2. Команда JMP начинается на шест. 0624. Определите адрес перехода, если шест. объектный код для операнда команды JMP: а) 27, б) 6B, в) C6. 7.3. Напишите программу вычисления 12 чисел Фибоначи: 1, 1, 2, 3, 5, 8, 13,... (каждое число в последовательности представляет собой сумму двух предыдущих чисел). Для организации цикла используйте команду LOOP. Выполните ассемблирование, компановку и с помощью отладчика DEBUG трассировку программы.




Содержание  Назад  Вперед