ққ. қ ғ AL қ қ : =+AL. ұ ө қ , қ ң ө () ә қ ғ. қ, ң ө ә . ү AL қ ө ұғ .
ң , ң . ұ ғ ң ғғ ө қ ң . , AL=32=20h, AX=0020h.
MOV AH,0;AL AX
ң ү ң ұ ә қғ ү, ң ң . ғ ң ү ө . ұ ө (CBW, AL -), ө ө (CWD, - DX:AX-), ө ө (CWD, - AX-), ө (CDQ, E- EDX:AX-) ө ө ұ.
CBW ә CWD 8086/8088 ү, CWD ә CDQ 80386 ү
:
MOV AL,32;AL = 32d = 20h
CBW;AX = 0020h (+32 ө ү)
MOV AL,-32;AL =-32 = 0E0h
CBW;AX = 0FFE0h (-32 ө ү)
ғғ ғ қ, ң ң ң ө :
; ң ү
MOV ,0;ALàAX
ADD BX,AX
; ң ү
CBW
ADD BX,AX
ө
ң ә ң ө әү . ө ү қ:
ң ө: MUL OP
ң ө: IMUL OP
ұ ң әү ғ қ ғғ ә :
ө: AX= AL * OP (: rg8, mem8)
ө ө: (DX,AX)= AX * OP (op: rg16, mem16)
ө ө: (EDX,EAX)= AX * OP (op: rg32, mem32)
ө OP - ө, ұғ ү, . өң , қ қ ө: ө AL , ө ө AX , ө ө A .
әң , қ қ ө. ә ө ө қ . ө ә ө ө AX (-қ ғғ, AL ), ө ө ә ө ө DX, AX (DX- ғғ, AՖ ), ө ө ә ө ө ө DX, AX (DX- ғғ, AՖ ) .
|
|
, ө ө ұ . әң ғғ ң CF ә OF қ :
әң ғғ ө ө , CF=0 ә OF=0;
CF=1 ә OF=1 , ә ө ұ.
5.3.4.1-. қ - ә ң ө, Y- ө ө . Y=X*X*X ө , ә ө ө .
. -ң қ қғ ң ө, ң ң, ұқ қғ . ө, ө ә ң ұ қ, ң ң қ қғ .
ң ө-ө ө. IMUL ң ң AL ғқ ң - . * өң ә . - ө қ ө қ ң ө ұ, ү CBW қ. ұ ққ . X*X*X өң ә ө қ DX ә . ң қ ә ө ө , қ DX .
ң ә :
MOV AL,X
IMUL AL;AX=X*X (IMUL X қғ )
MOV BX,AX;AX
MOV AL,X
CBW;AX=X ө
IMUL BX;(DX,AX)=X*X*X(DX- )
MOV Y,AX
5.3.4.2-. ө , . y=ab+(3+1)(2-1) ө .
. ә ө, ә қ қ ү Y . ң қғ , ә Z- . қ қң ә Z- қғ қң ә ө ә Y қ
|
|
A DB?;A ә, ө
B DB?;A ә, ө
Z DW?;Z-қ , ө ө
Y DW?;Y-ә, ө ө
...
ү ғ қ. ә -ғ.
ғ ғ ә:
Program missal5_3_4_2;
Var
a,b:byte; y,z: integer;
begin
Writeln('a='); Readln(m);
Writeln('b='); Readln(n);
ASM
;A - ө Y-
MOV AL,A;AL=A
MUL B;AX=AL*B
MOV Y,AX;Y=AX
; қ ә z-
MOV AL,A;AL=A
MUL A;AX=A*A
MUL A;AX=*A*A
INC AX;AX=*A*A+1
MOV Z,AX;Z=*A*A+1
; қ
MOV AL,B;AL=B
MUL B;AX=AL*B
DEC AX;AX=AX-1
; қ ә z- ө y- қ
MUL Z;AX=AX*Z
ADD Y,AX;Y+AX
End;
Writeln('ә=',Y);
Readln
end.
ә 4.
қ: қ .
: ү қ ә . Қ ә . ң ө ө. ө . ө .
ө
ө ө ә ң ә ң ө ү :
ң ү ө: DIV op
ң ү ө: IDIV op
ө ұғ ү, ә ө 8 (), 16 (ө) ә 32 ( ө) . өң , қ қ ө: ө қ ө A , ө ө ө (DX,AX) , ө ө ө ө (EDX,EAX) . ө ң ә өң ү қғ .
ө қ ө:
AH:=AX mod op, AL:=AX div op (op:reg8,mem8)
ө ө ө:
DX:=(DX,AX) mod op, AX:=(DX,AX)div op (op:reg16,mem16)
ө ө ө ө:
EDX:=(EDX,EAX) mod op, AX:=(EDX,EAX)div op (op:reg32,mem32)
ө ғ ң ү ө, қ ө ө қ ү. ұ қң :
ө ө ң;
ө ғ .
ө ө ұ ү ө cң ө ө қ. AL:=AL div CH :
; ң ү
MOV ,0;ALàAX
DIV CH;AL = AL div CH (AH = AL mod CH)
; ң ү
CBW;ALàAX
ADD BX,AX;AL = AL div CH (AH = AL mod CH)
5.3.5.1-. ө :
ұғ N, M ө .
. Ө ү ө ө . ң өң ө . ә қ қ ү қ ғ (A-ғ) қ. ө ө . , өң , ққ ә -ғ ө. қ ү PTR қ. ң ң өң ә ққ ә ү ө ү AL ә AH ққ ә ә Z ә Y .
|
|
N DB?;n ә, ө
M DB?;m ә, ө
Y DB?;Y- әң ү , ө
Z DB?;Z- әң ү , ө
A DW?;A-қ , ө ө
...
ә -ғ . ғ , қ.
ғ MIS5_3_5_1PAS.pas ң ә:
Program missal5_3_5_1;
{$L mis5_3_5_1.obj} { mis5_3_5_1.obj қ}
{$f+}{FAR қ }
Var
m,n,y,z:byte;
{ ғ қ ң }
Procedure mis5_3_5_1 (var m,n:byte; var y,z:byte);{FAR;} external;
begin
Writeln('m='); Readln(m);
Writeln('n='); Readln(n);
mis5_3_5_1(m,n,y,z);
Writeln('ү=',Y,';Қғ=',z);
Readln
end.
ғ MIS 5_3_5_1 ASM.asm ң ә:
; mis5_3_5_1.asm
.MODEL Large
.data
; ә -
; m,n ә, ө
Extrn m:byte, n:byte
; Y- әң ү , ө
; Z- әң ү , ө
Extrn Y:byte, Z:byte
A DW?;A- , ө ө
.code
Public mis5_3_5_1
mis5_3_5_1 proc far
;өң ө
MOV AL,N;AL=N
MUL N
MUL N;AX=AL*N*N
INC AX;AX=AX+1
MOV A,AX;A=AX
;өң
MOV AL,M;AL=M
MUL M;AX=AL*M
DEC AX;AX=AX-1
DIV BYTE PTR A;A- қ
;ө ә Y ә Z
MOV Y,AL;Y=AX DIV A
MOV Z,AH;Z=AX MOD A
ret
mis5_3_5_1 endp End
ә 5
қ: ө. ә ө . ө
. ө. ө. ө. (қ) ө. қ (қ) ө. ң қ ө . Қ қғ ң ә ө. ң ә қ ө.
Ә қ ң , ғ ү, ң . қ ң қ ө қ . ү, ғ ғ ө ү қ ( қ ) қ. ұ ққ ө . .
Ө ө ә ө ө. ө қ қ ң , ө ө, қ қ ө .
қ ө .