Помогите Новичку

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
mit35
Сообщения: 1
Зарегистрирован: 29 окт 2004, 11:25
Откуда: Питер
Контактная информация:

Помогите напистаь программку на ассемблере, лучше с комментариями?1. Задать массив 5х5(цифры введены изначально, а не склавиатуры)
2. Определить наименьшее значение
3. Вывести результат в виде «min значение=…»
Andy
Сообщения: 238
Зарегистрирован: 17 фев 2004, 08:15
Откуда: Минск

3. Вывести результат в виде «min значение=…»
Так это самое тупое и бессмысленное занятие (и самое длинное). Готовой процедуры перевода числа в строку у меня под рукой нет - так что можно поискать в инете.

Код: Выделить всё

CSeg	segment
	assume cs:CSeg,ds:CSeg
	org	100h
start:	
; массив чисел будет байтовым, в dl будет минималный элемент
	mov	dh,0
	mov	dl,byte ptr my_array[0] ; для начала минимальный - первый

	mov	bx,4 ; считаем с конца, нумерация индексов с нуля "0"
	mov	si,4
	
next_element:
	mov	ax,bx
	mov	cl,5
	mul	cl
	
	mov	bp,ax
	
	mov	al,byte ptr my_array[bp][si] ; bp+si адрес текущего рассматриваемого элемента
	cmp	al,dl
	
	ja	next_col
	
	mov	dl,al ; новый минимальный
	
next_col:
	sub	si,1 ; другой столбец
	jnc	next_element
	
	mov	si,4	
	sub	bx,1 ; переходим на строку выше
	jnc	next_element
	
	; DL = min. Тут его надо вывести на экран. Извиняюсь, но заниматься этой фигней ща некогда.
	; надо поискать готовое решение.
	
	
write_result:
	; конец
	mov	ah,4ch
	int	21h
	
	; ----------------------------------------
	; 		DATA
	; ----------------------------------------
my_array	db 89,76,245,67,9
		db 11,127,255,20,21
		db 101,123,124,77,34
		db 16,8,99,34,64
		db 65,87,22,70,47
	
CSeg	ends
end	start
*provided AS IS
Ответить