6822

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

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

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

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

Русский

2013-01-08

213.5 KB

17 чел.

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

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

  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

 


 

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

34082. Право частной собственности на земельные участки: общая характеристика, субъекты права собственности 31.5 KB
  Право частной собственности на земельные участки: общая характеристика субъекты права собственности. Частная собственность на земельные участки. Исключения: иностранцы лица без гражданства а также российские юридические лица в уставном складочном которых доля иностранцев и лиц без гражданства более 50 могут использовать земли сельскохозяйственного назначения только на праве аренды ФЗ âОб обороте земель сельскохозяйственного назначенияâ; земельные участки расположенные на территории ЗАТО могут приобретать российские...
34083. Содержание права частной собственности на землю. Объект права частной собственности 30 KB
  Содержание права частной собственности на землю. Объект права частной собственности. Право собственности является наиболее обширным по объему правом на вещь. Римские юристы не оставили точного определения права собственности но упоминали об основных правомочиях собственника.
34084. Разграничение государственной собственности на землю 27.5 KB
  Разграничение государственной собственности на землю. 214 ГК РФ государственная собственность имущество принадлежащее на праве собственности Российской Федерации федеральная собственность и имущество принадлежащее на праве собственности субъектам Российской Федерации собственностьсубъектов Российской Федерации. Таким образом субъектами права государственной собственности являются Российская Федерация республики края области города федерального значения автономная область автономные округа.Поскольку объектами любых прав...
34085. Понятие и общая характеристика приватизации земель в Российской Федерации 25 KB
  Приватизация земельных участков может осуществляться одновременно с приватизацией расположенных на нем объектов недвижимости на основании положений Земельного кодекса РФ ФЗ от 21 декабря 2001 г. 3 ФЗ О введении в действие Земельного кодекса Российской Федерации. Приватизация земельных участков может производиться путем продажи их на аукционе или конкурсе продажи посредством публичного предложения или без объявления цены путем внесения земельного участка в качестве вклада в уставный капитал открытого акционерного общества. Цена выкупа...
34086. Пожизненное наследуемое владение земельным участком 24.5 KB
  Право пожизненного наследуемого владения. предоставление земельных участков на праве пожизненного земельного владения не допускается. Основаниями возникновения права пожизненного наследуемого владения являются: принятие наследства в состав которого входит пожизненное наследуемое владение на земельный участок. договор куплипродажи или иная сделка об отчуждении здания строения сооружения расположенные на земельном участке принадлежавшем бывшему собственнику зданий строений сооружений на праве пожизненного наследуемого владения;...
34087. Постоянное (бессрочное) пользование земельным участком 27.5 KB
  Юридические лица могут быть разделены на 3 группы по отношению к этому праву: юридические лица которым и после введения в действие Земельного Кодекса предоставляются земельный участки на данном праве и которые могут использовать земельные участки на праве постоянного бессрочного пользования органы государственной власти органы местного самоуправления государственные и муниципальные учреждения казенные предприятия центры исторического наследия президентов России прекративших исполнение своих полномочий; юридические лица...
34088. Основания возникновения и изменения прав на земельные участки 59 KB
  По договору кули продажи одна сторона продавец обязуется пережать другой стороне покупателю земельный участок за плату. договор дарения: По договору дарения одна сторона даритель безвозмездно передает или обязуется передать земельный участок другой стороне одаряемому в собственность. договор ренты: По договору ренты одна сторона получатель ренты передаёт другой стороне плательщику ренты земельный участок в собственность а плательщик ренты обязуется периодически выплачивать ренту. Рента обременяет земельный участок поэтому...
34089. Основания прекращения прав на земельные участки 38.5 KB
  Основания добровольного прекращения: ликвидация юридического лица; смерть гражданина и отсутствие соответствующих наследников; отчуждение земельного участка другим лицам в порядке установленном гражданским законодательством; добровольный отказ от прав на земельный участок. Процедура различна для собственников и лиц не являющихся собственниками Собственник земельного участка может отказаться от своего права путем подачи заявления в орган осуществляющий государственную регистрацию прав на недвижимое имущество и сделок с ним....
34090. Сделки с земельными участками: понятие и виды сделок 53.5 KB
  Особенности оборота земельных участков находят отражение в содержании соответствующих сделок с землей. Так гражданскоправовой институт наследования имущества применяется и в земельном праве однако в целях предотвращения дробления наследуемого земельного участка между многими наследниками земельным законодательством могут быть установлены особые правила наследования земельных участков. Земельное законодательство предусматривает особенности совершения например сделок куплипродажи земельных участков обусловленные необходимостью обеспечения...