Организация циклов - 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

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

  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