Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2009, 00:50   #1
maziLa
Пользователь
 
Регистрация: 08.12.2008
Сообщений: 30
По умолчанию Программа на ассемблере

Существует такое задание : дана матрица с 16 элементов (4на4),выполнить ввод этой матрици с клавиатуры,вывод матрици,а также найти сумму наименших элементов столбиков

Код:
.model small
.stack 300h
.data
mes1	db	10,13,"Enter your matrix (A(4x4)) :",13,10, "$"
mes3	db	10,13,"Your matrix :$"
mes2	db	10,13,"$"
mes4	db	" , $"
mas	dw	16	dup(0)
rezz	dw	?
summ    dw      4       dup(0)
c10	dw	10

.code

ShowSum proc far			;функция вывода числа большего за 1 символ
                push CX
                push DX
                push BX
                mov CX, 0
                mov BX, 10
                dividing: xor dx,dx
                        div c10
                        add dl, 30h
                        push dx
                        inc CX
                        cmp AL, 0
                        JE show
               JMP dividing

               show:     pop dx
                         mov AH, 02h
                         int 21h
               LOOP show

               pop BX
               pop DX
               pop CX 
               ret
ShowSum endp



start:
	mov ax,@data
	mov ds,ax
	mov ah,09h			; вывод msg
	lea dx,mes1
	int 21h
	xor bx,bx				; bx - смещение в массиве вводимого числа
	xor dx,dx				; dx - вводимое число
input_loop:
	mov ah,01h			; считваем очередной символ
	int 21h
	cmp al,0dh			; если это enter
	je chislo
	cmp al,20h			; или пробел
	je chislo
	sub al,30h				; иначе - получаем цифру
	mov cl,al				; сохраняем ее в cl
	mov ax,dx				; в ax - вводимое число
	mul c10					; умножаем на 10
	xor ch,ch
	add ax,cx				; добавляем к результату последнюю цифру
	mov dx,ax				; в dx - полученное число
	jmp input_loop
chislo:					; если окончен ввод числа
	mov mas[bx],dx		        ; запись этого числа в массив
	add bx,2			; смещаемся к следующему элементу
	cmp bx,32			; если массив заполнен
	je end_input			; 
	cmp al,0dh			; или последнее число
	je end_input			; то конец ввода
	xor dx,dx			; обнуляем dx для ввода следующего числа
	jmp input_loop
end_input:
	mov cx,bx				; в cx - (количество введенных чисел + 1) * 2
	shr cx,1				; cx = cx \ 2
	dec cx				; теперь в cx - количество введенных чисел
	xor bx,bx
	lea dx,mes3
	mov ah,9
	int 21h

output:	mov ax, mas[bx]                 ;указательна первый эл. массива
	mov dx,0Dh
	mov ah,9
	int 21h
	call ShowSum
	add bx , 2

	loop output


exit:	mov ah,4ch
	int 21h
	end start
У меня не получается вывод масива(начиная с метки output);
и ещё не сделана функция по сумме эл.
Если кто знает помогите пожалуйста .
maziLa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на ассемблере (TASM) prostofilya Помощь студентам 0 27.06.2009 22:14
Программа на ассемблере Archiserafim Помощь студентам 0 17.06.2009 15:03
Как пишется программа на Ассемблере? ThePowerOfTheMind Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 26.05.2009 19:45
Программа на ассемблере или ассемблерные вставки. Gremlin Фриланс 6 26.01.2009 21:27
Наилучшая программа для программирования в ассемблере Миша Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 11.01.2009 13:25