.


:




:

































 

 

 

 


11




__________

 

: ,

.

 

 

________________________________________________________________

 

, , ,

. , ,

, .

, ,

.

,

.

:

 

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 .

 





:


: 2015-10-01; !; : 490 |


:

:

: , .
==> ...

2030 - | 1658 -


© 2015-2024 lektsii.org - -

: 0.42 .