Номер максимального элемента массива - Assembler

Узнай цену своей работы

Формулировка задачи:

Имеется код, который ищет и выводит на экран максимальный элемент массива
.data    
mas db 52, 22, 70, 38, 29, 90, 21, 40, 50, 60          
len dw $-mas   
        
.code    
start:   
assume cs:code, ds: data         
mov ax, data     
mov ds, ax                          
lea bx, mas     ;берём в bx адрес первого элемента
mov cx, len     ;счетчик цикла
mov ah, 0
mov al, [bx]            
Next:   
cmp al, [bx]    ; сравниваем макс. число с очередным элементом массива
jg  Max       ;Al>[BX]
mov al, [bx]
Max:
inc bx  ;переходим к следующему элементу
loop Next
;вывод(начало) 
;ДАННЫЕ В al хранятся       
aam     
add ax, 3030h   
mov bx, ax      
mov ah, 02       
mov dl, bh       
int 21h          
mov dl, bl       
int 21h              
mov ax, 4c00h    
int 21h  
;вывод(конец)         
code ends        
end start
А как вывести его номер?
Ассемблер - EMU8086

Решение задачи: «Номер максимального элемента массива»

textual
Листинг программы
.model small
.data    
mas db 52, 22, 70, 38, 29, 90, 21, 40, 50, 60          
len dw $-mas
indexMax db ?   
strMax      DB 13,10,"Max value: ","$"
strMaxIndex DB 13,10,"Index of Max value: ","$"
 
        
.code    
start:   
assume cs:@code, ds:@data         
mov ax, @data     
mov ds, ax                          
lea bx, mas     ;берём в bx адрес первого элемента
mov cx, len     ;счетчик цикла
mov ah, 1
mov al, [bx]            
mov indexMax, ah
 
Next:   
cmp al, [bx]    ; сравниваем макс. число с очередным элементом массива
jg  Max       ;Al>[BX]
mov al, [bx]
mov indexMax, ah
Max:
inc bx  ;переходим к следующему элементу
inc ah
loop Next
 
;вывод(начало) 
  push ax
  ; Ввод множимого
  lea dx,strMax ; в DX - адрес строки
  mov ah,9
  int 21h ; вывод строки
  pop ax
 
 
;ДАННЫЕ В al хранятся       
aam     
add ax, 3030h   
mov bx, ax      
mov ah, 02       
mov dl, bh       
int 21h          
mov dl, bl       
int 21h
 
  ; Ввод множимого
  lea dx,strMaxIndex ; в DX - адрес строки
  mov ah,9
  int 21h ; вывод строки
 
  mov al, indexMax
 
;теперь номер максимального в al
aam     
add ax, 3030h   
mov bx, ax      
mov ah, 02       
mov dl, bh       
int 21h          
mov dl, bl       
int 21h
 
mov ax, 4c00h    
int 21h  
;вывод(конец)         
end start

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.6 из 5
Похожие ответы