КТП / 5,6 Ветвления,циклы2
.docОрганизация ветвлений и циклов
Ветвления в программе на ассемблере можно организовывать с помощью команд условного перехода, типа JX M или JNX M, т.е. условный переход на метку М (по адресу М), если (Х)=1 или (Х)=0 (см. систему команд, команды передачи управления), а также безусловного перехода JMP M.
if X then Y
Нет
Да
|
1) JNX M X=0 X=1
M: … |
2) JX M1 X=1 X=0 JMP M2
M1:
M2: … |
if X then Y1 else Y2
Нет
Да |
1) JNX M1 X=0 X=1
JMP M2 M1:
M2: … |
2) JX M1 X=1 X=0
JMP M2 M1:
M2: … |
Рассмотрим две логические структуры из языка высокого уровня Паскаль, типа if X then Y и if X then Y1 else Y2 (Х – логическое условие; Y,Y1,Y2- выполняемые действия) и организуем подобные структуры на ассемблере (таблица ).
Таблица - Организация ветвлений на Паскале и ассемблере
Ветвления в программе на ассемблере можно организовывать с помощью команд условного перехода, типа JX M или JNX M, т.е. условный переход на метку М (по адресу М), если (Х)=1 или (Х)=0 (см. систему команд, команды передачи управления), а также безусловного перехода JMP M.
Рассмотрим две логические структуры из языка высокого уровня Паскаль, типа if X then Y и if X then Y1 else Y2 (Х – логическое условие; Y,Y1,Y2- выполняемые действия) и организуем подобные структуры на ассемблере (таблица ).
Таблица - Организация циклов на Паскале и ассемблере
for I:=Imax downto Imin do S
Нет
Да
|
MOV Rn, #Nцик
M:
(Rn)≠0 DJNZ Rn, M (Rn)=0 Нет Да |
|
while X do S
Нет
Да |
1) M1: JNX M2 X=0 X=1
JMP M1 M2: …
|
2) M0: JX M1 X=1 X=0 JMP M2 M1:
JMP M0 M2: …
|
repeat S until X
Нет
Да |
1) M1: X=0 JNX M1 X=1 …
|
2) M1:
X=1 JX M2 X=0 JMP M1 M2: …
|