6822

Исследование организации переходов в программе

Лабораторная работа

Информатика, кибернетика и программирование

Исследование организации переходов в программе Контрольные вопросы Назовите три типа команды безусловного перехода. JMP - переход безусловный: переход типа short (короткий переход) - если адрес перехода находится в пределах от...

Русский

2013-01-08

213.5 KB

12 чел.

Исследование организации переходов в программе

Контрольные вопросы

  1.  Назовите три типа команды безусловного перехода.

JMP – переход безусловный:

  •  переход типа short (короткий переход) — если адрес перехода находится в пр еделах от -127 до +128 байт от команды JMP;
    •  переход типа near (ближний переход) — если адрес перехода находится в том же сегменте памяти, что и команда JMP;
    •  переход типа far (дальний переход) — если адрес перехода находится в другом сегменте. Дальний переход может выполняться и в тот же самый сегмент, если в сегментной части операнда указано число, совпадающее с текущим значением CS;

  1.            Какой может быть длина перехода в разных типах команды JMP?

Команда JMP для перехода в пределах -127 до + 127 байт имеет тип SHORT. Ассемблер генерирует в этом случае однобайтовый операнд от 00 до FF. Команда JMP, превосходящая эти пределы, получает тип FAR, для которого генерируется другой машинный код и двухбайтный операнд. Ассемблер в первом просмотре исходной программы определяет длину каждой команды. Однако команда JMP может быть длиной два или три байта. Если к просмотру команды JMP ассемблер уже вычислил значение операнда то он генерирует двухбайтную команду, а если не вычислил то трехбайтную.    

         JMP NAME; безусловный переход к команде с символическим адресом

         NAME.

          jmp short name – переход к метке name, отстоящей не более

          чем на – 128 или +127 байтов.

          jmp near name – переход к метке name,  отстоящей не более

          чем на 65535 байтов, в одном сегменте.

          jmp name – аналогично jmp near name;

 

  1.  Содержимое каких регистров модифицируется при выполнении безусловных переходов разных типов?

                 Команда jmp в зависимости от типа своего операнда изменяет

        содержимое либо только одного регистра eip, либо обоих регистров cs и

        eip.

        Если операнд в команде jmp — метка в текущем сегменте команд, то

        ассемблер формирует машинную команду, операнд которой является

        значением со знаком, являющимся смещением перехода относительно

        следующей за jmp команды. При этом виде перехода изменяется только

        регистр eip/ip.

  1.  Какова максимальная длина условного перехода?

Команда условного перехода содержит значение расстояния между концом команды условного перехода и операндом, которое приближается к командному указателю. Это расстояние должно быть в пределах – 128 до + 127 байт. В случае перехода за эти граници ассемблер выдаст сообщение об ошибке.  

  1.  Каким образом может быть указан адрес перехода?

          JA NAME или JNBE NAME – условный переход, если, например, в

         результате сравнения CMP DST, SRC приемник по абсолютной

         величине больше источника, то перейти к метке name.

         JB NAME или JNAE NAME – условный переход, если, например, в

         результате сравнения CMP DST, SRC приемник по абсолютной

         величине меньше источника, то перейти к метке name команды

         выполняются по результатам выполнения операций над беззнаковыми

         числами.

         JZ NAME или JE NAME – перейти, если результат операции влияющей

         на флаг нуля - нулевой (переход по «нулю»).

         JNZ NAME или JNE NAME – переход по «не нулю» команды

         выполняются по результатам выполнения операций над

         числами со знаком.

        Адрес перехода можно указать следующим образом.

   Например:

   JA  0AFH, JB  0BAH, JC  02CH.

   Или так:

        Сравнение  чисел bigval_1 и bigval_2

        mov        eax,dword ptr bigval_1[8]

        cmp        eax,dword ptr bigval_2[8] ; сравнить старшие слова

        jg         greater – переход

        jl         less – переход

        mov        eax,dword ptr bigval_1[4]

        cmp        eax,dword ptr bigval_2[4] ; сравнить средние слова

        jg         greater – переход 

        jl         less – переход

        mov        eax,dword ptr bigval_1

        cmp        eax,dword ptr bigval_2    ; сравнить младшие слова

        jg         greater – переход  

        jl         less – переход 

        equal:

        greater:

        less:

  1.  Какие флаги могут быть использованы в командах условного перехода после выполнения команды сложения?

         Команда сложения устанавливает в ноль флаги of и cf, если размер

         результата соответствует регистру назначения. Если эти флаги отличны

         от нуля, то это означает, что результат слишком велик для отведенных

         ему регистром назначения рамок и необходимо указать больший по

         размеру регистр для успешного завершения данной операции

         умножения.

  1.  Приведите возможные команды условных переходов, если после сравнения беззнаковых чисел D1 и D2 оказалось:

    а)  D1=D2 – JE или JZ

    б)  D1 D2 – JBE или JNA

    в)  D1>D2 – JA или JNBE   

  1.  Приведите возможные команды условных переходов, если после сравнения чисел со знаками P1 и P2 оказалось:  

     а)  Р1 Р2 – JNE или JNZ

     б)  Р1<Р2 – JL или JNGE  

     в)  Р1 Р2 – JGE или JNL

  1.  Какие команды могут использоваться для организации циклов?

LOOP, LOOPZ, LOOPE – команды повторения цикла.

LOOPNE, LOOPNZ – выход из цикла по «нулю».  

  1.   Какова максимальная длина переходов при организации циклов?

         Смещение метки, являющейся операндом LOOP, не должно выходить

         из диапазона -128...+127 байт. Это смещение, как и в командах

         условного перехода, является относительным от значения счетчика

        адреса следующей за LOOP команды.

  1.   Какие признаки, кроме СХ=0, могут быть использованы при организации циклов?

         LOOP NAME – эта команда неявно уменьшает (CX) на 1 и

          осуществляет переход к ближней метке, если (CX) не равно 0.

          Например:

          ....

          mov cx,64h – блок операторов от метки syc до loop syc

          syc:   .... – будет выполнен 100 раз.

          ....

          loop syc

          LOOPZ NAME или LOOPE NAME кроме того осуществляет проверку

          ZF флага. Поэтому цикл заканчивается по условию, когда (CX) = 0 или

          (ZF) = 0 или и то и другое вместе. Т.е. эта команда служит для                   

          обнаружения первого ненулевого результата.

          LOOPNZ, LOOPNE - выход из цикла по «нулю».

  1.   Как осуществляется переход к процедурам разных типов?

          CALL SUBR – вызов процедуры с адресом SUBR.

  1.   Назовите варианты команды возврата из процедуры.

RET – возврат из подпрограммы к оператору следующему

         непосредственно за CALL.

 

Задание для выполнения программы

       Ввиду того, что девятого варианта нет,  пришлось выполнить все имеющиеся шесть вариантов.

   Изменить программу так, чтобы в соответствии с вариантом задания

   она обеспечивала:

        

№ варианта

Заменить

1

а)  ‘a’ на  ‘A

б)  все заглавные  строчными

2

а) строчные от ‘a’ до ‘f’ заглавными

б)  все заглавные строчными

3

а) строчные ‘b’и’c’ заглавными

б)  все заглавные строчными

4

а) строчные от ‘f’ до’z’ заглавными

б)  все заглавные строчными

5

а)символ  ’( ’  на символ  ‘) ’

б)  все заглавные строчными

6

а) ‘Z’ на ‘z

б)  все заглавные строчными

 

Листинг программы VAR 1

 TITLE  VAR1 - ЗАМЕНА a ­  A, ВСЕ ЗАГЛАВНЫЕ СТРОЧНЫМИ

;---------------------------------------------------------------------------------------

Сегмент данных

DATASG    SEGMENT   PARA

VAR       DB         ' Вариант № 1              ' ,13,10,' ------------',13,10,'$'

VARR    DB         'Исходный текст         ' ,13,10,' -------------',13,10,'$'

TEXTT   DB ' Serduk Vladimir LEONIDOVICH' ,13,10, '---',13,10,'$'

