Организация циклов - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Переделайте, пожалуйста, программу. Из (1) в (2). 1) Даны два массива слов А и B. Записать в результирующий массив С модули произведений соответствующих элементов массивов А и В. 2) Даны два массива байт А и B. Записать в результирующий массив С произведения соответствующих элементов массивов А и В.
Листинг программы
  1. Data Segment
  2. mas1 DW 2456,2455,2452,2453
  3. mas2 DW 2457,2412,2451,2543
  4. mas3 DD 4 DUP(?)
  5. data ends
  6. Code Segment
  7. START:
  8. assume cs:code, ds:data
  9. mov ax, data
  10. mov ds, ax
  11. mov SI,offset mas1
  12. mov DI,offset mas2
  13. mov BX,offset mas3
  14. mov CX,length mas3
  15. m1: mov AX,[SI]
  16. mul word ptr [DI]
  17. mov [BX],AX
  18. mov [BX]+2,DX
  19. add DI,2
  20. add SI,2
  21. add BX,4
  22. dec CX
  23. JNZ m1
  24. mov ax, 4c00h
  25. int 21h
  26. Code ends
  27. end start

Решение задачи: «Организация циклов»

textual
Листинг программы
  1. .model small                           
  2. .386                   
  3.  
  4. .data
  5. mas1 db 246,245,242,243
  6. mas2 db 247,242,241,253
  7. mas3 dw 4 dup(?)
  8.  
  9. .stack                     
  10.     db 256 dup(?)      
  11.  
  12. .code                          
  13. start:                 
  14.     mov ax,@data       
  15.     mov ds,ax
  16.    
  17.     mov si,offset mas1
  18.     mov di,offset mas2
  19.     mov bx,offset mas3
  20.    
  21.     mov cx,length mas3
  22.     m1:
  23.         mov al,byte ptr [si]
  24.         mul byte ptr [di]
  25.    
  26.         mov byte ptr [bx],al
  27.         mov byte ptr [bx+1],ah
  28.    
  29.         inc di
  30.         inc si
  31.         add bx,2
  32.    
  33.         dec cx
  34.     jnz m1
  35.    
  36.     mov ah,4Ch                 
  37.     mov al,00h         
  38.     int 21h
  39. end start

Объяснение кода листинга программы

  1. Создание модели сегмента данных: .model small
  2. Объявление переменных: .data
  3. Объявление стека: .stack
  4. Код программы: .code
  5. Начало выполнения программы: start:
  6. Переменные для хранения массивов: mas1, mas2, mas3
  7. Переменные для хранения индексов массивов: si, di, bx
  8. Длина массива mas3: mov cx,length mas3
  9. Цикл выполнения операции над массивами: m1:
  10. Чтение байта из массива mas1: mov al,byte ptr [si]
  11. Умножение этого байта на байт из массива mas2: mul byte ptr [di]
  12. Запись результата в массив mas3: mov byte ptr [bx],al
  13. Запись в массив mas3 суммы результата и его младшего слова: mov byte ptr [bx+1],ah
  14. Увеличение индекса для массива mas2: inc di
  15. Увеличение индекса для массива mas1: inc si
  16. Увеличение индекса для массива mas3 на 2: add bx,2
  17. Уменьшение счётчика цикла на 1: dec cx
  18. Проверка, что счётчик не равен нулю: jnz m1
  19. Вывод сообщения об успешном выполнении программы: mov ah,4Ch
  20. Завершение работы программы: mov al,00h
  21. Ввод-вывод данных: int 21h

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут