X 30 .
X DW 30 DUP (?)
, , . , 0, . 0, i- :
(X[i]) =X + (type X)*i
type X ( type X = 2, type X = 4).
, k, :
(X[i]) =X + (type X)*(i-k)
.
, :
MOV CX, A[BX]
A, , :
= (A + [BX]) mod 216
, , A BX, . , 16 , mod .
, , , - . BX, BP, SI DI.
- , .
.
X DW 100 DUP (?); X[0..99]
AX .
AX 0, AX:=AX+X[i] i 0 99. , :
ADD AX, X + 2 * i
: , . i.
X+2*I X, i, 2*i, . , - (, SI), .
- , , .. . , SI , , , .
|
|
SI. SI 0, 2; X, X+2, X+4, , X+198.
, X :
MOV AX, 0;
MOV X, 100;
MOV SI, 0;
; ()
L: ADD AX, X [SI]; AX:= AX + X[i]
ADD SI, 2;
LOOP L; 100
1.3.
1) :
;
( ) - ( );
( AX) (, ).
2) . 4.
4
( BX) | |
( ) | |
( , ..) | |
( , ..) ( ) | |
( , ..) ( ) | |
, | |
(.. ) | |
(.. ) | |
, , | |
, |
1.4.
:
;
( ).
, .
2. 4
2.1.
:
.
.
:
DOS, MASM, AFD.
2.2.
2.2.1.
, : , , . , : 64 16. , , .
|
|
, .
SS , ( 16 ).
SP ( ). , , .. , . SS:SP.
: , , .. . .
k :
S SEGMENT STACK
DB k dup (?)
S ENDS
STACK SEGMENT SS , SP ( k).
, ( ). 128 . , , , 128 .
2.2.2.
.
PUSH op
:
16 ;
;
.
PUSH : SP 2 ( 216), .. SP , .
SP:= (SP - 2) mod 216, op -> [SS:SP]
( I80186). , , :
MOV AX, 5
PUSH AX
. , .
, *:
MOV AL, *;AL:=* AH:=?
PUSH AX
, .
:
POP op
:
16 ;
( CS );
.
POP . : , SS:SP, , SP 2 ( 216), .. :
[SS:SP] -> op, SP:=(SP+2) mod 216.
2.2.3