ұ ұқ ң қ қғ , қ ұ. ұ ұқғ ү ң ә қ.
. ұғ ү ң қ () ө қ, : MOV CX,A. қ ғ қ қ ө ү, : MOV CX,A[BX]. ө , () ұ . ұ :
= (+[BX]) mod 216,
ұ [BX] ң құ . қ қ қ ұ ә қ , қ ң , . ( ө ң .) қ ә қ қ қ, ң ңғ 16 , ғ mod ө.
ғ , қ - ғ . ұ, , , Intil BX/BX,BP/BP,ESI/SI ә EDI/DI ң ғ .
ғ, ADD A[SI],5 қ. ұ SI ғ. қ 100 ұ . = +[SI]=+100, ұ 5 +100 ұқғ ғ қ . SI- -2(0FFFFh) ұ, = -2, қ 5 -2 ұқғ ғ қ .
ң ө ә ү ө. ұ ө ң, ү . ң ғң , ұ қ, .
. ққ: қ
X DW 100 DUP(?);X[0..99]
, ң ң қ X .
Қ ү, - 0 , ң AX:=AX+X[i], ұ 0- 99-ғ ө, . [i] ң +2* ғқ, ғ ә :
|
|
DD AX, X+2*i
қ ұ қ ң ә ң қ : ң қ ө, ң , , ө . , ұ ң ө ө .
ғ қ: әү ұ (ө ұ ), қ қ. ̳ ққ ү, .
+2* ө қғқ ө: ә ұқ қғ - ә ә қғ 2*-. ұқ қғ ң ө , қғ қ -ғ (қ SI-) қ:
қ? ұ ң ү ө, ғ қ ң қғ. ғ, ұ , ғ SI ң құ (2*)-ң қ ғ. қ SI ң ә ө , ө әү ұ . ө, қ ң , ң қғ. қғ SI ң құ ұ ө. : SI- 0 , ң ң ә 2 қғ ; ә ң ,+2, +4,...,+198 ұ .
- қғ ққ (ә қ ә ө), - , ң ә - .
ғ , ң ң қ ң ө :
MOV AX,0;қң қ ә AX:=0
MOV CX,100; ғ :=100
MOV SI,0;ң қ ә
L: ADD AX,X[SI];AX:=AX+X[I]
ADD SI,2;
LOOP L;100 қ
. ң ғ ғ ққ.
қ қ : , қ ғ ө ө қ ұқ , ұққ ( 300 )
|
|
ұқң () , ұ MOV x, 300 . қ құ ә , ө . ? ң ұ ү, қ қ ә қ. ң ғ ө ә қ, =0+[BX]=0+x=x. қ ң
MOV [BX], 300
.
ұғ қ әң : қғң қ қ ң ғ , , қ ұ қғ ө ө , ғ қғ ө, қ ұ ғ. ұғ () ғ ө . ұ қ қ ө ә .
, ә, ө ұқң ө қ қ ғ . , ү, ұғ ұққ ө қ , ү MOV [BX],0 қғ , ұ ң ө ү: 0 , ө , қ , ө (ғ ұ ғ , 300 ө ө ). қ R ң ө, ң ө ө қ:
MOV BYTE PTR [BX],0;
MOV WORD PTR [BX],0;ө
. ү ғ ққ. қғ ң ғ . ү ө . - ө ұқ , ң ү BX/BX BP/BP ң , ESI/SI EDI/DI ң қ (BX/BX ә BP/BP ESI/SI ә EDI/DI қғ ). :
MOV ,[BX][SI]
ұ ғ , :
= (A+[BX]+[SI]) mod 2 16
ә ө ұ қ. қ, ү, 10×20 :
A DB 10 DUP (20 DUP(?));A [0..9,0..19].
. ққ. қ ө , ө ( ұққ), ң ң ү ү қғ
A: A=A
E[M]: A=(E+[M]) mod 216 (M: BX,BP,SI,DI)
E[M1][M2]: A=(E+[M1]+[M2]) mod 216 (M1:BX,BP;M2:SI,DI)
(. =0 , 0- ғ : 0[M]=[M])
ғ , - - қ ,,S DI ғ . ғ, ө қ. -ң ұ қғ ұқ , , SI DI .
|
|
. ұ ә қ ү ұ қ, қ. ұ ң қ қ қғ (ә қ, , қ ә).
ң ө: - қ ң , TYPE X[SI]=BYTE, ұққ ө ө (, 1[BX]) ң қғ .
ө ң ү ә қ, ү , ү ұқ .
қ қ ұ ң ң қ қң қ :
1) қ -ң ң (,,SI,DI) ң құ ө (ң қ ң ө ө).
:
A DW 99
AA DW A
...
MOV BX,AA;A BX-
MOV CX,[BX];CX:=A (CX:=99)
MOV CX,BX;CX:=BX(CX:= )
. ң қғ ғ .
2) ө қғ ғ , ң ғ ө (қ , ғ ө ү).
:
MOV CX,[2];=MOV CX,2
MOV CX,[A];=MOV CX,A
MOV CX,[A+2[BX]];=MOV CX,A+2[BX]
3)
[x] [y] = [x]+[y] = [x+y]
қ қ, ө қ қғ , өң қ .
:
MOV CX,[BX][SI];= MOV CX,[BX]+[SI] = MOV CX,[BX+SI]
қң қ ққ ә ң ң ү ә ү, ң қ ұқ ғ . , ә ң ң :
A+1,[A+1],[A]+[1],[A][1],A[1],1[A],[A]+1,
5[SI],[5][SI],[5]+[SI],[SI+5],[SI]+5,
A-2[BX],[A-2]+[BX],[A-2+BX],A[BX-2],A[BX]-2,
A[BX][DI],A[BX+DI],[A+BX+DI],A[BX]+[DI],
0[BX][SI],[BX][SI],[BX]+[SI],[BX+SI],[SI][BX],
, әү ә ғ . , ұ қ әң ң ү ң қ . Қғ ғ:
ң қ (+);
(+2) қғң қ;
ң ғ ү ([SI+DI]);
|
|
(A[CX],2[BL]);
қң ғ ([SI]5,[BX]A).
қ, ү ([5]), ұққ ө . қ ғ қ, ә ө ұғ ң ү ң. қң ң , қ қғ қ ү қ. ұ ұқ (A[i+3]).
ғ . ө ң ә (EQU,PTR ә ..) қғ , қ ә қ қ қғ . ,
DW 1[SI]
ң ң ә ұғ ғқ ұ қ .
ұ өң ғ қ. ұ қ ә ң ү . ә -ғ ғ. ғ , қ қ.
N EQU 10
X DW N DUP(?);X[0..N-1]
ң ң ү қ, ң ( ұ ) ә ң .
. (X[i]=X+2*i) ғқ қ (қ SI ) (2*) қғ . Ә ә ң ұ , ң ғ ң ң , қ ү, ө.
ғ Mas_Max.pas ң ә:
Program Mas_Max; {$L Mas_Max.obj} { SIM.obj қ} {$f+}{FAR қ } label l1,l2; type m: array[0..100] of byte; var n: word; i: byte; Max: word; x: m; { ғ қ ң } Procedure Mas_Max(var n:word;X:m; var i:byte; mas:word);{FAR;}external; begin Writeln('ң ='); Readln(N); For i:=1 to n Do Read(X[i]); Mas_Max (n,x,I,Max); Writeln('i=',I, Max=,Max); Readln end. |
ғ Mas_Max.asm ң ә:
;Mas_Max.asm ң ә .MODEL Large .data ;ә - ;n ң , Extrn n:Word, x:word ;ә: Max ә ң Extrn i:byte, max:word .code Public Mas_Max Mas_Max proc far MOV BX,X;BX=X[0] (қ max) MOV ax,0;AX=2*(max-ң ),ғқ 0 MOV SI,0;SI=2* MOV CX,N; l1: CMP X[SI],BX;X[i]= max? JLE l2;X[i]<= max ғ àL2 MOV BX,X[SI];ң max- қ MOV ax,si;max-ң l2: ADD SI,2;SI=SI+2 LOOP l1;àL1 MOV CL,2;CL=2 DIV CL;CL div 2 mov,bx;max mov i,al;i ret Mas_Max endp End |
N EQU 50
S DB N DUP(?);S[0.. N-1]
Y ң ғ ғ .
(S[0],S[1],S[2],,S[N-1])à(S[2],,S[N-1],S[0],S[1])
. ұ S[i]=S[i+2] . , (қ DI ) ң ң () , Y ң ө . Y[i+2] ң ә ә ө (+2- ғ), ң ң ғқ ә () қ қ ғ . қ қ ғ ң:
|
|
(S[i])=Y+i
(S[i+2])= S+(i+2)=(S+2)+i
, DI=i ғ S[i]- c S[DI] ө , S[i+1]- S+2[DI] S[DI+2] ө . ө, 2- қ, ө, ң ө ө ңғ.
ʳ ғ Mas_ Misal_2.pas ң ә:
Program Mas_Misal_2; label l1; type m: array[0..100] of byte; var n: word; i: byte; Y: m; begin Writeln('ң ='); Readln(N); For i:=1 to n Do Read(X[i]); asm LEA BX,Y MOV AH,[BX];Y[0] ә Y[1]- құқ MOV AL, [BX+1] MOV CX,N; ADD CX,2; CX=N+2(ғ ) L1: MOV DH,[BX+2] MOV [BX],DH;Y[i]:=Y[i+2] INC BX;i:=i+1 LOOP L1 MOV [BX],AH;Y[n-2]:=Y[0] MOV [BX+1],AL;Y[n-1]:=Y[1] end; For i:=1 to n Do WRITELN(Y[, I, ]=, Y[i]); end. |
N EQU 50
Y DB N DUP(?);Y[0.. N-1]
S ң , ғ ң ң қққ қ ң қ қ ә 1 () 0 ( ) ә AL қ.
. ұ S[i]- ә S[N-1-], 0- (N div 2)- ө, . Ә қ ү - , қ ү N-1-i ғ , ү қ. N-1-i ң (j) , j- қ қ ұ .
ғ SIM_PAS.pas ң ә:
Program SIM_PAS;
{$L SIMMET.obj} { SIM.obj қ}
{$f+}{FAR қ }
label l1,l2;
type m:array[0..10] of byte;
var n:word; x,i:byte;
s:m;
{ ғ қ ң }
Procedure SIM(var n:integer;s:m; var d:integer);{FAR;}external;
begin
Writeln('ң ='); Readln(N);
For i:=1 to n Do Read(s[i]);
SIM (n,s,x);
Writeln('X=',X);
Readln
end.
ғ SIM.asm ң ә:
;mis_Mas.asm
;Sim_Mas ң ә
.MODEL Large
.data
;ә -
;n ң , s
Extrn n:Word, s:byte
;ә: X=1, ә X=0
Extrn x:byte
.code
Public sim
sim proc far
mov dl,2;dl=2
MOV x,0;x=0
MOV SI,0;i:=0
MOV DI,N
dec di;j:=n-1
mov ax,n
div dl;n div 2
MOV Cl,al;Cl=n div 2
mov ch,0;CX=n div 2
; ұ
L1: MOV AH,S[SI]
CMP AH,S[DI];S[i]=S[j]?
JNE FIN;ң ? AL=0- ғ
INC SI;i:=i+1
DEC DI;j:=j-1
LOOP SYM;à L1
MOV x,1;қ ұ ң? X=1
L2:
ret
sim endp
End
8.1.3.4-. ң ң ғқ ғ L .
. ң (ғқ 20 ң , 20 - ә ...) [I,j] ң +20*i+j. ұғ 20* қ ү , j- қ ү SI , A[BX] - ң - ң ғқ , A[BX] [SI] ң j- ң .
MOV AL,0; , ғқ 0
;қ ( )
MOV CX,10;қ
MOV BX,0;- (20*) ң ө
L: MOV AH,A[BX]; ң ғқ
MOV DX,CX;қ ң - құқ
;ғ
MOV CX,19;
MOV SI,0;j- ғ ң
L1: INC SI;j:=j+1
CMP A[BX][SI],AH;A[i,j]=AH?
LOOPNE L1;ә A[i,j]<>AH ғ қ
JNE L2;AH қғ қ àL2
INC AL;
; ң
L2: MOV CX,DX;- қ ү қ
ADD BX,20; ң ө
LOOP L;10 қ
ә 11,12