В сегменте данных определить три области - Assembler
Формулировка задачи:
Нужна помощь по выполнению данного задания.Совсем недавно начали изучать ассемблер.Еще не совсем понимаю как там все устроено.
Задание:
В сегменте данных определить три области: А – 1 байт под одно число; B – по 1 байту под три числа; C – по 1 байту под шесть чисел.
В программе
* Обнулить область A.
* В область B записать три любых числа (прямая адресация).
* В первые три ячейки области C записать числа из области B в обратном порядке (адресация по базе).
* В оставшиеся ячейки области С записать три любых числа.
* Просмотреть сегмент данных.
* В области С поменять местами 1 и 4, 2 и 5, 3 и 6 числа (адресация по базе с индексированием). В качестве буфера можно использовать или регистр BX или область А.
Решение задачи: «В сегменте данных определить три области»
textual
Листинг программы
LOCALS .model small .stack 100h .data A db ? B db 3 dup(?) C db 6 dup(?) .code main proc mov ax, @data mov ds, ax ;Обнулить область A. mov A, 0 ;В область B записать три любых числа (прямая адресация). mov B, 1 mov B+1, 2 mov B+3, 3 ;В первые три ячейки области C записать числа из ;области B в обратном порядке (адресация по базе). mov al, B[2] mov C[0], al mov al, B[1] mov C[1], al mov al, B[0] mov C[2], al ;В оставшиеся ячейки области С записать три любых числа. mov C[3], byte ptr 4 mov C[4], byte ptr 5 mov C[5], byte ptr 6 ;Просмотреть сегмент данных. ;В области С поменять местами 1 и 4, 2 и 5, 3 и 6 числа ;(адресация по базе с индексированием). ;В качестве буфера можно использовать или регистр BX или область А. xchg C[0], bx ;обмен 1 и 4, 2 и 5 xchg C[4], bx xchg C[0], bx xchg C[3], bl ;обмен 3 и 6 xchg C[6], bl xchg C[3], bl mov ax, 4C00h int 21h main endp end main
Объяснение кода листинга программы
- Названия переменных: A, B, C Значения переменных: однобайтная область памяти (db)
- Начало сегмента кода и данных.
- Начало процедуры main.
- Перемещение адреса сегмента данных в регистр AX и его загрузка в регистр DS.
- Обнуление переменной A.
- Запись трех чисел (1, 2, 3) в область B, используя прямую адресацию.
- Запись трех чисел из области B в обратном порядке в первые три ячейки области C, используя адресацию по базе.
- Запись трех чисел в оставшиеся три ячейки области C.
- Обмен значений в области C: 1 и 4, 2 и 5, 3 и 6, используя адресацию по базе с индексированием и регистр BX в качестве буфера.
- Завершение процедуры main.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д