. 4, Pascal .
4.4
Pascal .
Pascal | ||
If X > 0 then begin S1 end else begin S2 end; | CMP X, 0 JLE L2 S1 JMP Fin L2: S1 Final: | |
For X:=1 to N do begin S end; | MOV CX, N L: S DEC CMP CX, 0 JNE L Final: | |
While X > 0 do begin S end; | Begin: CMP X, 0 JLE Fin S JMP Begin Final: | |
Repeat S until X > 0 | Begin: S CMP X, 0 JG Begin |
, Intel 8086 : LOOP, LOOPE/LOOPZ LOOPNE/LOOPNZ. .
4.4.1. : LOOP <>
LOOP :
MOV | CX, N | ; N>0 | |
L: | |||
LOOP | L |
LOOP.
ü , .
ü , , .
ü LOOP , . = 0 . , , = 0 JCXZ:
MOV | CX, N | ; N>0 | |
JCXZ | L1 | ; CX = 0 L1 | |
L: | |||
LOOP | L | ||
L1: |
LOOP , ( L) 127-128 ( 30-40 ). , LOOP -.
4.4.2. ( ):
LOOPE <> LOOPZ <>
( ) (), , 1. , . .
( ZF=0 =0), . ZF ( JE/JZ JNE/JNZ), , . . ZF = 0 ( ) , .
|
|
LOOPE , .
4.4.3. :
LOOPNE <> LOOPNZ <>
LOOPE/LOOPZ, = 0 ZF = 1. LOOPNE , .
Examle 4.3. , N .
;
.data
mes1 db , 10, 13, $
mes2 db , 10, 13, $
N EQU 5
;
.code;
MOV CX, N;
cycl:
MOV DX, OFFSET mes1;
MOV AH, 09h;
INT 21h;
LOOP cycl; CX = CX 1, CX > 0, , .
MOV DX, OFFSET mes2; ,
MOV AH, 09h;
INT 21h;
MOV AH, 4Ch;
INT 21h;
;
Examle 4.4. , .
;
.data
mes1 db , 10, 13, $
mes2 db , 10, 13, $
array db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
;
.code;
MAIN:
MOV CX, 10;
MOV SI, OFFSET array;
MOV BL, 3;
DEC SI; SI
cycl:
INC SI; SI,
CMP [SI], BL
LOOPNE cycl; CX = CX 1, CX > 0 ZF = 0, , .
JE ravno
JNE neravno
JMP exit
ravno:
MOV DX, OFFSET mes3;
MOV AH, 09h;
INT 21h
JMP exit;
neravno:
MOV DX, OFFSET mes4;
MOV AH, 09h;
INT 21h
exit:
Examle 4.5. , . .
.
MAX | DW | ? | ||
MASS | DW | 10h, 20h, 30h, 5h, 40h, 15h, 20h, 70h, 35h, 34h | ||
LEA | BX, MASS | |||
MOV | CX, 10 | ; | ||
MOV | AX, [BX] | ; | ||
BEG: | CMP | [BX], AX | ; | |
JL | NO | ; | ||
MOV | AX,[BX] | ; | ||
NO: | ADD | BX, 2 | ; | |
LOOP | BEG | ; | ||
MOV | MAX,AX | ; | ||
Examle 4.6. N - 0 8. . (8! = 40320 < 2 16).
:= 1, N AX:= AX*i, i 1 8. , N = 0 .
MOV | AX,1 | ; AX:=0! | |
MOV | CL, N | ||
MOV | , 0 | ; CX:= N ( ) | |
JCXZ | Fl | ; N = 0 | |
MOV | SI, 1 | ; i:= l | |
F: | MUL | SI | ; (DX, AX):= AX*i (DX = 0) * |
INC | SI | ||
LOOP | F | ||
F1: |
Examle 4.7. BL [2, ], N ( N - , 2 <= K < N), 0, .
|
|
N 2, 3,..., 0 - , .
MOV | DL, N | ; AX:=0! | |
MOV | DH, 0 | ; DX:= N | |
MOV | CL, K | ||
MOV | CH, 0 | ||
DEC | CX | ; CX:= K-1 ( ) | |
MOV | BL, 1 | ||
DV: | INC | BL | ; [2,] |
MOV | AX, DX | ||
DIV | BL | ; AH:=N mod BL | |
CMP | AH, 0 | ; mod = 0? | |
LOOPE | DV | ; mod = 0 | |
JNE | DV1 | ; mod <> 0 DV1 | |
MOV | BL, 0 | ; | |
DVl: |