__________
: ,
.
________________________________________________________________
, , ,
. , ,
, .
, ,
.
,
.
:
MOVS -
;
LODS - AL
AX;
STOS - AL AX ;
CMPS - ,
;
SCAS - AL AX .
REP .
________________________________________________________________
p . ,
""
"" .
, (
). , DI SI
:
MOVS DI,SI MOVSB MOVSW
LODS AL,SI AX,SI LODSB LODSW
STOS DI,AL DI,AX STOSB STOSW
CMPS SI,DI CMPSB CMPSW
SCAS DI,AL DI,AX SCASB SCASW
, MOVS,
MOVSB MOVSW. , p DI SI
, (
LEA). SI
- DS:SI. DI
- ES:DI. , MOVS, STOS, CMPS
SCAS ES ( DS).
REP:
________________________________________________________________
,
, REP
. ,
, REP MOVSB. REP
CX.
|
|
REP 1 CX .
, .
:
- CLD
DF 0;
- STD
DF 1.
20 STRING1
STRING2. , DS ES
:
STRING1 DB 20 DUP('*')
STRING2 DB 20 DUP(' ')
...
CLD; DF
MOV CX,20; 20
LEA DI,STRING2; ""
LEA SI,STRING1; ""
REP MOVSB;
CMPS SCAS
,
. REP
:
REP - , CX 0;
REPZ REPE - , ZF "
". ZF,
CX 0;
REPNE REPNZ - , ZF "
". ZF,
" " CX 0.
8086, 80286 80386, o
, , ,
.
MOVS:
________________________________________________________________
.7.5
.
. MOVS REP CX
.
, , ,
p ES, DI ,
. DS, SI
. ,
MOVS ES DS,
DI SI.
DF MOV S
1 ( ) 2 ( )
DI SI.
, REP MOVSB:
JCXZ LABEL2
LABEL1: MOV AL,[SI]
MOV [DI],AL
INC/DEC DI;
UNC/DEC SI;
LOOP LABEL1
LABEL2:...
.11.1 C10MVSB MOVSB
NAME1 NAME2.
CLD 0
. DF
CLD .
__________
page 60,132
TITLE STRING (EXE)
|
|
; ---------------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP(?)
STACKG ENDS
; ---------------------------------------------------
DATASG SEGMENT PARA 'Data'
NAME1 DB 'Assemblers';
NAME2 DB 10 DUP(' ')
NAME3 DB 10 DUP(' ')
DATASG ENDS
; ---------------------------------------------------
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR;
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATASG
MOV DS,AX
MOV ES,AX
CALL C10MVSB; MVSB
CALL D10MVSW; LODS
CALL E10LODS; LODS
CALL F10STOS; CMPS
CALL H10SCAS; SCAS
RET
BEGIN ENDP
; MOVSB:
; -------------------
C10MVSB PROC NEAR
CLD
LEA SI,NAME1
LEA D1,NAME2
MOV CX,10; 10
REP MOVSB; NAME1 NAME2
RET
C10MVSB ENDP
; MOVSW:
; -------------------
D10MVSW PROC NEAR
CLD
LEA SI,NAME2
LEA DI,NAME3
MOV CX,05; 5
REP MOVSW; NAME2 NAME3
RET
D10MVSW ENDP
; LODSW:
; -------------------
E10LODS PROC NEAR
CLD
LEA SI,NAME1;
LODSW; NAME1 AX
RET
E10LODS ENDP
; STOSW:
; -------------------
F10STOS PROC NEAR
CLD
LEA D1,NAME3
MOV CX,05
MOV AX,2020H;
REP STOSW; NAME3
RET
F10STOS ENDP
; CMPSB:
; -------------------
G10CMPS PROC NEAR
CLD
MOV CX,10
LEA SI,NAME1
LEA DI,NAME2
REPE CMPSB; NAME1 NAME2
JNE G20; ?
MOV BH,01
G20: MOV CX,10
LEA SI,NAME2
LEA DI,NAME3
REPE CMPSB; NAME2 NAME3
JE G30; ,
MOV BL,02
G30: RET
G10CMPS ENDP
; SCASB:
; -------------------
H10SCAS PROC NEAR
CLD
MOV CX,10
LEA DI,NAME1
MOV AL,'m'; 'm'
REPNE SCASB; NAME1
JNE H20; -
MOV AH,03
H20: RET
H10SCAS ENDP
CODES ENDS
END BEGIN
__________
.11.1. .
LEA SI DI
NAME1 NAME2 . DS ES
DATASG, NAME1 NAME2
ES:DI DS:SI. (COM
ES DS). MOV CX
10 - NAME1 NAME2. REP MOVSB
:
- NAME1 (
p ES:DI) NAME2 (
DS:SI).
- 1 DI SI
.
- CX 1.
- ( 10 ),
CX .
DF , MOVSB
DI SI,
, .. NAME1+1 NAME2+1 .. DF
1, MOVSB DI SI,
. SI DI
, .. NAME1+9
NAME2+9 .
D10MVSW (.11.1) MOVSW,
. MOVSW
DS SI 2,
. SI
NAME1+8, DI - NAME2+8.
LODS:
________________________________________________________________
LODS AL
AX . DS:SI.
|
|
DF SI.
LODS ,
REP . MOV
LODS, MOV ,
LODS - , SI.
LODS ,
( ),
.
, LODSB:
MOV AL,[SI]
INC SI
.11.1 E10LODS
LODSW. :
NAME1 ( As) AL, -
AH. AX sA.
STOS:
________________________________________________________________
STOS () AL AX
.
ES:DI. DF STOS
DI 1 2 .
STOS REP -
, ,
. ( c) AX.
, REP STOSB:
JCXZ LABEL2
LABEL1: MOV [DI],AL
INC/DEC DI;
LOOP LABEL1
LABEL2:...
.11.1 F10STOS
STOSW. . 2020 ()
NAME3, AL ,
AH - . DI
NAME3+10.
CMPS:
________________________________________________________________
CMPS (
DS:SI) ( ES:DI).
DF CMPS
SI DI 1 2 . CMPS
AF, CF, OF, PF, SF ZF.
REP CX . CMPS
.
, JEAN
JOAN. :
J: J
E: O (E O)
A: A
N: N
N:N -
p/. " ", ,
" ". REP
REPE, ,
, CX p .
:
REPE CMPSB
.11.1 G10CMPS
CMPSB.
NAME1 NAME2. MOVSB NAME1
NAME2, CMPSB
p/: SF 0
() ZF - 1().
|
|
NAME2 NAME3.
STOSW NAME3 , CMPB
"/": SF
0 () ZF - 0 ( ).
"/" 01
BH. ""
02 BL. DEBUG
, G10CMPS BX
0102.
! CMPSB
. CMPSW
, p CX
5. , CMPSW
. , SAMUEL ARNOLD
CMPSW SA AR , .. AS RA.
"" "", ..
. CMPSW
, , DW, DD
DQ.
SCAS:
________________________________________________________________
SCAS CMPS ,
() .
SCAS ( p ES:DI)
AL AX. DF
SCAS DI 1
2 . SCAS AF, CF, OF, PF, SF
ZF. REP CX
SCAS .
SCAS , , ,
, :
, .
.11.1 H10SCAS NAME1
"m". SCASB ,
- " " CX ,
REPNE:
REPNE SCASB
NAME1 "Assemblers", SCASB
"m" . DEBUG
H10SCAS
AH 03 , "m" . REP
SCASB CX 10 06.
SCASW
AX. LODSW MOV
AX, , AL,
- AH. SCAS
, o .
________________________________________________________________
, ,
.
c
STRING (&) .
SCASB & ( STRING+8),
DI a
STRING+9. &
DI .
STRLEN EQU 15; STRING
STRING DB 'The time&is now'
...
CLD
MOV AL,'&';
MOV CX,STRLEN; STRING
LEA DI,STRING; STRING
REPNE SCASB;
JNZ K20; ?
DEC DI; -
MOV BYTE PTR[DI],20H;
K20: RET
________________________________________________________________
MOVSB MOVSW
. MOVS
. , FLDA FLDB (DB),
|
|
REP MOVS FLDA,FLDB
FLDB FLDA.
:
REP MOVS ES:BYTE PTR[DI],DS:[SI]
DI SI FLDA FLDB o
.
________________________________________________________________
STOS
o . ,
, MOVS
. ,
:
***---***---***---***---***---...
, ,
.
:
PATTERN DB '***---'
DISAREA DB 42 DUP(?)
.
.
CLD
MOV CX,21
LEA DI,DISAREA
LEA SI,PATTERN
REP MOVSW
MOVSW (**)
PATTERN DISAREA, -
(*-), (--):
***---***---
| |
PATTERN DISAREA
DI DISAREA+6, p SI -
PATTERN+6, DISAREA. MOVSW
, DISAREA
DISAREA+6, DISAREA+2, DISAREA+8, DISAREA+4 DISAREA+10 ..
DISAREA:
***---***---***---***---***---... ***---
| | | |
PATTERN DISAREA+6 DISAREA+12 DISAREA+42
.
.
:
________________________________________________________________
COM-, .11.2,
, .
:
B10INPT - 30 , .
D10SCAS - SCASB
, "".
E10RGHT - MOVSB
.
ACTNLEN
, :
JEROME KERN
OSCAR HAMMERSTEIN
RICHARD ROGERS
F10CLNM - STOSW .
__________
page 60,132
TITLE EXRING (COM) ,
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H
BEGIN: JMP SHORT MAIN
;--------------------------------------------------------
NAMEPAR LABEL BYTE;
MAXNLEN DB 31;.
ACTNLEN DB?;
NAMEFLD DB 31 DUP(' ');
PROMPT DB 'Name?', '$'
NAMEDSP DB 31 DUP(' '), 13, 10, '$'
ROW DB 00
;--------------------------------------------------------
MAIN PROC NEAR;
MOV AX,0600H
CALL Q10SCR;
SUB DX,DX; 00,00
CALL Q20CURS
A10LOOP:
CALL B10INPT;
TEST ACTNLEN,0FFH; ? (.. )
JZ A90; -
CALL D10SCAS;
CMP AL,'*';?
JE A10LOOP; -
CALL E10RGHT;
CALL A10LOOP
A90: RET
MAIN ENDP
; :
; -----------------------------
B10INPT PROC
MOV AH,09
LEA DX,PROMPT;
INT 21H
RET
B10INPT ENDP
; :
; -----------------------
D10SCAS PROC
CLD
MOV AL,'*'
MOV CX,30; - 30
LEA DI,NAMEFLD
REPNE SCASB; ?
JE D20; - ,
MOV AL,20H; * AL
D20: RET
D10SCAS ENDP
; :
; ------------------------------------
E10RGHT PROC
STD
SUB CH,CH
MOV CL,ACTNLEN; CX REP
LEA SI,NAMEFLD;
ADD SI,CX;
DEC SI;
LEA DI,NAMEDSP+30; .
REP MOVSB;
MOV DH,ROW
MOV DL,48
CALL Q20CURS;
MOV AH,09
LEA DX,NAMEDSP;
INT 21H
CMP ROW,20; ?
JAE E20; -
INC ROW; ,
JMP E90
E20:
MOV AX,0601H; -
CALL Q10SCR;
MOV DH,ROW;
MOV DL,00
CALL Q20CURS
E90: RET
E10RGHT ENDP
; :
; ----------------------
F10CLNM PROC
CLD
MOV AX,2020H
MOV CX,15; 15
LEA DI,NAMEDSP
REP STOSW
RET
F10CLNM ENDP
; :
; ----------------
Q10SCR PROC;AX
MOV BH,30; (07 /)
MOV CX,00
MOV DX,184FH
INT 10H
RET
Q10SCR ENDP
; (/):
; ----------------------------------
Q20CURS PROC;DX
MOV AH,02
SUB BH,BH
INT 10H
RET
Q20CURS ENDP
CODESG ENDS
END BEGIN
__________
.11.2. .
________________________________________________________________
- MOVS, STOS, CMPS SCAS
ES.
- (CLD) (STD)
.
- DI SI
. , MOVS DI,SI,
CMPS - SI,DI.
- CX
, .
- REP MOVS
STOS (REPE REPNE) CMPS SCAS.
- c
CMPSW SCASW.
-
. , , NAME1
10 ,
, LEA, NAME1+9.
- NAME1+8.
________________________________________________________________
11.1. ) MOVSB, )
LODSB ) STOSB REP.
) MOVSW, ) LODSW ) STOSW REP.
11.2. , ,
.11.1. ES.
MOVSB MOVSW .
H10SCAS NAME1 "mb".
DEBUG ,
.
11.3. :
DATASG SEGMENT PARA
CONAME DB 'SPACE EXPLORERS INC.'
PRLINE DB 20 DUP(' ')
, :
) CONAME PRLINE ;
) CONAME PRLINE ;
) CONAME AX;
) AX PRLINE+5;
) CONAME PRLINE (
);
) CONAME PRLINE,
. , BH.
11.4. H10SCAS (.11.1) ,
NAME1 "er". ,
"er" NAME1 : /As/se/mb/le/rs/.
:
) SCASW ,
NAME1, - NAME1+1;
) SCASB ""
"r".
11.5. , . 03, 04, 05 B4.
20 .