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. |