Найти сумму элементов массива (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
Объяснение кода листинга программы
- mov cx,3 ; кол-во строк
- push cx
- mov cx,3 ; кол-во столбцов
- mov si,0
- xor cx,cx;зачем сбрасываете
- mov al,[bx+si]
- add s,ax
- inc si
- loop m2;У Вас получается три очень долгих цикла гы-гы
- add bx,6;у Вас три элемента по пойту
- pop cx
- loop m1
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д