Программа на команды передачи данных. - Assembler
Формулировка задачи:
Помогите, пожалуйста, решить задания ниже! Только начинаю изучать ассемблер и надо сказать тяжко дается... Особенно после изучения высших языков программирования.
1) Обнулить область A.
2) В область B записать три любых числа (прямая адресация).
3) В первые три ячейки области C записать числа из области B в обратном порядке (адресация по базе).
4) В оставшиеся ячейки области С записать три любых числа.
5) Просмотреть сегмент данных.
6) В области С поменять местами 1 и 4, 2 и 5, 3 и 6 числа (адресация по базе с индексированием). В качестве буфера можно использовать или регистр BX или область А.
Решение задачи: «Программа на команды передачи данных.»
textual
Листинг программы
lea bx,C lea bp,B[2] mov cx,3 @@next: mov al,ds:[bp] mov [bx],al inc bx dec bp loop @@next
Объяснение кода листинга программы
lea bx, C- переменная bx получает адрес переменной C.lea bp, B[2]- переменная bp получает адрес третьего элемента массива B.mov cx, 3- переменная cx получает значение 3.- @@next: - метка для цикла.
mov al, ds:[bp]- переменная al получает значение, на которое указывает bp в сегменте данных.mov [bx], al- значение переменной al копируется в ячейку, на которую указывает bx.inc bx- увеличивает значение bx на 1, чтобы указывало на следующую ячейку.dec bp- уменьшает значение bp на 1, чтобы указывало на предыдущую ячейку.loop @@next- уменьшает cx на 1 и, если cx не равен 0, переходит на метку @@next для выполнения цикла.