VAR_1   DB         ' Замена всех А на а ' ,13,10,'$'

VAR_2     DB       'в) Замена всех заглавных строчными' ,13,10,'$'  

MYTEXT   DB 'Serduk Vladimir LEONIDOVICH' ,13,10, '----------',13,10,'$'

 DATASG ENDS

Сегмент стека

STACKSG  SEGMENT      'Stack'  

 DB 27 DUP(?)

STACKSG   ENDS

Назначение соответствия между адресами сегментов и сегментными регистрами  

 ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG

Сегмент кода

CODESG SEGMENT PARA  'Code'

BEGIN PROC  FAR

;--------------------------------------------------------------------------------------;  

 MOV  AH, 00H;AH        функция задания режима экрана 

                   MOV  AL, 03H;AL        ЦВ текстовый, 25 строк по 80 знаков.

                   INT  10H    

                   

;--------------------------------------------------------------------------------------;

 PUSH  DS                            в стек

 SUB  AX,AX                              обнулили AX

 PUSH  AX                          AX в стек

 MOV  AX, DATASG        DATASG в AX

 MOV  DS, AX                   AX в DS

 LEA  BX, MYTEXT                 вывод MYTEXE в BX

 MOV  CX, 20H                20H в CX, резервируем память в CX   

;-----------------------------------------------------------------------------------;  

          LEA  DX,VAR                          вывод варианта 

 MOV  AH, 09H                вывод на экран

 INT  21H                                  прерывание 21H 

;-----------------------------------------------------------------------------------;

                   

 LEA  DX,VARR                        вывод VARR в dx

 MOV  AH, 09H                 вывод на экран

 INT  21H                                   прерывание 21H 

 LEA  DX,TEXTT                       вывод TEXTT 

 MOV  AH, 09H                  вывод на экран

 INT  21H                                   прерывание 21H 

 LEA  DX,VAR_1                       вывод VAR_1 

 MOV  AH, 09H                 вывод на экран

 INT  21H                                  прерывание 21H 

 

 

;-----------------------------------------------------------------------------------;

Метка – MT1

MT1:

                   MOV AH, [BX]                     BX т.е текст MYTEXT в AH побайтно

 CMP  AH, 61H                      сравнение AH с a – малое английское

 JB  MT2                              переход на МТ2   

 CMP  AH, 61H                       сравнение AH c а – малое английское

 JA  MT2                             переход на МТ2  

 CALL COR                   вызов процедуры  COR

Метка – MT2  

MT2:

                   INC  BX                                  увеличиваем BX на 1  

 LOOP MT1                              цикл со счетчиком если 1 то на МТ1

                                                                     иначе дальше

 LEA  DX, MYTEXT               вывод MYTEXE

 MOV  AH, 09H               вывод на экран

 INT  21H                                прерывание 21H 

 JMP       WERT                       безусловный переход на WERT

;----------------------------------------------------------------------------;  

 RET                                          выход из процедуры

BEGIN   ENDP                                            конец процедуры   

COR PROC  NEAR                           процедура  COR  

 NOP                                         нет операции

 AND  AH, 0DFH                     преобразование строчных букв в

                                                                    заглавные – логическое умножение

 MOV  [BX], AH             AH в BX 

 RET                                          выход из процедуры

COR ENDP                                                 конец процедуры

 

;----------------------------------------------------------------------------;

;----------------------------------------------------------------------------;

Метка.

WERT:

BEGINN PROC FAR

 

 PUSH  DS                           в стек

 SUB  AX,AX                              обнулили AX

 PUSH  AX                          AX в стек

 MOV  AX, DATASG        DATASG в AX

 MOV  DS, AX                   AX в DS

 LEA  BX, MYTEXT                 вывод MYTEXE в BX

 MOV  CX, 20H                 20H в CX резервируем память в CX   

;-----------------------------------------------------------------------------------;  

          LEA  DX,VAR_2                      Вывод VAR_2 

 MOV  AH, 09H                вывод на экран

 INT  21H                                  прерывание 21H 

