Пересылать строку двойных слов
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

ES:[DI]:=DS:[SI]

IF DF:= 0, то

 [(E)SI]:= [(E)SI+ 4]

[(E)DI] :=[(E)DI+ 4]

IF DF:= 1, то  

[(E)DI]:= [(E)DI- 4]

 [(E)SI]:= [(E)SI- 4]

--

--

--

--

--

--

--

--

--

CLD; Установить DF = 0.

Lea SI , tabist; Адрес источника в SI,

Lea DI , ES : tabpr; а приемника в DI.

Mov CX ,100; Кол. Элементов в СХ.

Rep Movs tabpr,tabist; Переслать 100

                                двойных слов.

                                       

 

Продолжение таблицы 3.6

Операции со строками символов

 

Мнемокод

Описание команд

Флаги, пояснения, примеры

OF DF IF TF SF ZF AF PF

CF

LODS ист.

Чтение из строки.

AL, (AX),(EAX) :=

DS:[ (E)SI]

IF DF = 0,  то

[(E)SI] := [(E)SI +  1,(2),(4)]

IF DF =1, то

 [(E)SI] :=  [(E)SI - 1,(2),(4)]

-- * -- -- -- -- -- --

--

Lea SI,tab1; Смещение tab1 в SI, а

Lea DI,ES:tab2; смещение tab2 в DI.

Mov CX,200; Счетчик элементов.

Repe Cmps tab 1, tab 2; Искать   

                                   совпадающие.

Je met 1;Совпали? Переход на met1.

Met 1: Dec SI; Подправим регистр SI.

Lods tab1; Элемент в AL,(AX),(EAX).

LODSB

 

Чтение байта из строки.

AL:=  DS: [(E)SI ]

IF DF= 0, то

[(E)SI]:= [(E)SI+1]

IF DF= 1. то

[(E)SI]:= [(E)SI-1]

-- * -- -- -- -- -- --

--

Lea SI,tab1; Смещение tab1 в SI, а

Lea DI,ES:tab2; смещение tab2 в DI.

Mov CX,200; Счетчик элементов.

Repe Cmpsb; Искать совпадающие.

Je met 1; Совпали? Переход на met1.

Met 1: Dec SI; Подправим регистр SI.

       Lodsb; Элемент в AL.

LODSW

 

Чтение слова из строки.

AX:= [ DS: (E)SI ]

IF DF= 0. то

[(E)SI]:= [(E)SI+2]

IF DF= 1. то

[(E)SI]:= [(E)SI-2]

-- * -- -- -- -- -- --

--

Lea SI,tab1; Смещение tab1 в SI,                 

Lea DI,ES:tab2; а смещение tab2 в DI.

Mov CX ,200; В СХ элементов.

Repe Cmpsw; Искать совпадающие.

Je met 1;Совпали? Переход на met1.

met1: Mov SI,SI-2; Коррекция SI.

      Lodsw;   Элемент в AX.

 

 

LODSD

 

Чтение двойного слова из строки.

 

EAX:= [ DS: (E)SI ]

IF DF= 0, то

[(E)SI]:= [(E)SI+4]

IF DF= 1, то

[(E)SI]:= [(E)SI-4]

-- * -- -- -- -- -- --

--

Lea SI,tab1;Смещение tab1 в SI, а

Lea DI,ES:tab2; смещение tab2 в DI.

Mov CX,200; Счетчик элементов.

Repe Cmpsd; Искать совпадающие.

Je met 1; Совпали? Переход на met1.

met1: Mov SI,SI-4; Подправим SI.

  Lodsd; Элемент в EAX.

 

                       

 

Продолжение таблицы 3.6

Мнемокод

Описание команд

Флаги, пояснения, примеры

OF

DF

IF

TF

SF

ZF

AF

PF

CF

STOS пр

 

Запись в строку.

ES:[(E)DI] := AL; (AX); (EAX)

IF DF = 0, то

(E)DI := (E)DI+1(2)(4)

IF DF =1, то

(E)DI:=(E)DI-1(2)(4)

 

--

*

--

--

--

--

--

--

--

Lea DI , ES : tab; Адрес строки в DI.

Mov AX ,0101Н; Число в АХ.

Mov CX ,10; Установить счетчик.

REP STOS tab;Записать в tab 10 слов.

Mov CX ,10; Установить счетчик. 

Mov AX ,1256; Число в АХ.

REP STOS tab;Записать в tab 10 слов.

STOSB

 

Запись байта в строку

 ЕS: [(E)DI]:= AL

IF DF= 0. то

