PDA

Просмотр полной версии : [Помогите!] Программирование микропроцессов


RamilkO
11.06.2012, 20:55
Послезавтра экзамен по архитектуре ЭВМ, а меня не пустят, если я лабы не сдам..нужно ответить на один вопрос..
Данный пример демонстрирует механизм отображения регистров, а также одну из особенностей операции умножения по версии процессора 8088. Нажнем на GenReg.88 и GenReg.s. В открывшемся окне трассера в правой верхней секции расположен текущей фрагмент программы. При этом стрелка курсора будет указывать на строку 4. После нажатия на клавишу Enter данная строка будет исполнена. В результате в регистр АХ загрузится значение 258. При этом регистр AH получит значение 1 , а регистр AL - 2. После исполнения строки 5 значения регистров AL и AH суммируются и значение регистра АН будет равно 3. После исполнения строки 6 в регистре СХ копируется содержимое переменной Times=10. После исполнения строки 7 в регистрах ВХ загружается адрес переменой muldat=2. При этом значение регистров АН=3, АL=2, АХ=770. Следующая команда в строке 8 после исполнения копирует содержимое переменной muldat в регистр АХ, который в результате изменится на 625.

Запустим цикл, призванный умножить содержимое АХ на слово 2ВХ, в котором находится значение 2.
Неявным целевым адресом для команды MUL является комбинация регистров DX:AX при этом при первом переходе цикла результат 1250 умещается в одно слово поэтому он сохраняется в регистре АХ а значение регистра DX остаётся нулевым. Запуск цикла осуществляется с помощью клавиш g+Enter. После перехода 7 циклов умножения 625 на 2 становиться равным 80.000 – это число не помещается в регистре АХ и произведение сохраняется в 32-х разрядном регистре, образуемом с помощью двух регистров DХ:АХ . При этом в DХ появляется значения равное 1, а в регистре АХ сохраняется остаток, равный 14464, что соответствует расчету 1*65536+14464=80.000. После чего можно выйти из программы выполнив команду g+Enter.
Тут то что написано в лаб.работе.
Препод мне задал такой вопрос, в каком случае в уравнении 1*65536+14464=80.000 вместо 80.000 получится 65500.
P.S. цифры менять не решение :(