;-----------------------------------------------------------------------------------;

Метка МТТ1

MTT1:

                   MOV  AH, [BX]                 MYTEXT в AH побайтно

 CMP  AH, 41H                  сравнение AH с А – большой английское

 JB  MTT2                      переход на МТТ2   

 CMP  AH, 5AH                сравнение AH c Z – большой английское

 JA  MTT2                      переход по сравнению на МТТ2  

 CALL CORR           вызов процедуры  CORR

Метка МТТ2

MTT2:

                   INC  BX                             увеличиваем BX на 1

 LOOP MTT1                      цикл со счетчиком если 1 то на МТТ1

                                                               иначе дальше

 LEA  DX, MYTEXT         вывод MYTEXE

 MOV  AH, 09H         вывод на экран

 INT  21H                           вызов прерывания 21H

 JMP       TREW                  безусловный переход на TREW

;----------------------------------------------------------------------------;      

 RET                                    выход из процедуры

 

 BEGINN   ENDP                        конец процедуры       

CORR PROC  NEAR           процедура COR  

 NOP                                   нет операции

 ADD AH,20H                    преобразовать заглавные в строчные

 MOV  [BX], AH       AH в BX

 RET                                    выход из процедуры

CORR ENDP                                 конец процедуры

;-------------------------------------------------------------   

TREW:

           mov ax,00h

  int 16h                                        ждем нажатие любой клавиши

;-------------------------------------------------------------              

           MOV AX,4C00H     символьная функция возврата  

           INT 21H                         в MS DOS.  

                         

CODESG ENDS

 END BEGIN

Результат работы программы VAR 1

 

Листинг программы VAR 2

 TITLE  VAR1 - ЗАМЕНА a ­  A, ВСЕ ЗАГЛАВНЫЕ СТРОЧНЫМИ

;---------------------------------------------------------------------------------------

Сегмент данных

DATASG    SEGMENT   PARA

VAR       DB         ' Вариант № 1              ' ,13,10,' ------------',13,10,'$'

VARR    DB         'Исходный текст         ' ,13,10,' -------------',13,10,'$'

TEXTT   DB ' Serduk Vladimir LEONIDOVICH' ,13,10, '---',13,10,'$'

VAR_1   DB         ' Замена всех А на а ' ,13,10,'$'

VAR_2     DB       'в) Замена всех заглавных строчными' ,13,10,'$'  

MYTEXT   DB 'Serduk Vladimir LEONIDOVICH' ,13,10, '----------',13,10,'$'

 DATASG ENDS

Сегмент стека

STACKSG  SEGMENT      'Stack'  

 DB 27 DUP(?)

STACKSG   ENDS

Назначение соответствия между адресами сегментов и сегментными регистрами  

 ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG

Сегмент кода

CODESG SEGMENT PARA  'Code'

BEGIN PROC  FAR

……………………………

Метка – MT1

MT1:

                   MOV AH, [BX]                     BX т.е текст MYTEXT в AH побайтно

 CMP  AH, 61H                      сравнение AH с a – малое английское

 JB  MT2                              переход на МТ2   

 CMP  AH, 66H                       сравнение AH c f – малое английское

 JA  MT2                             переход на МТ2  

 CALL COR                   вызов процедуры  COR

Метка – MT2  

MT2:

                   INC  BX                                  увеличиваем BX на 1  

 LOOP MT1                              цикл со счетчиком если 1 то на МТ1

                                                                     иначе дальше

 LEA  DX, MYTEXT               вывод MYTEXE

 MOV  AH, 09H               вывод на экран

 INT  21H                                прерывание 21H 

 JMP       WERT                       безусловный переход на WERT

;----------------------------------------------------------------------------;  

 RET                                          выход из процедуры

BEGIN   ENDP                                            конец процедуры   

COR PROC  NEAR                           процедура  COR  

 NOP                                         нет операции

 AND  AH, 0DFH                     преобразование строчных букв в

                                                                    заглавные – логическое умножение

 MOV  [BX], AH             AH в BX 

 RET                                          выход из процедуры

