Работ №05. Программирование ветвлений и циклов 1


Прямой внутрисегментный переход



Pdf көрінісі
бет3/6
Дата15.10.2023
өлшемі427.25 Kb.
#480816
түріРешение
1   2   3   4   5   6
Р05 Ветвления и циклы

Прямой внутрисегментный переход отличается от 
короткого длиной машинной команды в 3Б (1Б – код 
операции, 2Б и 3Б – смещение) ➔ дальность перехода по 
нему – 64 КБ относительно следующей за JMP команды. 
Косвенный внутрисегментный переход означает, что в 
команде JMP указывается место хранения адреса переход. 
Например: 
LEA BX, M1 
JMP BX 
. . . . . . 
M1: MOV AL, 34H 
Или 
DSEG SEGMENT PARA PUBLIC ‘DATA’ 
ADDR DW M1 
. . . . . . . . 


CSEG SEGMENT PARA PUBLIC ‘CODE’ 
ASSUME CS:CSEG, DS:DSEG, SS:STACK 
. . . . . . 
JMP ADDR 
В командах косвенного перехода рекомендуется 
применять модификатор NEAR, т.к. транслятору не всегда 
удается определить, находится адрес перехода в текущем 
сегменте кода. 
Команда прямого межсегментного перехода имеет длину 
5Б: 
• 1Б – код операции, 
• 2Б и 3Б – смещение адреса перехода, 
• 4 и 5Б – значение сегментной составляющей (CS) того 
кодового сегмента адреса перехода. 
Например: 
SEG1 SEGMENT PARA PUBLIC ‘CODE’ 
ASSUME CS:SEG1, DS:DSEG1, SS:STACK 
. . . . . .. . 
JMP FAR PTR M2 
. . . . ... 
M1 LABEL FAR 
. . . . . . .. 
SEG1 ENDS 
SEG2 SEGMENT PARA PUBLIC ‘CODE’ 
ASSUME CS:SEG2, DS:DSEG2, SS:STACK 
. . . . . . .. . 
M2 LABEL FAR 
JMP M1 


Во втором случае FAR опционален, что связано с 
нахождением метки до команды переход ➔ транслятор 
может 
самостоятельно 
понять, 
что 
переход 
межсегментный. 


Достарыңызбен бөлісу:
1   2   3   4   5   6




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет