Не могу вывести значение в консоль (tasm) - Assembler

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

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

Привет, коллеги. У меня есть код на tasm:
.8086
.model small
.stack 100h
 
.data
    mass db 1,4,5,3,6       
    summ    dw 0            
    s  db 'Значение = $'
    medium db 0             
    modd db 0               
    
.code 
proc_1 proc                 
    mov cx, 5               
    lea si, [mass]          
    mov al, byte ptr[mass]  
 
l1:    
    mov bl,[si+1]           
    add ax, bx              
    inc si                  
    loop l1                 
    
mov summ, ax                
mov dl, 5                   
div dl                      
add medium, al              
add modd, ah                
ret 12                      
proc_1 endp                 
 
start:
    mov ax, @data           
    mov ds, ax              
    xor ax, ax              
    xor bx, bx              
    call proc_1             
 
    ;вывод на экран
    xor ax,ax
    xor dl,dl
    mov al,medium
    aam 
    add ax, 3030h 
    mov dl, ah 
    mov dh, al 
    mov ah,02 
    int 21h 
    mov dl, dh 
    int 21h
 
exit:
    mov ax, 4C00h
    int     21h 
    
end start
Не получается вывести значение среднего арифметического чисел (medium) в консоль. Подскажите, плиз...

Решение задачи: «Не могу вывести значение в консоль (tasm)»

textual
Листинг программы
lea si,mass
    go:         
    lodsw
    add bx,ax
    loop go
    mov ax,bx

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

  1. lea si,mass - в данном коде используется инструкция LEA (Load Effective Address), которая загружает в регистр SI адрес переменной mass.
  2. go: - это метка, к которой происходит переход в начале цикла.
  3. lodsw - это инструкция LOD (Load String), которая загружает в регистры AX и BX два байта данных из памяти по адресу, который находится в регистре SI.
  4. add bx,ax - происходит сложение содержимого регистра BX и AX. Результат будет записан в регистр BX.
  5. loop go - это цикл, который будет выполняться до тех пор, пока не будет выполнено условие (результат сравнения в регистре BX не станет равным нулю).
  6. mov ax,bx - происходит копирование содержимого регистра BX в регистр AX.

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


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

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

10   голосов , оценка 4.2 из 5
Похожие ответы