COR ENDP                                                 конец процедуры

……………………………………………………………………..

 

BEGIN   ENDP                                            конец процедуры   

……………………………………………………………………..

;-------------------------------------------------------------   

TREW:

           mov ax,00h

  int 16h                                        ждем нажатие любой клавиши

;-------------------------------------------------------------              

           MOV AX,4C00H     символьная функция возврата  

           INT 21H                         в MS DOS.  

                         

CODESG ENDS

 END BEGIN

 

Результат работы программы VAR 2

Листинг программы VAR 3

 TITLE  VAR1 - ЗАМЕНА a ­  A, ВСЕ ЗАГЛАВНЫЕ СТРОЧНЫМИ

;---------------------------------------------------------------------------------------

Сегмент данных

DATASG    SEGMENT   PARA

VAR       DB         ' Вариант № 1              ' ,13,10,' ------------',13,10,'$'

VARR    DB         'Исходный текст         ' ,13,10,' -------------',13,10,'$'

TEXTT   DB ' Serduk Vladimir LEONIDOVICH' ,13,10, '---',13,10,'$'

VAR_1   DB         ' Замена всех А на а ' ,13,10,'$'

VAR_2     DB       'в) Замена всех заглавных строчными' ,13,10,'$'  

MYTEXT   DB 'Serduk Vladimir LEONIDOVICH' ,13,10, '----------',13,10,'$'

 DATASG ENDS

Сегмент стека

STACKSG  SEGMENT      'Stack'  

 DB 27 DUP(?)

STACKSG   ENDS

Назначение соответствия между адресами сегментов и сегментными регистрами  

 ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG

Сегмент кода

CODESG SEGMENT PARA  'Code'

BEGIN PROC  FAR

…………………………………………………………………..

Метка – MT1

MT1:

                   MOV AH, [BX]                     BX т.е текст MYTEXT в AH побайтно

 CMP  AH, 61H                      сравнение AH с b – малое английское

 JB  MT2                              переход на МТ2   

 CMP  AH, 66H                       сравнение AH c c – малое английское

 JA  MT2                             переход на МТ2  

 CALL COR                   вызов процедуры  COR

Метка – MT2  

MT2:

                   INC  BX                                  увеличиваем BX на 1  

 LOOP MT1                              цикл со счетчиком если 1 то на МТ1

                                                                     иначе дальше

 LEA  DX, MYTEXT               вывод MYTEXE

 MOV  AH, 09H               вывод на экран

 INT  21H                                прерывание 21H 

 JMP       WERT                       безусловный переход на WERT

;----------------------------------------------------------------------------;  

 RET                                          выход из процедуры

BEGIN   ENDP                                            конец процедуры   

COR PROC  NEAR                           процедура  COR  

 NOP                                         нет операции

 AND  AH, 0DFH                     преобразование строчных букв в

                                                                    заглавные – логическое умножение

 MOV  [BX], AH             AH в BX 

 RET                                          выход из процедуры

COR ENDP                                                 конец процедуры

……………………………………………………………………..

 

BEGIN   ENDP                                            конец процедуры   

……………………………………………………………………..

;-------------------------------------------------------------   

TREW:

           mov ax,00h

  int 16h                                        ждем нажатие любой клавиши

;-------------------------------------------------------------              

           MOV AX,4C00H     символьная функция возврата  

           INT 21H                         в MS DOS.  

                         

CODESG ENDS

 END BEGIN

 

Результат работы программы VAR 3

 

 

Листинг программы VAR 4

 TITLE  VAR1 - ЗАМЕНА a ­  A, ВСЕ ЗАГЛАВНЫЕ СТРОЧНЫМИ

;---------------------------------------------------------------------------------------

Сегмент данных

DATASG    SEGMENT   PARA

VAR       DB         ' Вариант № 1              ' ,13,10,' ------------',13,10,'$'

VARR    DB         'Исходный текст         ' ,13,10,' -------------',13,10,'$'

TEXTT   DB ' Serduk Vladimir LEONIDOVICH' ,13,10, '---',13,10,'$'

