XCHG , . :
XCHG AL, SEMA; AL
XCHG CX,[BP]; CX
XCHG AH,DL; -
XCHG AX,CX; -
XCHG .
XLAT AL 256 , BX (. ).
XLAT :
a) AL BX;
) ( DS) AL.
XLAT . XLAT . XLAT ASCII EBCDIC.
0 9 ASCII EBCDIC. ASCII 30...39, EBCDIC - F0...F9. XLAT . XLAT BX, (: ASCNO)- AL.
:
MOV bx, offset XLTBL
MOV AL,ASCNO
XLAT
XLAT AL , .. BX AL. , , AL 32h, XLTBL+50. 0F2h (2 EBCDIC), XLAT AL.
XLAT.
ASCNO ( ASCII) XLTAB. EBCNO.
Assume cs:preob, ds:tabl | ||
tabl segment | ||
ascno db 33h, 35h, 32h, 35h, 37h, 33h | ||
xltab db 0f0h, 0f1h, 0f2h, 0f3h, 0f4h | ||
db 0f5h, 0f6h, 0f7h, 0f8h, 0f9h | ||
ebcno db 6 dup(?) | ||
tabl ends | ||
Preob segment | ||
start: | ||
mov ax, tabl | ; ds | |
mov ds, ax | ||
mov di, offset ebcno | ; di | |
mov si, offset ascno | ; | |
mov bx,offset xltab | ; , , bx | |
mov cx, 6 | ; A20: | |
mov al, [si]; al | ||
sub al,30h | ; ascii | |
xlat | ; al ebcdic | |
mov [di], al | ; | |
inc di | ; | |
inc si | ; | |
loop a20 | ; cx <>0, 20 | |
ret | ||
Preob ends | ||
End start |
|
|
1.
, :
1. : 2516h, 630h, 1841h, 3345h, 123h;
2. '';
3. '$'.
:
1. DS;
2. (1) , ;
3. (3), 10h, (3). , .2.
4. SI (2), BX - (3), ;
5. , SI ( ), (3) , (2).
6. , . . .
2.
, :
1. : 2499h, 2106h, 333h, 1821h, 3CB6h;
2. '';
3. '$'.
:
1. DS;
2. (1) , ;
3. (3), (3).
, .2.
4. DI (2), BX - (3), ;
5. , SI ( ), (3) , (2).
6. , . . .
3.
, :
1. : 1389h, 2145h, 326h, 2821h, 2265h;
2. '';
3. '$'.
:
|
|
1. DS;
2. (1) , ;
3. (3), 2 (3).
3 , .2.
4. DI (2), BX - (3), ;
5. , SI ( ), (3) , (2).
6. , . . .
4.
, :
1. : 4516h, 2221h, A212h, 1C10h, 6115;
2. '';
3. '$'.
:
1. DS;
2. (1) , (3);
3. (1) , 11 (3), (3).
4. SI (2), BX - (3), ;
5. , SI ( ), (3) , (2).
6. , . . .
5.
, :
1. : 4576h, 27F0h, 3FF1h, 77F1h, 3713;
2. '';
3. '$'.
:
1. DS;
2. (1) , (3), , 4D (3);
3. (1) , (3),.
4. SI (2), BX - (3), ;
5. , SI ( ), (3) , (2).
6. , . . .
6.
, :
1. : 1F5h, A781h, CF84h, C0A4h, A483h
2. ''
3. '$'.
:
|
|
1. DS;
2. (1) , (3);
3. (1) , 2h (3), 95 (3).
4. SI (2), BX - (3), ;
5. , SI ( ), (3) , (2).
6. , . . .
7.
, :
1. : 324Ah, 765Eh, AEF1h, 45CDh, 8685h;
2. '';
3. '$'.
:
1. DS;
2. (1) ;
3. 71h (3), 41h, (3). (3).
4. SI (2), BX - (3), ;
5. , SI ( ), (3) , (2).
6. , . . .
8.
, :
1. : 45h, 16h, 22h, 21h, 3Ch, F1h;
2. : 33h, 44F4h;
3. '';
4. '$'.
:
1. DS;
2. (2) (1), 50h (4);
3. (1) (2), 32h (4), 56h (4).
4. SI (3), BX - (4), ;
5. , SI ( ), (3) , (2).
6. , . . .
|
|
9.
, :
1. : 1245h, FAC1h, 12C1h, 45C6h;
2. 35h, 33h, F4h
3. '';
4. '$'.
:
1. DS;
2. (1), (4), 23h (4);
3. (2) .2 (2), (4).
4. SI (3), BX - (4), ;
5. , SI ( ), (3) , (2).
6. , . . .
10.
, :
1. : 1245h, FAC1h, 12C1h, 45C6h;
2. 27h, 80h, ABh
3. '';
4. '$'.
:
1. DS;
2. (1). (2), (4), 53h (4);
3. (2) .2 (2), (4).
4. SI (3), BX - (4), ;
5. , SI ( ), (3) , (2).
6. , . . .
11.
, :
1. : 245Fh, 7AC1h, 128Ch, 445Ch;
2. 2Ch, 90h, 61h
3. '';
4. '$'.
:
1. DS;
2. (1) . (2), (4), 30h (4);
3. (2) .2 (2), (4).
4. SI (3), BX - (4), ;
5. , SI ( ), (3) , (2).
6. , . . .
12.
, :
1. : 245Fh, 7AC1h, 128Ch, 445Ch, 2233h;
2. 2Ch, 10h, 61h;
3. '';
4. '$'.
:
1. DS;
|
|
2. (1) . 61h, (4), (2) (4);
4. (4) ( AL) (4);
5. , SI ( ), (3) , (2).
6. , SI ( ), (4) , - (3).
7. , . . .
. '$'. 21h, AH - 9h, DX , :
MOV DX, OFFSET T1
MOV AH, 09h
INT 21h
5
MUL. :
: AL, . . , .
. , 1- 3- . , , :
Data segment | ||
A DB 0fah, 07h, 0ach | ||
B dw? | ||
Data ends | ||
Code segment | ||
... | ||
Mov al, A | ; AL | |
Mul A+2 | ; | |
Mov B, ax | ; | |
... |
: A, . , : D, .
. , :
Data segment | ||
A DW 0f3a7h, 20e7h, 0a4ech | ||
B dw?,? | ||
Data ends | ||
Code segment | ||
... | ||
Mov ax, a | ||
Mul a+2 | ; DX: | |
Mov b, dx | ; | |
Mov b+2, ax | ; | |
... |
DIV, :
: A, . , L.
. .
:
Data segment | ||
AC DW 0ecdah, 0CB78h | ||
CC DB 0d7h, 0cdh | ||
C1 dw?,? | ||
C2 db?,? | ||
Data ends | ||
Code segment | ||
Mov ax, ac | ; | |
Div cc+1 | ||
Mov c2, ah | ; | |
Mov c2+1, al | ; : MOV C1, A |
: DX:A, . DX, X.
. . , :
Mov dx, ac | ; DX |
Mov a, ac+2 | ; X |
Mov bh, cc | ; |
Mov bl, cc+1 | ; |
Div bx | ; |
Mov c1, dx | ; |
Mov c1+2, ax | ; |
1
, : X1=681h, X2=356h, X3=FE32h, X4=A33h, X5=D310h X6=C12Ah. (X1 + X2 + X3)/ X6. , . . .
2
, : Bh, CDh, EFh, 4Ah, CFh, 56h. , . 54h. , . , .
3
, : Fh, 3Dh, 8Ah, 5Dh, FCh, EAh, EEh. , . , . . .
4
, : FDh, FFh, A3h, 3Fh, F2h : 366h, 5134h. , . , , .
5
, : C3h, F3h, 5Fh, 66h, E4h : 534h, 6FC1h, D1E2h. , . . , .
6
, A031h, 8FFAh, 5FD3h, 4FAFh FAh, CDh. , , , . .
7
, : FACDh, FE37h : 5Ah, 6Fh, AAh, BCh, CDh. , , . . , . .
8
, FCC1h, CF11h FCh, FFh, 88h. . . . . .
9
, : E010h, 1E4Ah, 2BC7h, B781h : AAh, ABh, ACh. . . , . .
10
, : F11Fh, A332h, 2878h : ADh, DDh, CDh, 1Dh. . . , . .
11
, : 1Dh, D7h, ECh, C7h, ACh 87FEh, 7FA8h. . . , . .
12
, : AABBh, BC1Dh, EC2Ch, 146Dh DFh, 7Fh, 8Ah. , . , , .
6
, IRET. ( IP, CS). - IP . - NEAR. . IP CS, , , . - FAR.
. . .
GOTO <>.
:
JMP <> - , 16 IP ( IP , JMP);
JMP <> - 4 ;
JMP mem/reg - .
, , , , , . , . , , - . , . :
;
;
.
, , . , h 43h. , . .
/ | ||||
JE / JZ | / | Z | ||
JNE / JNZ | / | Z | ||
JA / JNBE | / | Z, C | ||
JAE / JNB | / | C | ||
JB / JNAE | / | C | ||
JBE / JNA | / | C, A | ||
JE / JZ | / | Z | ||
JNE / JNZ | / | Z | ||
JG / JNLE | / | Z, S, O | ||
JGE / JNL | / | S, O | ||
JL / JNGE | / | S, O | ||
JLE / JNG | / | Z, S, O | ||
JS | () | S | ||
JNS | () | S | ||
JC | C | |||
JNC | C | |||
JO | O | |||
JNO | O | |||
JP / JPE | P | |||
JNP / JPO | P | |||
, JCXZ, CX, , , .
CALL . . , RET . . . ( NEAR), - ( FAR). IP, IP CS. :
CALL Subr
CALL AX
CALL [BX][SI].
:
LOOP <>
LOOPE / LOOPZ <>
LOOPNE / LOOPNZ <>
. LOOP ( ), , , ¹0 - , .
LOOPE LOOPZ , , , (¹0) Z=1. . LOOPNE LOOPNZ , : (¹0) Z=0.
. 10 . , 9. , 5. :
name cikl | ||
assume cs:cod, ds:data | ||
data segment | ||
aa db 9h, 8h, 3h, 6h, 5h, 2h, 3h, 7h, 1h, 5h | ||
data ends | ||
cod segment | ||
start proc far | ||
push ds | ||
mov ax,0 | ||
push ax | ||
mov ax, data | ||
mov ds,ax | ||
lea bx,aa | ; | |
mov ah,0eh | ; | |
mov cx,10 | ; | |
l1: | mov al,[bx] | ; AL |
cmp al,5 | ; 5 | |
jbe l2 | ; - , | |
add al,30h | ; ASCII | |
int 10h | ; , | |
mov al,20h | ; | |
int 10h | ; | |
l2: | inc bx | ; |
loop l1 | ; , | |
ret | ||
start endp | ||
cod ends | ||
end start |
INT 10h. : AH, AL. AH 0h ( ), AL , .
ASCII 0...9 30h...39h , , , ASCII. , . , , . :
SHL < >, < >.
. 4 AX DX. , AX:
MOV DX, 0
MOV CL, 4
C2: SHL DX, 1
SHL AX, 1
ADC DX,0
DEC CL
JNZ C2
DX AX.
. 200 , .
. | ||
Mov cx, 200 | ; | |
Lea bx, t | ; ( ) | |
Mov ax, 0 | ||
l2: | Cmp [bx], ax | ; 0 |
Jz l1 | ;, | |
Inc bx | ; 1 | |
Dec cx | ; 1 | |
Jnz l2 | ; L2, 0 | |
l1: | Mov ta, bx | ; |
. |
1
: F501h, 3196h, 5737h, AA88h, CEDh, FA88h. 4000h . 10h 0h.
2
: 3845h, 4367h, 3157h, F501h, 3F96h, 8737h, EAA8h. 3500h . 10h 0h.
3
: 38h, 45h, F4h, 36h, A7h, CFh, 51h, 3Fh, 96h. 43h . 10h 0h.
4
: FAh, E8h, 77h, F4h, 96h, CFh, 57h, 8Fh, 9Ah. 67h . 10h 0h.
5
: F345h, 4967h, 3156h, F501h, 3F96h, 8737h, EAA8h. 7888h . 10h 0h.
6
: FA45h, A667h, 3156h, F501h, 3F96h, 8967h, ECA8h, 76CDh. 0000h . 10h 0h.
7
: 9694h, 7389h, F481h, 7314h, 2224h, 124h. , 7FF1h . 10h 0h.
8
: 3147h, 5364h, 8102h, AF39h, B786h, A134h. , 6781h . 10h 0h.
9
: 7131h, 7AFFh, 9345h, 7FA1h, 6AD3h, 2784h, 2DACh, 5A36h, FF45h. , 6127h . 10h 0h.
10
: FA35h, AA12h, 8FCDh, 2534h, 5781h, 73A6h, FF47h. , 37AFh . 10h 0h.
11
: CDh, FCh, FAh, 97h, 38h, F4h, 36h, A7h, CFh, 51h. , ADh . 10h 0h.
12
: 5Fh, 4Ah, 31h, 89h, 7Dh, 91h, CDh, FCh, FAh, 97h, 38h. , 8Ah . 10h 0h.
7
( ) . , CALL. , . . , CALL, . , RET. .
PROC ENDP. PROC , ENDP - . :
<> PROC <>
...
...
<> ENDP
. , . NEAR FAR ( NEAR). PROC/ENDP , . CALL RET.
. , 15h. :
name procedur | ||
assume cs:cod, ds:data | ||
data segment | ||
aa db 9h,8h,3h,6h,5h,2h,3h,7h,1h,5h | ||
data ends | ||
cod segment | ||
start proc far | ||
push ds | ||
mov ax,0 | ||
push ax | ||
mov ax, data | ; | |
mov ds,ax | ; | |
lea bx,aa | ; BX | |
mov ah,0eh | ; AH | |
mov cx,10 | ; | |
l1: | mov al,[bx] | ; AL |
add al,15h | ; 15h | |
call sym | ; | |
l2: | inc bx | ; |
mov al,20h | ; AL | |
int 10h | ; | |
loop l1 | ||
ret | ||
start endp | ||
sym proc | ||
push cx | ; | |
mov dl,al | ; DL | |
mov cl,2 | ; | |
p4: | mov dh,0 | ; , |
mov ch,4 | ; | |
p1: | shl dh,1 | ; |
shl dl,1 | ; C | |
adc dh,0 | ; C ( ) DH | |
dec ch | ; | |
jnz p1 | ; 0 - | |
mov al,dh | ; AL | |
cmp al,9 | ; - , - | |
ja p2 | ; , - | |
add al,30h | ; (ASCII ) | |
jmp p3 | ||
p2: | add al,37h | ; . |
p3: | int 10h | ; |
loop p4 | ||
pop cx | ||
ret | ||
sym endp | ||
cod ends | ||
end start |
, ASCII SYM. .
, , . . - . AX. AH - , AL - . , . . FAR. , , .
push ds;
mov ax,0;
push ax; PSP
ASCII 0...9 30h...39h , ah, bh,...fh 41h,...,46h, , , ASCII. .
1
: F501h, 3196h, 5737h, AA88h, CEDh, FA88h. 4000h . .
2
: 3245h, 4E1Ah, 315Ah, F501h, 3F96h, 8737h, EAA8h. 3500h . .
3
: 38h, F5h, F4h, 36h, A7h, CFh, 51h, 3Fh, 96h. 13h . .
4
: FAh, E8h, 7Ah, F4h, 96h, CFh, 51h, 3Fh, 9Ah. 67h . .
5
: 734Eh, 4E67h, 3156h, F501h, 3F96h, 8737h, EAA8h. 8888h . .
6
: F345h, A6C7h, 3156h, F501h, 3F96h, 8737h, EAA8h. , E600h, . .
7
: 7FFFh, 7AC9h, F481h, 7314h, 2224h, 124h. , 7FF1h . .
8
: 3147h, 5364h, 71DEh, AF39h, B786h, A134h. , 6781h . .
9
: 4131h, 7AFFh, 9345h, 7FA1h, 6AD3h, 2784h, 2DACh, 5A36h, FF45h. , 6127h . .
10
: FA35h, AA12h, 8FCDh, 2A3Eh, 5781h, 73A6h, FF47h. , 37AFh . .
11
: CDh, FCh, FAh, 9Eh, 3Eh, F4h, 36h, A7h, CFh, 51h. , ADh . .
12
: 5Fh, 4Ah, 31h, 89h, 7Dh, 91h, CDh, FCh, FAh, 97h, 38h. , 8Ah . .
.8
NOT (), AND (), OR (), XOR ( ) TEST, , ( ). , .
:
AND OR XOR TEST | mem/reg, mem/reg mem/reg, mem/reg mem/reg, mem/reg mem/reg, mem/reg | AND OR XOR TEST | mem/reg, data mem/reg, data mem/reg, data mem/reg, data | AND OR XOR TEST | ac, data ac, data ac, data ac, data |
NOT mem/reg
. , . : 1) ; 2) ACh; 3) ; 4) ( - ). :
assume cs:cod, ds:data | ||
data segment | ||
aa db 40 dup(?) | ||
data ends | ||
cod segment | ||
start proc far | ||
assume cs:cod, ds:data | ||
data segment | ||
aa db 40 dup(?) | ||
data ends | ||
cod segment | ||
start proc far | ||
push ds | ||
mov ax,0 | ||
push ax | ||
mov ax, data | ; | |
mov ds,ax | ; | |
lea bx,aa | ; | |
mov cx,10 | ; | |
l1: | mov ah,0 | ; |
int 16h | ; | |
mov dl,al | ; DL | |
not al | ; | |
mov [bx],al | ; | |
mov al,dl | ; DL | |
and al,0ach | ; | |
mov 1[bx],al | ; | |
mov al,dl | ; DL | |
xor a,10100B | ; 3- | |
mov 2[bx],al | ; 3- | |
mov al,dl | ; DL | |
cmp cx,10 | ; : , , - | |
je l2 | ||
or al,dh | ||
l2: | mov 3[bx],al | ; 4- |
mov dh,dl | ; DH ; | |
add bx,4 | ||
loop l1 |
INT 16h, . 0, , -. AL . :
MOV AH,0
INT 16h.
. 3.10, count - , . 1 ( ) CL. , - CL. , , ( ). () . . C . C O. S, Z P .
RCL, RCR, ROL, ROR - . RCL RCR .
SHL SHR - . , . SAL SAR . , , , . .
. 32 , .