Добавить подпрограмму - Assembler

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

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

Добрый вечер уважаемые Есть программа написанная сплошным кодом,нужно сделать по заданию следующее: Для всех заданий входные данные передаются в подпрограмму через стек, а результат возвращается через регистр AL. Для массивов входными данными являются адрес массива и число элементов в нем. Программа находит максимум в заданном массиве
ASSUME CS:code, SS:stk, DS:data
data SEGMENT
Message db 'min element:$'
mas db 7,4,1,9,6
data ends
code segment
 
min macro
mov ah,9
mov dx, offset Message
int 21h
endm
 
main PROC
MOV AX,data
MOV DS,AX
MOV AX,stk
MOV SS,AX
LEA SP,dnost
PUSH BP
MOV BP,SP
;Описание команд
 
min
mov bl, 65535;
mov cx, 5
m1:
mov bh, mas[si]
inc si
cmp bh, bl
JA m2
mov bl,bh
m2:
loop m1
 
mov ah,2
mov dl, bl
add dl,30h
int 21h
 
MOV AH,1
INT 21H
MOV AX,0
MOV AH,4cH
INT 21H
main ENDP
code ends
stk SEGMENT STACK
DW 1000 DUP(?)
dnost EQU $
stk ENDS
END main
END main

Решение задачи: «Добавить подпрограмму»

textual
Листинг программы
minimal proc
;bp+2 - адрес массива
;bp+4 - кол-во элементов        
   push bp
   mov bp, sp
   mov di, [bp+2]
   mov cx, [bp+4]
   dec cx
   lodsb
   mov ah, al
m:
   lodsb
   cmp al, ah
   jge no
   mov al, ah
no:
   loop m
   mov sp, bp
   pop bp
   ret 4
minimal endp

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


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

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

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