VAR_1   DB         ' Замена всех А на а ' ,13,10,'$'

VAR_2     DB       'в) Замена всех заглавных строчными' ,13,10,'$'  

MYTEXT   DB 'Serduk Vladimir LEONIDOVICH' ,13,10, '----------',13,10,'$'

 DATASG ENDS

Сегмент стека

STACKSG  SEGMENT      'Stack'  

 DB 27 DUP(?)

STACKSG   ENDS

Назначение соответствия между адресами сегментов и сегментными регистрами  

 ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG

Сегмент кода

CODESG SEGMENT PARA  'Code'

BEGIN PROC  FAR

…………………………………………………………………..

Метка – MT1

MT1:

                   MOV AH, [BX]                     BX т.е текст MYTEXT в AH побайтно

 CMP  AH, 61H                      сравнение AH с f – малое английское

 JB  MT2                              переход на МТ2   

 CMP  AH, 66H                       сравнение AH c z – малое английское

 JA  MT2                             переход на МТ2  

 CALL COR                   вызов процедуры  COR

Метка – MT2  

MT2:

                   INC  BX                                  увеличиваем BX на 1  

 LOOP MT1                              цикл со счетчиком если 1 то на МТ1

                                                                     иначе дальше

 LEA  DX, MYTEXT               вывод MYTEXE

 MOV  AH, 09H               вывод на экран

 INT  21H                                прерывание 21H 

 JMP       WERT                       безусловный переход на WERT

;----------------------------------------------------------------------------;  

 RET                                          выход из процедуры

BEGIN   ENDP                                            конец процедуры   

COR PROC  NEAR                           процедура  COR  

 NOP                                         нет операции

 AND  AH, 0DFH                     преобразование строчных букв в

                                                                    заглавные – логическое умножение

 MOV  [BX], AH             AH в BX 

 RET                                          выход из процедуры

COR ENDP                                                 конец процедуры

……………………………………………………………………..

 

BEGIN   ENDP                                            конец процедуры   

……………………………………………………………………..

;-------------------------------------------------------------   

TREW:

           mov ax,00h

  int 16h                                        ждем нажатие любой клавиши

;-------------------------------------------------------------              

           MOV AX,4C00H     символьная функция возврата  

           INT 21H                         в MS DOS.  

                         

CODESG ENDS

 END BEGIN

 

Результат работы программы VAR 4

 

Листинг программы VAR 5

 TITLE  VAR1 - ЗАМЕНА a ­  A, ВСЕ ЗАГЛАВНЫЕ СТРОЧНЫМИ

;---------------------------------------------------------------------------------------

Сегмент данных

DATASG    SEGMENT   PARA

VAR       DB         ' Вариант № 1              ' ,13,10,' ------------',13,10,'$'

VARR    DB         'Исходный текст         ' ,13,10,' -------------',13,10,'$'

TEXTT   DB ' Serduk Vladimir LEONIDOVICH' ,13,10, '---',13,10,'$'

VAR_1   DB         ' Замена всех А на а ' ,13,10,'$'

VAR_2     DB       'в) Замена всех заглавных строчными' ,13,10,'$'  

MYTEXT   DB 'Serduk Vladimir LEONIDOVICH' ,13,10, '----------',13,10,'$'

 DATASG ENDS

Сегмент стека

STACKSG  SEGMENT      'Stack'  

 DB 27 DUP(?)

STACKSG   ENDS

Назначение соответствия между адресами сегментов и сегментными регистрами  

 ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG

Сегмент кода

CODESG SEGMENT PARA  'Code'

BEGIN PROC  FAR

…………………………………………………………………..

Метка – MT1

