Найти сумму элементов массива (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