Заполнить массив случайными значениями - Assembler
Формулировка задачи:
Пожалуйста помогите решать задачу.
Внести в память матрицу 3х4. Заполнить ее случайными значениями.
Заранее благодарю.
Решение задачи: «Заполнить массив случайными значениями»
textual
Листинг программы
MSize = 3*4 .data Matrix dw MSize dup (?) .code cld mov cx,MSize mov di,offset Matrix @@Next: push cx push di call RandomWord ; или как-то ещё pop di pop cx stosw loop @@Next
Объяснение кода листинга программы
- Объявляется переменная
MSizeсо значением 3*4, то есть 12. - В сегменте
.dataобъявляется массивMatrixразмеромMSizeс элементами типаdw, то естьdword, инициализированными значением?. - В сегменте
.codeустанавливается регистрcxв значениеMSize. - В регистр
diзаписывается смещениеoffset Matrix, то есть адрес первого элемента массиваMatrix. - Начинается цикл, который будет выполняться до тех пор, пока не будут выполнены все условия.
- В стеке сохраняются значения регистра
cxиdi. - Вызывается функция
RandomWord, которая будет генерировать случайное слово и сохранять его в регистреax. - Сохраняемое в стеке значение регистра
diвосстанавливается после вызова функции. - Восстанавливаемое из стека значение регистра
cxиспользуется для продолжения цикла. - В каждом цикле выполняется операция
stosw, которая записывает в массивMatrixслово, сохранённое в регистреax. - Цикл продолжается до тех пор, пока не будут выполнены все условия.
- Код, который должен выполняться в случае прерывания, помещён в сегмент
.interrupt.