MT1:

                   MOV AH, [BX]                     BX т.е текст MYTEXT в AH побайтно

 CMP  AH, 61H                      сравнение AH с символом (

 JB  MT2                              переход на МТ2   

 CMP  AH, 66H                       сравнение AH c символом (

 JA  MT2                             переход на МТ2  

 CALL COR                   вызов процедуры  COR

Метка – MT2  

MT2:

                   INC  BX                                  увеличиваем BX на 1  

 LOOP MT1                              цикл со счетчиком если 1 то на МТ1

                                                                     иначе дальше

 LEA  DX, MYTEXT               вывод MYTEXE

 MOV  AH, 09H               вывод на экран

 INT  21H                                прерывание 21H 

 JMP       WERT                       безусловный переход на WERT

;----------------------------------------------------------------------------;  

 RET                                          выход из процедуры

BEGIN   ENDP                                            конец процедуры   

COR PROC  NEAR                           процедура  COR  

 NOP                                         нет операции

 AND  AH, 0DFH                     преобразование символа ‘(‘ в символ

                                                                     ‘)’ – логическое умножение

 MOV  [BX], AH             AH в BX 

 RET                                          выход из процедуры

COR ENDP                                                 конец процедуры

……………………………………………………………………..

 

BEGIN   ENDP                                            конец процедуры   

……………………………………………………………………..

;-------------------------------------------------------------   

TREW:

           mov ax,00h

  int 16h                                        ждем нажатие любой клавиши

;-------------------------------------------------------------              

           MOV AX,4C00H     символьная функция возврата  

           INT 21H                         в MS DOS.  

                         

CODESG ENDS

 END BEGIN

 

Результат работы программы VAR 5

 

Листинг программы VAR 6

 TITLE  VAR1 - ЗАМЕНА a ­  A, ВСЕ ЗАГЛАВНЫЕ СТРОЧНЫМИ

;---------------------------------------------------------------------------------------

Сегмент данных

DATASG    SEGMENT   PARA

VAR       DB         ' Вариант № 1              ' ,13,10,' ------------',13,10,'$'

VARR    DB         'Исходный текст         ' ,13,10,' -------------',13,10,'$'

TEXTT   DB ' Serduk Vladimir LEONIDOVICH' ,13,10, '---',13,10,'$'

VAR_1   DB         ' Замена всех А на а ' ,13,10,'$'

VAR_2     DB       'в) Замена всех заглавных строчными' ,13,10,'$'  

MYTEXT   DB 'Serduk Vladimir LEONIDOVICH' ,13,10, '----------',13,10,'$'

 DATASG ENDS

Сегмент стека

STACKSG  SEGMENT      'Stack'  

 DB 27 DUP(?)

STACKSG   ENDS

Назначение соответствия между адресами сегментов и сегментными регистрами  

 ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG

Сегмент кода

CODESG SEGMENT PARA  'Code'

BEGIN PROC  FAR

…………………………………………………………………..

Метка – MT1

MT1:

                   MOV AH, [BX]                     BX т.е текст MYTEXT в AH побайтно

 CMP  AH, 61H                      сравнение AH с символом Z заглавное

 JB  MT2                              переход на МТ2   

 CMP  AH, 66H                      сравнение AH c символом Z заглавное

 JA  MT2                             переход на МТ2  

 CALL COR                   вызов процедуры  COR

Метка – MT2  

MT2:

                   INC  BX                                  увеличиваем BX на 1  

 LOOP MT1                              цикл со счетчиком если 1 то на МТ1

                                                                     иначе дальше

 LEA  DX, MYTEXT               вывод MYTEXE

 MOV  AH, 09H               вывод на экран

 INT  21H                                прерывание 21H

 JMP       WERT                       безусловный переход на WERT

;----------------------------------------------------------------------------;  

 RET                                          выход из процедуры

BEGIN   ENDP                                            конец процедуры   

COR PROC  NEAR                           процедура  COR  

 NOP                                         нет операции 

 AND  AH, 0DFH                     преобразовать символа Z –большое

                                                                    в z малое

 MOV  [BX], AH             AH в BX

 RET                                          выход из процедуры

COR ENDP                                                 конец процедуры

……………………………………………………………………..

 

BEGIN   ENDP                                            конец процедуры   

……………………………………………………………………..

;-------------------------------------------------------------   

TREW:

           mov ax,00h

  int 16h                                        ждем нажатие любой клавиши

;-------------------------------------------------------------              

           MOV AX,4C00H     символьная функция возврата 

           INT 21H                         в MS DOS.  

                         

CODESG ENDS

END BEGIN

 

Результат работы программы VAR 6

 


 

А также другие работы, которые могут Вас заинтересовать

28299. Предмет ГП 14.21 KB
  Предмет ГП – составляют общественные отношения кот оно регулирует. Гражданское право регулирует: Имущественные отношения. Личные неимущественные отношения связанные с имущественными. Личные неимущественные отношения не связанные с имущественными.
28300. Метод гражданского права, его основные признаки 15.6 KB
  Децентрализация выражается в том что регулирование гражданских отношений осуществляется не только нормативными актами исходящими от государства но также и актами участников гражданского оборота соглашениями односторонними сделками. Это объясняется тем что в гражданском праве субъективные права выполняют функцию средства удовлетворения потребностей интересов их носителей в отличие например от прав государственных органов участников административных уголовных правоотношений в которых права одновременно являются обязанностями....
28301. Система гражданского права 13.98 KB
  Система гражданского права Система гражданского права представляет собой внутренне согласованное единство и деление правовых норм составляющих данную отрасль права. Состоит из: подотраслей права норм регулирующих однородные отношения обязательственное право вещное право исключительные права личные неимуще права наследственное право жилищное транспортное Подотрасль состоит из правовых институтов. Все гражданскоправовые нормы составляющие систему гражданского права можно условно разделить на Общую и Особенную части. В Общую...
28302. Основные гражданско-правовые системы современности 17.03 KB
  Основные гражданскоправовые системы современности. Современный мир отличается многообразием гражданскоправовых систем. Каждое суверенное государство имеет свое национальное гражданское право. Вместе с тем в мире существуют своеобразные типы семьи правовых систем охватывающие группы права ряда государств.
28303. Источники гражданского права. Их классификация 14.7 KB
  Источники гражданского права. Нормы гражданского права содержатся и в так называемых подзаконных актах указах Президента РФ постановлениях Правительства РФ актах министерств и иных федеральных органов исполнительной власти. Наиболее важные законы группируются: в области корпаративного права зн об акционерных обществах зн об ООО зн об госуд.муницип и унитарных предприятиях зн о банкротстве ряд знов о некомерческих организациях в области обязательственного права зн о рынке ценных бумаг о финансовой аренделизинге о...
28304. Действие гражданского законодательства во времени, в пространстве и по кругу лиц 14.26 KB
  Действие гражданского законодательства во времени в пространстве и по кругу лиц. Под действием гражданского законодательства во времени понимается определение начального и конечного момента действия правового акта регулирующего гражданские отношения. По общему правилу акты гражданского законодательства не имеют обратной силы и применяются к отношениям возникшим после введения их в действие. Различают даты принятия акта гражданского законодательства опубликования и вступления в силу.
28305. Применение гражданского законодательства 14.21 KB
  В теории права различают 4 формы реализации права: 1 . Применение – это такой способ реализации права кот связан с властными действиями юрисдикционных органов и должностных лиц. Применять норму права это значит применять власть а нередко принуждения санкции наказания. в случае пробелов в нем осуществляется путем применения аналогии закона и аналогии права.
28306. Гражданское правоотношение: понятие, элементы, содержание 15.11 KB
  Гражданское правоотношение: понятие элементы содержание. Гражданское правоотношение это урегулированные нормами гражданского права имущественные и личные неимущественные отношения. Элементы гражданского правоотношения как и любого правоотношения состоит из трех необходимых элементов: 1 субъектов; 2 объекта; 3 содержания. Виды правоотношй: 1.
28307. Субъекты и объекты гражданских правоотношений 14.49 KB
  Субъекты и объекты гражданских правоотношений Элементами гр. Субъекты гражданских правоотношений это те лица которые несут права и обязанности в правоотношении. В качестве субъектов гражданских правоотношений выступают граждане РФ иностранные граждане лица без гражданства юридические лица как российские так и иностранные. Особый субъект гражданских правоотношений государство и муниципальные образования.