Найти сумму элементов массива (tasm) - Assembler

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

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

Добрый вечер. Задача: найти сумму элементов массива. Не могу найти ошибку,после запуска зависает сразу,не выводя ничего на экран и не реагирует.
lab1 segment
assume cs:lab1, ds:lab1, es:lab1, ss:lab1
 
org 100h
 
begin: jmp main
m db 1, 23, 10
db 6, 43, 78
db 4, 3, 45
s dw 0
 
afis db 0,0,0,0,0,'$'
str0 label byte
max0 db 6
real0 db ?
date0 db 6 dup (0)
cit label byte
max1 db 1
real1 db ?
date1 db 0
mes0 db 0Ah, 0Dh, '$'
mes4 db 'Rezult: $'
 
num_ASCII proc
xor bh, bh
mov bl, 10
lea si, afis+4
 
e_p1:
xor dx, dx
cmp ax, 0
je e_p2
div bx
add dx, 30h
mov [si], dl
dec si
jmp e_p1
e_p2:ret
num_ASCII endp
 
main:
    lea bx,m
    mov cx,3 ; кол-во строк
m1:
    push cx
    mov cx,3 ; кол-во столбцов
    mov si,0
 
m2:
    xor cx,cx
    mov al,[bx+si]
    add s,ax
    inc si
    loop m2
    
add bx,6
pop cx
loop m1
 
;вывод
call num_ASCII
mov ah, 9
lea dx, mes0
int 21h
lea dx, mes4
int 21h
lea dx, afis
int 21h
mov ah, 0Ah
lea dx, cit
int 21h
ret
lab1 ends
end begin
Заранее спасибо

Решение задачи: «Найти сумму элементов массива (tasm)»

textual
Листинг программы
    mov cx,3 ; кол-во строк
m1:
    push cx
    mov cx,3 ; кол-во столбцов
    mov si,0
 
m2:
    xor cx,cx;зачем сбрасываете
    mov al,[bx+si]
    add s,ax
    inc si
    loop m2;У Вас получается три очень долгих цикла гы-гы
    
add bx,6;у Вас три элемента по пойту
pop cx
loop m1

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

  1. mov cx,3 ; кол-во строк
  2. push cx
  3. mov cx,3 ; кол-во столбцов
  4. mov si,0
  5. xor cx,cx;зачем сбрасываете
  6. mov al,[bx+si]
  7. add s,ax
  8. inc si
  9. loop m2;У Вас получается три очень долгих цикла гы-гы
  10. add bx,6;у Вас три элемента по пойту
  11. pop cx
  12. loop m1

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


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

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

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