Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;написать программу, находящую максимальный или минимальный символ в исходной строке.
- .model small ;директива model
- .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 ; в регистра AX смещение для данных
- mov ds, ax ; установить регистр 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 (сначала самые большой и маленький код!)
- :
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement