Организация циклов - Assembler
Формулировка задачи:
Здравствуйте.
Переделайте, пожалуйста, программу.
Из (1) в (2).
1) Даны два массива слов А и B. Записать в результирующий массив С модули произведений соответствующих элементов массивов А и В.
2) Даны два массива байт А и B. Записать в результирующий массив С произведения соответствующих элементов массивов А и В.
Data Segment mas1 DW 2456,2455,2452,2453 mas2 DW 2457,2412,2451,2543 mas3 DD 4 DUP(?) data ends Code Segment START: assume cs:code, ds:data mov ax, data mov ds, ax mov SI,offset mas1 mov DI,offset mas2 mov BX,offset mas3 mov CX,length mas3 m1: mov AX,[SI] mul word ptr [DI] mov [BX],AX mov [BX]+2,DX add DI,2 add SI,2 add BX,4 dec CX JNZ m1 mov ax, 4c00h int 21h Code ends end start
Решение задачи: «Организация циклов»
textual
Листинг программы
.model small .386 .data mas1 db 246,245,242,243 mas2 db 247,242,241,253 mas3 dw 4 dup(?) .stack db 256 dup(?) .code start: mov ax,@data mov ds,ax mov si,offset mas1 mov di,offset mas2 mov bx,offset mas3 mov cx,length mas3 m1: mov al,byte ptr [si] mul byte ptr [di] mov byte ptr [bx],al mov byte ptr [bx+1],ah inc di inc si add bx,2 dec cx jnz m1 mov ah,4Ch mov al,00h int 21h end start
Объяснение кода листинга программы
- Создание модели сегмента данных: .model small
- Объявление переменных: .data
- Объявление стека: .stack
- Код программы: .code
- Начало выполнения программы: start:
- Переменные для хранения массивов: mas1, mas2, mas3
- Переменные для хранения индексов массивов: si, di, bx
- Длина массива mas3: mov cx,length mas3
- Цикл выполнения операции над массивами: m1:
- Чтение байта из массива mas1: mov al,byte ptr [si]
- Умножение этого байта на байт из массива mas2: mul byte ptr [di]
- Запись результата в массив mas3: mov byte ptr [bx],al
- Запись в массив mas3 суммы результата и его младшего слова: mov byte ptr [bx+1],ah
- Увеличение индекса для массива mas2: inc di
- Увеличение индекса для массива mas1: inc si
- Увеличение индекса для массива mas3 на 2: add bx,2
- Уменьшение счётчика цикла на 1: dec cx
- Проверка, что счётчик не равен нулю: jnz m1
- Вывод сообщения об успешном выполнении программы: mov ah,4Ch
- Завершение работы программы: mov al,00h
- Ввод-вывод данных: int 21h
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д