как найти номер максимального числа

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

Модератор: Andy

Ответить
DmitryKud
Сообщения: 1
Зарегистрирован: 14 май 2017, 11:35

14 май 2017, 11:57

Максимальное число, нашел и записал в регистр BX Теперь нужно найти номер, и умножить на этот номер, результат поместить в регистр BX



;====================================================================
; Main.asm file generated by New Project wizard
;
; Created: Ср апр 19 2017
; Processor: 8086
; Compiler: MASM32
;
; Before starting simulation set Internal Memory Size
; in the 8086 model properties to 0x10000
;====================================================================

CODE SEGMENT PUBLIC 'CODE'
ASSUME CS:CODE,DS :D ATA

START:
mov cx,0
mov AX,DATA
mov DS,AX
lea SI,X
mov dl,0
mov bl,[si]

h:
inc cx
cmp bl,[si+2]
jg Max
mov bl,[si+2]
mov indexMax,dl
mov dl,indexMax
Max:
add si,2
inc dl
cmp cx,len
jne h
ENDLESS:
JMP ENDLESS
CODE ENDS
DATA SEGMENT PUBLIC PARA 'DATA'
X DW 5,6,7,2,3,4,15,1,2,8
indexMax DB ?
len=$-X
DATA ENDS
END START
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

17 май 2017, 09:15

Недочетов у вас много, но основной принцип такой: в месте где присваиваете новый максимум, записывайте и текущий индекс
В программе ведется 1 проход с текущим адресом, рекомендую использовать индексную адрессацию. Код будет короче и вычислять индекс совсем просто
It's a long way to the top if you wanna rock'n'roll
Ответить