Проверить, упорядочены ли буквы в строке по алфавиту - Assembler

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

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

Здравствуйте Помогите пожалуйста разобраться с задачей Нужно проверить упорядочены ли буквы в строке по алфавиту Подскажите пожалуйста, как это можно реализовать

Решение задачи: «Проверить, упорядочены ли буквы в строке по алфавиту»

textual
Листинг программы
;== FASM code =======================
org 100h
jmp start
 
mes0    db   13,10,'String....:  $'
mes1    db   13,10,'Alphabet..:  $'
mes2    db   13,10,'Symbol....:  $'
okey    db   'OK! $'
error   db   ' <--error!$'
string  db   'ABCDEFGJXBVFGHRYTLFKQWPNM'
len     =    $ - string
 
start:
;----- Покажем строку -------------------------------------
       mov   dx,mes0             ;
       call  message             ;
       mov   cx,len              ;
       mov   si,string           ;
prn:   lodsb                     ;
       int   29h                 ;
       loop  prn                 ;
 
;----- Проверяем строку на алфавит ------------------------
       mov   dx,mes1             ;
       call  message             ;
       mov   cx,len-1            ;
       mov   si,string           ;
       lodsb                     ; берём первый элемент
       int   29h                 ; выводим его на экран
       inc   al                  ; делаем из него сл. по-алфавиту
       xchg  ah,al               ; сохраняем изменения в AH
alph:  lodsb                     ; берём сл.элемент
       cmp   ah,al               ; сравниваем его с AH
       jz    next                ; прыг, если равно
       push  ax                  ; иначе: алфавит нарушен. Запомним нарушителя
       mov   dx,error            ;
       call  message             ; ERROR
       mov   dx,mes2             ;
       call  message             ; Symbol
       pop   ax                  ;
       int   29h                 ; выводим нарушителя на экран
       jmp   exit                ; на выход!
next:  int   29h                 ; выводим символы, которые идут по-алфавиту
       inc   ah                  ; сл.буква в алфавите
       loop  alph                ; на повтор..
 
       mov   dx,okey             ; ОК, если правильный порядок
       call  message             ;
 
exit:  xor   ax,ax               ; выход..
       int   16h                 ;
       int   20h                 ;
 
;ннннннннннннннннн П Р О Ц Е Д У Р Ы нннннннннннннннннннннннннннннннннннн
;------------------------------------------------------------------------
message:                      ;
      mov   ah,9              ; вывод строки на экран
      int   21h               ;
ret

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

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