[(E)DI]:= [(E)DI+ 1]

IF DF= 1

[(E)DI]:= [(E)DI- 1]

--

*

--

--

--

--

--

--

--

Lea DI , ES : tab; Адрес строки в DI.

Mov AL ,01Н; Число в АL.

Mov CX ,10; Установить счетчик.

REP STOSB tab; Записать в tab 10  

                         байт.

STOSW

Запись слова в строку.

ES: [(E)DI]:= AX  

IF DF= 0, то 

[(E)DI]:= [(E)SI+ 2]

IF DF= 1, то

[(E)DI]:= [(E)DI- 2]

--

*

--

--

--

--

--

--

--

Lea DI,ES:tab; Адрес строки в DI.

Mov AX,0125 Н; Число в АX.

Mov CX,10; Установить счетчик.

REP STOSW; Записать в tab 10 слов.

STOSD

 

Запись двойного слова в строку.

ES: (E)DI := EAX

IF DF= 0, то

[(E)DI]:= [(E)DI+ 4]

IF DF= 1, то

[(E)DI]:= [(E)DI- 4]

--

*

--

--

--

--

--

--

--

Lea DI , ES : tab; Адрес строки в DI.

Mov EAX ,012567Н; Число в EАX.

Mov CX ,10; Установить счетчик.

REP STOSD; Записать в таблицу tab

                  10 двойных слов.

SCAS пр.

Сканировать строки. Сравнивает элементы массива.

AL(AX)(EAX) -ES:(E)DI, IF DF = 0

 (E)DI:= (E)DI+1(2)(4)

IF DF =1

(E)DI:=(E)DI-1(2)(4)

*

*

--

*

*

*

*

*

*

Lea DI , ES : tab; Адрес строки в DI.

Mov AX ,0125Н; Искомое число в АX.

Mov CX ,100; Установить счетчик.

REPNE SCAS tab ;Сравнивать пока не найдем в tab число равное 0125Н.

 

                                                                           

Продолжение таблицы 3.6

Мнемокод

Описание команд

Флаги, пояснения, примеры

OF

DF

IF

TF

SF

ZF

AF

PF

CF

SCASB

Сканировать строку байтов.

Результат сравнения в регистре флагов.

AL - ES: (E)DI

IF DF= 0

(E)DI:= (E)DI+ 1

IF DF= 1

(E)DI:= (E)DI-

*

*

--

*

*

*

*

*

*

Lea DI , ES : tab; Адрес строки в DI.

Mov AL ,25Н; Искомое число в АL.

Mov CX ,100; Установить счетчик.

REPNE SCASB;Сравнивать пока не найдем в tab число равное 25Н.

DEC DI ;Поправим DI.

Mov BX , DI ;Номер совпадающей ячейки в BX. 

SCASW

Сканировать строку слов.

AX -   ES: (E)DI Результат сравнения в регистре флагов.

IF DF= 0

(E)DI:= (E)DI+ 2

IF DF= 1

(E)DI:= (E)DI- 2

*

*

--

*

*

*

*

*

*

Lea DI , ES : tab; Адрес строки в DI.

Mov AX ,0125Н; Искомое число в АX.

Mov CX ,100; Установить счетчик.

REPNE SCASW ;Сравнивать пока не найдем в tab число равное 0125Н.

 SUB DI ,2 ;Поправим DI.

Mov BX , DI ;Номер совпадающей ячейки в BX.

Команды управления программой

Команды безусловной передачи управления

JMP имя

JMP Label

Безусловный переход

Передает управление на метку, безусловно. IP:= [R]/ Label

Адрес перехода в регистре или метке ячейки памяти.

--

--

--

--

--

--

--

--

--

JMP short met; Короткий переход на

                        -128или +127 байт.

JMP met2; Ближний переход на

JMP near met2; -32768 или 32767 байт.

JMP far met3; Дальний переход

                     более 65536 байт.

CALL имя

 

Вызов процедуры.

IP:= [R]/имя

[SS:SP]:= IP

SP:= SP-2

--

--

--

--

--

--

--

--

--

4F05 Call pr; Вызов процедуры pr и

4F08 Mov ax , bx; запись в стек адреса             

                         возврата (4F08).

RET

Возврат из процедуры.

IP:= [ SS:SP ]

SP:= SP+2

 

--

--

--

--

--

--

--

--

--

Ret pr; Выйти из процедуры и

     вернуться в основную программу      

     по адресу 4F08. Эта команда           

     аканчивает процедуру.

                                       

 

Продолжение таблицы 3.6

Дата: 2018-11-18, просмотров: 429.