Здравствуйте, bukety.sedobnye!
Держите программу, сравните со своей...
[code lang=asm h=200];написать программу, находящую максимальный или минимальный символ в исходной строке.
.model small
.stack 100h
.data
szStr EQU 250
msg1 db 'Stroka:',10,13, '$'
NextLine db 13,10,'$'
MsgMax db 'Max = $'
MsgMin db 13,10,'Min = $'
MsgPustaya db 'Net stroki!$'
Stroka db szStr dup(?) ; строка
.code
start:
mov ax, @data
mov ds, ax
mov es, ax
; вывод 1-го сообщения
mov ah, 09h
mov dx, offset msg1
int 21h
; ввод строки
mov ah, 3fh ;функция DOS для чтения с ручного ввода
mov bx, 0 ;описание стандартного ввода
mov cx, szStr ;считываем строку до максимально установленной длины
mov dx, OFFSET Stroka
int 21h ;в AX - длина введенной строки, в конце коды 0dh,0ah
; следующая строка
lea dx, nextLine
mov ah, 9
int 21h
; ищем символ
lea si, Stroka
mov bx, 00ffh ;bh - max, bl - min (сначала самые большой и маленький код!)
sleduiushii_simvol:
mov al, [si]
inc si
cmp al, 0dh ;при вводе при помощи ф-и 3fh в конце строки будут коды 0dh и 0ah!
je konez
; сравниваем символы
cmp al, bl ;сравним с минимальным
jae cmp_max ;если больше или равно, то на сравнение с максимальным
mov bl, al ;сохраним, как новый минимальный
cmp_max:
cmp al, bh ;сравним с максимальным
jbe sleduiushii_simvol ;если меньше или равно, то на чтение следующего символа
mov bh, al ;иначе - сохраним, как максимальный
jmp sleduiushii_simvol
konez: ;выведем результат
cmp bx, 00ffh ;сначала сравним, была ли введена строка
je Pustaya_stroka ;если макс и мин не изменились, то ничего введено не было!
mov dx, offset MsgMax
mov ah, 9
int 21h ;сообщение и макс символе
mov dl, bh ;значение
mov ah, 2
int 21h ;выводим символ
mov dx, offset MsgMin ;аналогично для минимального
mov ah, 9
int 21h
mov dl, bl
mov ah, 2
int 21h
lea dx, nextLine
mov ah, 9
int 21h
; завершение программы
exit:
mov ah, 0 ;подождем нажатие на клавишу, чтобы окно сразу не закрылось
int 16h
mov ah, 04Ch
int 21h
Pustaya_stroka:
mov dx, offset MsgPustaya
mov ah, 9
int 21h
jmp exit
end start
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен