Не могу вывести значение в консоль (tasm) - Assembler
Формулировка задачи:
Привет, коллеги. У меня есть код на tasm:
Не получается вывести значение среднего арифметического чисел (medium) в консоль. Подскажите, плиз...
.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
Решение задачи: «Не могу вывести значение в консоль (tasm)»
textual
Листинг программы
lea si,mass go: lodsw add bx,ax loop go mov ax,bx
Объяснение кода листинга программы
- lea si,mass - в данном коде используется инструкция LEA (Load Effective Address), которая загружает в регистр SI адрес переменной
mass
. - go: - это метка, к которой происходит переход в начале цикла.
- lodsw - это инструкция LOD (Load String), которая загружает в регистры AX и BX два байта данных из памяти по адресу, который находится в регистре SI.
- add bx,ax - происходит сложение содержимого регистра BX и AX. Результат будет записан в регистр BX.
- loop go - это цикл, который будет выполняться до тех пор, пока не будет выполнено условие (результат сравнения в регистре BX не станет равным нулю).
- mov ax,bx - происходит копирование содержимого регистра BX в регистр AX.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д