я указал
arr db 100 dup(?)
С нахождением максимума проблем нет, а вот минимум почему-то всегда равен нулю. Как это исправить?
Код:
model small
.stack 256
.data
arr db 101 dup(?)
mes db 10, 13, "Enter any number (press 'Enter' to exit): $"
ent db 0Dh
mes1 db " $"
mes2 db 10, 13, "$"
mes3 db "Result: $"
min db 0
max db 0
min-pos db 0
max-pos db 0
.code
main:
.386
mov ax, @data
mov ds, ax
mov ah, 09
lea dx, mes
int 21h
mov cx, 100
mov si, 0
init:
mov ah, 01
int 21h
cmp al, ent
je exit
mov bl, al
sub bl, 30h
int 21h
sub al, 30h
mov ah, bl
aad
mov arr[si], al
inc si
mov ah, 09
lea dx, mes1
int 21h
loop init
exit:
lea si, arr
mov max, [si]
mov min, [si]
mov cx, 100
find:
;find_max:
mov al, [si]
cmp max, al
jbe maximum
back1:
;find_min:
mov al, [si]
cmp min, al
jae minimum
back2:
inc si
loop find
jmp output
maximum:
mov al, [si]
mov max, al
jmp back1
minimum:
mov al, [si]
mov min, al
jmp back2
output:
mov ah, 09
lea dx, mes2
int 21h
mov al, max
aam
mov bx, ax
add bx, 3030h
mov ah, 02
mov dl, bh
int 21h
mov dl, bl
int 21h
mov ah, 09
lea dx, mes1
int 21h
mov al, min
aam
mov bx, ax
add bx, 3030h
mov ah, 02
mov dl, bh
int 21h
mov dl, bl
int 21h
over:
mov ax, 4c00h
int 21h
end main
Ну наверное нужно в минимум записать число побольше. 255, например.
Записал, минимум все так же нуль, хотя среди вводимых чисел нуля нет
не, достоточно посчитать сколько элементов при вводе было, и искать по этому количеству, а не п овсей выделенной памяти
Как это реализовать? Пока что в голову приходит 1 вариант: перед вводом чисел попросить ввести кол-во вводимых чисел
цикл сделать при вводе элементов с подсчетом
вот тебе надо ввести 5 элементов. как ты прекращешь вводить данные?
Да, я не увидел, что там первый элемент пишется в мин/макс. А посчитать: там же si инкрементится при вводе, оно уже счётчик.
При нажатии на enter
Понял, сейчас попробую
Обсуждают сегодня