Программирование на JAVA

Предположим, что в памяти по адресу N со­держится набор 32-разрядных чисел, расположенных последовательно начиная с адреса NUM1. На рис. 5.8. приведена программа на языке ассемблера, склады­вающая эти числа и помещающая результат в память по адресу SUM.

В регистр ЕВХ загружается значение адреса NUM1. Он используется как ба­зовый регистр при базовой индексной адресации в первой команде цикла, распо­ложенной по адресу STARTADD. Индексным регистром здесь является ECX. На первой итерации цикла к содержимому регистра ЕАХ, первоначально установленному в 0, прибавляется последнее число из списка, хранящееся по адресу [ЕВХ+ECX*4] = NUM1 – 4 + n*4, поскольку в команде ADD задан коэффици­ент масштабирования 4, а базовый регистр мы предварительно уменьшили на 4 командой SUB. Затем значение индексного регистра уменьшается на 1. На второй итерации цикла к содержимому регистра ЕАХ прибавляется предпоследнее 32-разрядное число, расположенное по адресу NUM1 - 4+(n-1)*4. На каждой следующей итерации к сумме прибавляются числа, находящиеся по адресам на 4 меньше, и на последней итерации при n=1 прибавится число, расположенное по адресу NUM1


<< назад вперед >>