· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› работа с матрицей(дос)

Посл.отвђт Сообщенiе


Дата: Июн 14, 2004 22:28:22

в чем ошибка
нужно найти сумму элементов выше главной диагонали матрицы????

.model small
.stack 100h
.data

N DW 2 ;Obrabotka iz 2 v ASCII
BINVV DW ? ;input
ASCII DB 5 DUP('$'),'$' ;exit

sum dw 0
per1 dw ?
per2 dw ?
per3 dw ?
per4 dw ?
per5 dw ?
per6 dw ?

slovo_vivod db 'Summa= ','$'
str3 db 10, 13, "Sum of matrix elements upper main diagonal = $"

matr dw 00, 01, 02, 03, 04, 05, 06, 07, 08, 09
dw 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
dw 20, 21, 22, 23, 24, 25, 26, 27, 28, 29
dw 30, 31, 32, 33, 34, 35, 36, 37, 38, 39
dw 40, 41, 42, 43, 44, 45, 46, 47, 48, 49
dw 50, 51, 52, 53, 54, 55, 56, 57, 58, 59
dw 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
dw 70, 71, 72, 73, 74, 75, 76, 77, 78, 79
dw 80, 81, 82, 83, 84, 85, 86, 87, 88, 89
dw 90, 91, 92, 93, 94, 95, 96, 97, 98, 99


.code
.8086 ; This part of the program must run on an 8086


start:
mov ax,@data
mov ds, ax ;set segment register
xor ax,ax
;main


lea dx,str3
mov ah,9
int 21h
call sum_upper

mov ax,4c00h ; terminate program
int 21h

sum_upper proc

mov bx,matr
xor cx,cx
xor ax,ax
.vert_cycle:
mov si,9*2
.hor_cycle:
add ax,[bx+si]
dec si
dec si
cmp si,cx
jg .hor_cycle
add bx,10*2
inc cx
inc cx
cmp cx,9*2
jl .vert_cycle
call print_ax

retn

sum_upper endp

print_ax proc

test ax,ax
jns .no_sign
push ax
mov ah,2
mov dl,'-'
int 21h
neg ax
.no_sign:
mov cx,10
xor bx,bx
.rev_int_cycle:
xor dx,dx
div cx
push dx
inc bx
test ax,ax
jnz .rev_int_cycle
.forw_int_cycle:
pop dx
add dl,'0'
mov ah,2
int 21h
dec bx
jnz .forw_int_cycle


retn
print_ax endp

;------------------------Procedur-OFF---------------------------------


end start


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.048