:
1 ?
2 ?
3 ?
4 - .
5 , - .
:
/;
/ .
:
JCXZ (Jump if CX=Zero) , 0;
JECXZ (Jump if ECX=Zero) , 0.
(), .
0, (), , .
:
LOOP (LOOP control by register CX) ;
LOOPE/LOOPZ (LOOP control by register CX not equal 0 and ZF=1) ZF;
LOOPNE/LOOPNZ (LOOP control by register CX not equal 0 and ZF=0) ZF.
LOOP <> . ʳ /. LOOP / , 0.
LOOPE/LOOPZ , LOOPNE/LOOPNZ. . / ZF, / 0, LOOP , / 1, . ZF = 0, LOOPE/LOOPZ , LOOPNE/LOOPNZ . ZF = 1 . LOOPNE/LOOPNZ , 0, LOOPE/LOOPZ .
:
1 ?
2 ?
3 - CX JCXZ LOOP?
4 LOOP?
:
1 ?
2 LOOPNZ 1
M1: MOV AX,DX
|
|
LOOPNZ 1
NOP,
0001 ?
3 LOOPE/LOOPZ ?
4 LOOPE 1, ?
5 , JPO M 1.
-86
˳
:
1 ?
2
7000:0100 MOV AX,7000H;?
, . , , / ++. , , , . , , - .
. , , ', . , , . , , . .
. . . , , . .
9.4.1 3 F 8 H 2 F 8 H , 0020 . 4- , 0030 .
ϳ , .
:
MOV DX,3F8H; DX 3F8H
MOV SI,0020H; SI
;
MOV DI,0030H; DI
;
MOV CL,04H; CL
XOR ,;
IN AL,DX;
MOV CH,AL;
|
|
MOV [SI],AL;
MOV DX,2F8H; DX 2F8H
IN AL,DX;
INC SI;
;
MOV [SI],AL;
AND CH,F0H;
AND AL,F0H;
SHR AL,CL;
;
OR CH,AL;
MOV [DI],CH;
NOP
, D 1 12 (00010010 ), D 2 34 (00110100 ). , 0001 , 0011 . 00010011 13 .
, .
9.4.2 -28 DL D . :
) MOV DL,-28H ) MOV DH,-28H
NEG DL NOT D
OR DL,80H ADD D,81H
- 䒺 , DL DH -28 , D 8 H. NEG DL, , 28 , OR DL,80 H, 1 . -28 , 8 ( )). ) D 8 H, D , 81 . 1 1 ; DL 8 .
9.4.3 ZF, SF PF , AL.
OR AL,AL
, AL, . , 56 , :
ZF =0;
SF =0;
PF =1.
9.4.4 CF, SF, AF :
) MOV AL,EH ) MOV AL,2AH ) MOV AL,2AH
SU AL,2AH SUB AL,4EH SUB AL,E4H
NOP NOP NOP
:
) _4 EH ) _2 AH ) _2 AH
2 AH 4 EH E 4 H
24 H DCH 46 H
CF =0 CF =1 CF =1
AF =0 AF =1 AF =0
SF =0 SF =1 SF =0
CF 1, , ) ). CF 1, SF =1 , . CF, .
9.4.5 : 1 2, 0000:0400 0000:0300 . 3FBH 1 :
MOV DX,3FBH; DX
IN AL,DX;
0000011 = 03 13 . : (D 3 = 0, D 4 = X), (D 2 = 0), 8 (D 1 = 1, D 2 = 1).
9.4.6 D 1 D 2 3- 5- , 0010. , 0, 2, 7 ; . , D 1 25 , D 2 73 . () . .
|
|
F 1= 11011010 = DAH.
F 2 = D 2 /\ mask; mask = 01111010 = 7 H.
16 , 25 , 73 .
7000:0010 12 34 56 25 43 73 43 54 65 76 82 37 15 13 14 61 52.
, 2080 .
. 9.12.
, ,
MOV AX,7000H;
MOV DS,AX;
MOV SS,AX;
MOV SP,2080H;
MOV BX,0010H;
MOV AL,[BX+03]; AL
NOT AL;
MOV AH,[BX+05];
AND AH,7AH;
PUSH AX;
9.12
.
NOT ; NOT DAH, AL, AND 72 , ; OF = 0, CF = 0, SF = 0, AF = 0, ZF = 0, PF = 1.
9.4.7 , D 1 D 2, . 33 . , 10 SI, , 20 DI 2 . 7000 .
, 10 20 . , SI 6 , DI 2 .
7000:0010 12 34 56 25 40 43 71 43 65 76 82 37 15 13 18 60
7000:0020 14 36 58 27 45 73 48 54 65 76 82 39 17 15 14 61
D 1 4371 , D 2 7345 . F 1 :
F 1= D 1Å D 2=3034 .
OF = 0, CF = 0, SF = 0, AF = 0, ZF = 0, PF = 0.
F 2 :
F 2 = F 1 ´ 33 H = 3034 H ´ 33 H = 99 5 .
: OF = 1, CF = 1, SF = 1, AF = 1, ZF = 0.
:
MOV AX,7000H;
MOV DS,AX;
MOV BX,0010H;
;
MOV DI,2H;
MOV SI,6H;
XOR DX,DX; DX
MOV AX,[BX+SI];
MOV BX,0020H;
;
XOR AX,[BX+DI+2]; 2
MOV C,33H; CL
MUL C; 33
MOV [BX+DI+2],AX;
;
MOV [BX+DI+4],DX;
;
ϳ 9 5 , DX 0009 .
:
1 쒿 Intel?
2 쒿 Intel?
3 32 . , 4 , .
|
|
4 , ; . .
5 . 44 , , DI.
6 , DS: 50, STOSW.
7 . .
:
1 , .
2 .
:
1 () ?
2 , .
. . , . - IP, . , IP / CS . (far), (near) (short) . IP, CS, - , , 216 , . - , , . . IP [-216... +216-1] , CS , CS. IP [-128...+127] .
() . :
JMP 0110H; 0110
JMP [offset];
; IP
JMP [operand]; ;
;
;
, , .
8-, 16- 32- ( I 80386 ).
, . IP, CS .
16- (, , , DX, SI, DI, BP, SP) 32- (EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP ) . , . IP CS. .
CS: IP
7000: 30 MOV DS,AX; DS
7000: 32 MOV AX,1234H; 1234
7000: 35 JMP 0039H; MOV CX,AX
7000: 37 MOV CX,AX;
7000: 39 MOV DX,AX; DX
CS: IP
7000: 30 MOV DS,AX;
7000: 32 MOV AX,0039H;
7000: 35 JMP AX;
7000: 37 MOV CX,AX;
7000: 39 MOV DX,AX
CS: IP
7000: 30 MOV AX,003CH;
|
|
7000: 33 MOV [ 50],AX;
7000: 36 JMP [50];
7000: 3A MOV CX,AX;
7000: 3C MOV DX,AX
.
() , , , . . 9.4. . . , . -128...+127, 1 . I 80386 , 2 4 . S .
, , .
, CMP , , .
9.4.8 D 1 D 2 . , . , :
5 ;
;
10 11 .
:
02 ;
01 ;
.
, .
(. 9.13).
9.13
:
MOV AX,0F0AH;
PUSH AX;
POP AX;
MOV BX,AX;
SUB BL,BH; г
JNS POSIT; ?
JP EVEN; ͳ, ?
ADD AL,05H; ͳ,
NOT AH;
MOV [10H],AX;
;
JMP KNEC;
EVEN: ADD AL,02H; ,
INC AH;
MOV [10],AX;
JMP KNEC;
POSIT: PUSH AX;
KNEC: NOP; ʳ
, SP, D 1 D 2 , , 10 11 , . 0 , 0 FH, POP AX AL 0 AH, , 0 FH. г SUB BL, BH FBH. SF = 1, . JP, , JNS .
ʳ , () PF = 0, , JP, . . 10 00 H, 11 F0 H.
0 FH 0 AH, 05 , 012 F PUSH AX, .
0 0 , FCH , PF = 1 JP 0126 . , , 10 0 , 11 0 FH.
. 9.5...9.7 D 1 D 2. , .
, .
9.5 D 1 = 0 AH, D 2 = 0 FH
. | IP | AX | BX | SP | DS | SS | CS | PF | SF | ZF | CF | |
MOV AX,0 F 0 A | 0 F 0 A | FFEE | ||||||||||
PUSH AX | 010 | 0 F 0 A | FFEC | |||||||||
POP AX | 010 D | 0 F 0 A | FFEE | |||||||||
MOV BX,AX | 010 E | 0 F 0 A | 0 F 0 A | FFEE | ||||||||
SUB BL,BH | 0 F 0 A | 0 FFB | FFEE | |||||||||
JNS 0128 | 0 F 0 A | 0 FFB | FFEE | |||||||||
JP 011 F | 0 F 0 A | 0 FFB | FFEE | |||||||||
ADD AL,05 | 0 F 0 F | 0 FFB | FFEE | |||||||||
NOT AH | F 00 F | 0 FFB | FFEE | |||||||||
MOV [10], AX | 011 A | F 00 F | 0 FFB | FFEE | ||||||||
JMP 0129 | F 00 F | 0 FFB | FFEE | |||||||||
NOP | F 00 F | 0 FFB | FFEE |
9.6 D1 = 0FH, D2 = 0
. | IP | AX | BX | SP | DS | SS | CS | PF | SF | ZF | CF | |
MOV AX,0 0 F | 0 A 0 F | FFEE | ||||||||||
PUSH AX | 010 C | 0 A 0 F | FFEC | |||||||||
POP AX | 010 D | 0 A 0 F | FFEE | |||||||||
MOV BX,AX | 010 E | 0 A 0 F | 0 A 0 F | FFEE | ||||||||
SUB BL,BH | 0 A 0 F | 0 A 05 | FFEE | |||||||||
JNS 0129 | 0 A 0 F | 0 A 05 | FFEE | |||||||||
PUSH AX | 0 A 0 F | 0 A 05 | FFEC | |||||||||
NOP | 0 A 0 F | 0 A 05 | FFEC |
9.7 D 1 = 0 AH, D 2 = 0 EH
. | IP | AX | BX | SP | DS | SS | CS | PF | SF | ZF | CF | |
MOV AX,0 E 0 A | 0 E 0 A | FFEE | ||||||||||
PUSH AX | 010 C | 0E0 A | FFEC | |||||||||
POP AX | 010 D | 0 E 0 A | FFEE | |||||||||
MOV BX,AX | 010 E | 0 E 0 A | 0 E 0 A | FFEE | ||||||||
SUB BL,BH | 0 E 0 A | 0 EFC | FFEE | |||||||||
JNS 0128 | 0 E 0 A | 0 EFC | FFEE | |||||||||
JP 011 F | 0 E 0 A | 0 EFC | FFEE | |||||||||
ADD AL,02 | 011 F | 0 E 0 C | 0 EFC | FFEE | ||||||||
INC AH | 0F0 C | 0 EFC | FFEE | |||||||||
MOV [0010], AX | 0F0 C | 0 EFC | FFEE | |||||||||
JMP 0129 | 0 F 0 C | 0 EFC | FFEE | |||||||||
NOP | 0 F 0 C | 0 EFC | FFEE |
:
1 ?
2 , ?
3 , . 䒺 , . , 0012 H. , 7000:0014 . .
:
1 . ij , AL. 䒺 , . , 0012 H. , 7000:0016 . .
2 ,
7000:0120 CMP AL,BL
7000:0122 JZ 8000:0100
:
1 ?
2 , .
, , , , , , , . . , , . . . ( 80386 ). , . , . , . г . . - , , ().
9.4.9 RS -232- C , , . 1 3 FDH. :
MOV DX,3FDH;
M1: IN AL,DX;
AND AL,20H;
JZ M1; , D5 = 1?
NOP
9.4.10 RS -232- C , . 1 3 FDH. :
MOV DX,3FDH;
M1: IN AL,DX;
AND AL,01H;
;
JZ M1; D0 = 1
9.4.11 , 43 , , 0200, ES 7000 :
7000:0200 41 42 43 44.
˳ L, DI, AL. REPNZ.
MOV AX,7000H;
MOV ES,AX;
MOV CL,0004H;
MOV DI,0200H;
;
MOV AX,0043H; AL
STD;
CLD;
REPNZ;
SCASB;
, . ϳ 0001 , DI 0203 , , . ZF .
9.4.12 (N), N = 10 H , 20 H; (P) 䒺 (NEG) MP, 30 H, 䒺 MNEG, 40 H. DS ES .
. 9.14.
.
MOV CX,0010H;
MOV SI,0020H;
MOV DI,0030H;
;
MOV BX,0040H;
; 䒺
LD; SI DI
CYCLE: LODSB;
OR AL,AL;
JS NEG; ?
: STOSB; ,
JMP COUNT;
;
NEG: MOV [BX],AL; ,
INC BX; 䒺
;
COUNT: LOOP CYCLE;
NOP
9.14
9.4.13 N M(N), N = 10 H, , 7000:0020. 30 . . 9.15.
9.15
.
MOV AX,7000H; ,
MOV DS,AX; 7000:0000
MOV BX,0020;
MOV AX,0000H; (S = 0)
M1: ADD AX,[BX];
ADD BX,2;
;
CMP BX,0030H;
JNZ M1; +2? ,
;
MOV BX,0010H; BX
IDIV BX;
MOV [30H],AX;
NOP
, 30 H.
9.4.14 100 , 0,1 . , DELAY, , .
,
] [ , ; t ; t , ; t , . , . :
1) , NOP, ;
2) t .
DELAY :
CALL DELAY; 19
;
DELAY: MOV AL,X; 2 ,
;
;
TIME: DEC AL; 3
JNZ TIME; 8
NOP; 2
RET; 8
DELAY, , :
CALL DELAY; 19
DELAY: PUSH BX; 11
PUSHF; 10
MOV BL,X; 2 , BL
;
M1: DEC BL; 3
JNZ M1; 16
POP F; 8
POP BX; 8
RET; 8
t = (19+11+10+2+8+8+8)0,1 = 7,3 ;
t = (3+16)0,1 = 1,9 ;
t = 100 .
.
= 49 D t = 6,6 + 49 * 1,9 = 6,6 + 93,1 = 99,7 .
, 3 0,3 . OR BL, BL. :
DELAY: PUSH BX
PUSHF
MOV BL,31
M1: DEC BL
JNZ M1
OR BL,BL
POP F
POP BX
RET
, DELAY CALL DELAY .
:
1 ?
2 ?
3 ?
4 ?
5 N , , 7000: 0010 , . 0027 .
6 M(N) , , 7000: 0010 , . 0022 .
7 M(N) , , 7000:0010 , . 0030 .
8 (N) , , 7000:0010 , . 0026 .
:
1 N´N 0020 H. 7000:0010.
2 , CL 2?