Команды сравнения строк

 

    REP REPE REPNEREPZ REPNZ Повторять Повторять, пока равно. Повторять, пока не равно. Повторять, пока ноль. Повторять, пока не ноль. Префиксы повторений для строковых команд. Количество повторений в регистре СХ (ЕСХ). При каждом выполнении команды СХ(ЕСХ) уменьшается на 1.
CMPS пр.,ист.     Сравнить строки : Вычитает из источни-ка – приемник. [DS:(E)SI]-[ES:(E)DI] IF DF= 1 (E)DI:= (E)DI-1,(2),(4) (E)SI:= (E)SI- 1,(2),(4) * -- -- -- * * * * *
CLD; Установить флаг DF в 0. Mov cx,100 ; Установить счетчик цикла на 100. Repe Cmps tab1,tab2 ;Сравнивать 100 элементов до нахождения несовпадающих.
CMPSВ Сравнить строки байтов. [DS:(E)SI]-[ES:(E)DI] IF DF= 0 (E)DI:= (E)DI+1 (E)SI:= (E)SI +1 * -- -- -- * * * * *
STD ; Установить флаг DF в 1. Mov cx,100 ; Установить счетчик цикла на 100. Repne Cmpsb tab1,tab2 ;Сравнивать 100 байтов до нахождения совпадающих.
CMPSW   Сравнить строки слов. [DS:(E)SI]-[ES:(E)DI] IF DF:= 0 (E)DI:= (E)DI+ 2 (E)SI:= (E)SI+ 2 IF DF:= 1 (E)DI:= (E)DI- 2 (E)SI:= (E)SI- 2 * -- -- -- * * * * *
STD; Установить флаг DF в 1. Mov cx,100 ; Установить счетчик цикла на 100. Repne Cmpsw tab1,tab2 ;Сравнивать 100 слов, до нахождения совпадающих. Je m1; При совпадении, передать управление в m1.
                             

 

Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
CMPSD   Сравнить строки двойных слов. [DS:(E)SI]-[ES:(E)DI] IF DF:= 0 (E)DI:= (E)DI+ 4 (E)SI:= (E)SI+ 4 IF DF:= 1 (E)DI:= (E)DI- 4 (E)SI:= (E)SI- 4 * -- -- -- * * * * *
CLD; Установить флаг DF в 0. Mov cx,100 ; Установить счетчик цикла на 100. Repne Cmpsd tab1,tab2 ;Сравнивать 100 двойных слов, до нахождения совпадающих. Je m1; Передать управление в m1 ,при совпадении.
  3.4.7.2 Команды пересылки строк    
MOVS Пр.,ист. Пересылать строковые данные Пр:= ист [ES:DI]:= [DS:SI] СХ:= СХ-1 -- -- -- -- -- -- -- -- --
CLD; Установить DF = 0. Lea SI,tabist;Адрес источника в SI, Lea DI,ES:tabpr; а приемника в DI. Mov CX,100;Кол. элементов в СХ Rep Movs tabpr,tabist;Переслать 100 Элементов.
MOVSB Переслать строку байтов. [ES:DI]:= [DS:SI] IF DF := 0 DI := DI+ 1 SI := SI+ 1 IF DF:= 1 DI := DI- 1 SI := SI- 1 -- -- -- -- -- -- -- -- --
CLD; Установить DF = 0. Lea SI,tabist;Адрес источника в SI, Lea DI,ES:tabpr; а приемника в DI. Mov CX,100;Кол. элементов в СХ Rep Movs tabpr,tabist;Переслать 100 Байтов.
MOVSW Пересылать строку слов [ES:DI] := [DS:SI] IF DF:= 0 DI := DI+ 2 SI := SI+ 2 IF DF:= 1 DI := DI- 2 SI := SI- 2 -- -- -- -- -- -- -- -- --
CLD; Установить DF = 0. Lea SI,tabist;Адрес источника в SI, Lea DI,ES:tabpr; а приемника в DI. Mov CX,100;Кол. элементов в СХ Rep Movs tabpr,tabist;Переслать 100 слов.
                             

 

Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
MOVSD Пересылать строку двойных слов. ES:(E)SI:=DS:(E)DI IF DF:= 0 (E)DI:= (E)DI+ 4 (E)SI := (E)SI+ 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.4.7.3 Операции со строками символов    
LODSист. Чтение из строки. AL, (AX),(EAX) := DS: (E)SI IF DF = 0 SI := SI +1,(2),(4) IF DF =1 SI := SI-1,(2),(4) -- * -- -- -- -- -- -- --
Lea SI,tab1;Смещение tab1 в SI, а Lea DI,ES:tab2; смещение tab2 в DI. Mov CX,200; Счетчик элементов. Repe Cmps tab1,tab2; Искать совпадающие. Je met1;Совпали? Переход на met1. met1: Dec SI; Подправим регистр SI. Lods tab1; Элемент в AL,(AX),(EAX).
LODSB   Чтение байта из строки. AL:= [ DS: (E)SI ] IF DF= 0 (E)DI:= (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 met1;Совпали? Переход на met1. met1: Dec SI; Подправим регистр SI. Lodsb; Элемент в AL.
LODSW   Чтение слова из строки. AX:= [ DS: (E)SI ] IF DF= 0 (E)DI:= (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 met1;Совпали? Переход на met1. met1: Mov SI,SI-2; Коррекция SI. Lodsw;Элемент в AX.
                           

 

Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
  LODSD   Чтение двойного слова из строки. EAX:= [ DS: (E)SI ] IF DF= 0 (E)DI:= (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 met1;Совпали? Переход на met1. met1: Mov SI,SI-4; Подправим SI. Lodsd; Элемент в EAX.
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 двойных слов.  
                                                           

 

Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
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Н. SUB DI,2;Поправим DI. Mov BX,DI ;Номер совпадающей ячейки в BX.
SCASB Сканировать строку байтов. AL:= ES: (E)DI IF DF= 0 (E)DI:= (E)DI+ 1 IF DF= 1 (E)DI:= (E)DI- 1 * * -- * * * * * *
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.  
3.4.7 Команды управления программой
3.4.7.1 Команды безусловной передачи управления
JMPимя JMPLabel Безусловный переход IP:= [ Label ] IP:= [ R/ M ]   -- -- -- -- -- -- -- -- --
JMP shortmet1; Короткий переход. -128или +127 байт. JMPmet2 ; Ближний переход. JMP hearmet2;Ближний переход. -32768 или 32767 байт. JMP farmet3; Дальний переход. более 65536 байт.

 

Мнемокод Описание команд Флаги, пояснения, примеры  
OF DF IF TF SF ZF AF PF CF  
CALLимя Вызов процедуры. IP:= [R,имя] [SS:SP]:= IP SP:= SP-2 -- -- -- -- -- -- -- -- --  
4F05 Callpr ; Вызов процедуры pr и 4F08 Mov ax,bx ; запись в стек адреса возврата (4F08).  
RET Возврат из процедуры . IP:= [ SS:SP ] SP:= SP+2 -- -- -- -- -- -- -- -- --  
Ret pr ;Выйти из процедуры и верну- ться в основную программу по адресу 4F08.  
  3.4.7.2 Команды условных переходов без учета знака операнда  
JAmet1JNBEmet1 Перейти, если: -выше -не ниже и не равно IF CF= 0 и ZF= 0. IP:= [близкая метка] -- -- -- -- -- -- --  
Mov ax, 25; Загрузить число 25 в АХ. Cmp ax,bx; Сравнить с числом в ВХ. Jamet1; Перейти на met1, если АХ Больше содержимого ВХ.  
JAEmet2 JNB met2 JNCmet2 Перейти, если: - выше или равно - не ниже - нет переноса. IF CF= 0 IP:= [близкая метка] -- -- -- -- -- -- -- --  
Mov ax, 25; Загрузить число 25 в АХ. Cmp ax,bx; Сравнить с числом в ВХ. Jaemet1; Перейти на met2, если АХ больше содержимого ВХ.  
JBmet3 JNAE met3 JCmet3 Перейти, если: - ниже - не выше и не равно - есть перенос IF CF= 1 IP:= [близкая метка] -- -- -- -- -- -- -- --  
Mov ax, 25; Загрузить число 25 в АХ. Cmp ax,bx; Сравнить с числом в ВХ. Jbmet3; Перейти на met3, если АХ Меньше содержимого ВХ.    
JBEmet4 JNAmet4 Перейти, если: - ниже или равно - не выше IF CF= 1 или ZF= 1 IP:= [близкая метка] -- -- -- -- -- -- --  
Mov ax, 25; Загрузить число 25 в АХ. Cmp ax,bx; Сравнить с числом в ВХ. Jbemet4; Перейти на met4, если АХ меньше или равно ВХ.  
JE zero Перейти, если: - равно IF ZF= 1 IP:= [близкая метка] -- -- -- -- -- -- -- --  
Mov ax, 25; Загрузить число 25 в АХ. Sub ax,bx; Вычесть из АХ ВХ. Je zero; Перейти на метку zero, если АХ равно ВХ.    
                           

 

Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
JNEmet5 JNZ met5 Перейти, если: - не равно - не нуль IF ZF=0 IP:= [близкая метка] -- -- -- -- -- -- -- --
Mov ax, 25; Загрузить число 25 в АХ. Cmp ax,bx; Сравнить с числом в ВХ. Jnemet5; Перейти на met5, если АХ не равно ВХ.
JPEmet6 Перейти, если: -четное число единиц IF PF= 1 IP:= [близкая метка] -- -- -- -- -- -- -- --
Mov ax, 25; Загрузить число 25 в АХ. Mul bx; Умножить на ВХ. Jpеmet6; Перейти на met6, если в АХ Чётное число единиц.
JPOmet7 Перейти, если: - нечетное число единиц IF PF= 0 IP:= [близкая метка] -- -- -- -- -- -- -- --
Mov ax, 25; Загрузить число 25 в АХ. Mul bx; Умножить на ВХ. Jpоmet7; Перейти на met7, если в АХ нечётное число единиц.
3.4.7.3 Команды перехода с учетом знака операнда  
JGmet1 JNLEmet1 Перейти, если: - больше - не меньше и не равно IF ZF= 0 и SF= OF IP:= [близкая метка] * -- -- -- * -- -- --
Mov ax,7025; Загрузить число в АХ. Add ax, bx; Сложить с ВХ. Jg met1; Перейти на met1, если при сложении возник перенос.  
JGEmet2 JNLmet2 Перейти, если: - больше или равно - не меньше IF SF= OF IP:= [близкая метка] * -- -- -- * -- -- -- --
Mov ax,7025; Загрузить число в АХ. Cmp ax, bx; Сравнить с ВХ. Jgemet2; Перейти на met2, если AX больше или равен BX.
JLmet3 JNGEmet3 Перейти, если: - меньше - не больше и не равно IF SF ≠ OF IP:= [близкаяметка] * -- -- -- * -- -- -- --
Mov ax,7025; Загрузить число в АХ. Cmp ax, bx; Сравнить с ВХ. Jlmet3; Перейти на met3, если AX меньше BX.
JCXZмет4 Перейти, если: - значение CX= 0 IF CX= 0 IP:= [близкаяметка]   Cmp сx, 0; СХ равен 0 ? JCXZmet4; Перейти на met, если да.
                                                         

 

Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
JLEmet5 JNG met5   Перейти, если: - меньше или равно - не больше IF ZF= 1 или SF≠ OF IP:= [близкая метка] * -- -- -- * -- -- --
Mov ax,7025; Загрузить число в АХ. Cmp ax, bx; Сравнить с ВХ. Jlеmet5; Перейти на met5, если AX меньше BX.
JLEmet5 JNG met5 Перейти, если: - меньше или равно - не больше IF ZF= 1 или SF≠ OF IP:= [близкая метка] * -- -- -- * -- -- --
Mov ax,7025; Загрузить число в АХ. Cmp ax, bx; Сравнить с ВХ. Jlеmet5; Перейти на met5, если AX меньше BX.
  3.4.7.4 Команды переходов по флагам
JZmet1 Перейти, если ноль ZF =1 IP:= [близкая метка] -- -- -- -- -- -- -- --
Sub ax,bx; Вычесть из АХ ВХ. Jzmet1; Перейти, если ZF =1.  
JNZmet1 Перейти, если не ноль .ZF =0 IP:= [близкая метка] -- -- -- -- -- -- -- --
Sub ax,bx; Вычесть из АХ ВХ. Jnzmet1; Перейти, если ZF =0.
JSmet2 Перейти, если знак IF SF= 1 IP:= [близкая метка] -- -- -- -- -- -- -- --
Sub ax,bx; Вычесть из АХ ВХ. Jsmet2; Перейти, если SF =1.
JNSmet2 Переход, если не знак IF SF= 0 IP:= [близкая метка] -- -- -- -- -- -- -- --
Sub ax,bx; Вычесть из АХ ВХ. Jns met2; Перейти, если SF =0.
JO met3   Переход, если переполнение IF OF= 1 IP:= [близкая метка] -- -- -- -- -- -- -- --
Mov ax,6787H; Add ax,bx; Сложить АХ и ВХ. Jоmet3; Перейти, если ОF =1.
JNO met4   Переход, если не переполнение IF OF= 0 IP:= [близкая метка] -- -- -- -- -- -- -- --
Mov ax,6787H; Add ax,bx; Сложить АХ и ВХ. Jnо met4; Перейти, если ОF =0.
JP mеt5 Переход, если паритет четный. IF РF= 1 IP:= [близкая метка] -- -- -- -- -- -- -- --
Mov ax,637H; Add ax,bx; Сложить АХ и ВХ. Jpmet5; Перейти, если РF =1.
  Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
  JC met6     Перейти, если перенос. IF CF = 1 IP:= [близкая метка] -- -- -- -- -- -- -- --
Mov ax,637H; Add ax,bx; Сложить АХ и ВХ. Jnpmet6; Перейти, если CF =1.
  JNC met6     Перейти, если не перенос. IF CF = 0 IP:= [близкая метка] -- -- -- -- -- -- -- --
Mov ax,637H; Add ax,bx; Сложить АХ и ВХ. Jnpmet6; Перейти, если CF =0.
JNP mеt5   Переход, если паритет не четный. IF РF= IP:= [близкая метка] -- -- -- -- -- -- -- --
Mov ax,637H; Add ax,bx; Сложить АХ и ВХ. Jnpmet5; Перейти, если РF
  3.4.7. 4 Команды управления циклом.
LOOPmet Управление циклом. Повторять цикл пока СХ ≠ 0; CX:=CX-1 If CX ≠ 0 then Go met. -- -- -- -- -- -- -- -- --
Mov cx,10;Число повторений в СХ. Mov ax,45; Число в АХ. L:Add ax,bx; Сложить с ВХ. Loop L;Повторить сложение 10 раз.
  LOOPE met LOOPZmet   Управление циклом. Повторять цикл пока CX ≠ 0 и ZF = 1. - пока равно, или   - пока ноль CX:=CX-1 If CX ≠ 0 and ZF =1 then Go to met. -- -- -- -- -- -- -- -- --
Mov cx,10;Число повторений в СХ. Mov ax,45; Число в АХ. L:Cmp ax,[bx]; Сравнить с содержи- мым ячейки по адресу [bx] Inc bx;Увеличить адрес на 1. Loope L;Повторить сравнение 10 раз. Dec bx;Уменьшить адрес на 1. Mov dx,bx;Адрес ячейки в DX
  LOOPNE met LOOPNZmet   Управление циклом. Повторять цикл пока CX ≠ 0 и ZF = 0. - пока не равно или,   - пока не ноль CX := CX - 1 If CX ≠ 0 and ZF = 0 then Go to met. -- -- -- -- -- -- -- -- --
Mov cx,10;Число повторений в СХ. Mov ax,45; Число в АХ. L:Cmp ax,[bx]; Сравнить с содержи- мым ячейки по адресу [bx] Inc bx;Увеличить адрес на 1. Loopne L;Повторить сравнение . Dec bx;Уменьшить адрес на 1. Mov dx,bx;Адрес ячейки в DX
                                                         

 

  3.4.8 Команды условной установки байта    
Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
SETAEпр. SETNВпр. SETNСпр. Установить, если выше или равно, не ниже, нет переноса. IF CF= 0, пр. := 1. -- -- -- -- -- -- -- --
Мov cx, 54H;Операнд для сравнения Cmp cx, 43H; Сравнение. CF = 0. SETAЕ AL; AL устанавливается в 1.
SETBпр. SETNAEпр SETСпр. Установить, если ниже, не выше или равно, перенос. IF CF= 1, пр. := 1. -- -- -- -- -- -- -- --
Мov cx, 54H;Операнд для сравнения Cmp cx, 75H; Сравнение. CF = 1. SETС AL; AL устанавливается в 1.  
SETBEпр.SETNAпр. Установить, если ниже или равно, не выше. IF CF= 1 или ZF= 1, Пр. :=1. -- -- -- -- -- -- --
Мov cx, 54H;Операнд для сравнения Cmp cx, 43H; Сравнение. CF = 1. SETBE AL; AL устанавливается в 1.
SETEпр. SETZпр. Установить, если равно, ноль. IF ZF= 1, пр. := 1. -- -- -- -- -- -- -- --
Мov cx, 54H;Операнд для сравнения Cmp cx, 54H; Сравнение. ZF = 1. SETE AL; AL устанавливается в 1.
SETNEпр. SETNZпр. Установить, если не равно, не нуль. IF ZF= 0, пр. := 1. -- -- -- -- -- -- -- --
Мov cx, 54H;Операнд для сравнения Cmp cx, 86H; Сравнение. ZF = 0 SETNZ AL; AL устанавливается в 1
SETPпр SETPEпр. Установить, если четно, паритет чётный. IF PF= 1, пр. := 1. -- -- -- -- -- -- -- --
Мov cx, 55H;Операнд в СХ. ADD cx, 86H; SETP CL; AL устанавливается в 1.
SETNPпр. SETPOпр. Установить, если нечетно, паритет нечетный. IF PF= 0, пр.:= 1 -- -- -- -- -- -- -- --
Мov cx, 54H;Операнд в СХ. ADD cx, 86H; SETNP AL; AL устанавливается в 1.
SETA пр. SETNBEпр Установить, если выше, не ниже и не равно IF CF= 0, ZF= 0, Пр. := 1 -- -- -- -- -- -- --
Мov cx, 54H;Операнд для сравнения Cmp cx, 43H; Сравнение. CF и ZF =0. SETA AL; AL устанавливается в 1.
                             

 

Мнемокод Описание команд Флаги, пояснения, примеры  
OF DF IF TF SF ZF AF PF CF  
SETGE пр. SETNL пр. Установить, если больше или равно, не меньше. IF SF= OF, пр.:= 1 * -- -- -- * -- -- -- --  
Мov cx, 54H;Операнд для сравнения Cmp cx, 32H; Сравнение. SF = OF SETGE DL; DL устанавливается в 1.  
SETL пр. SETNGE пр. Установить, если меньше, не больше и не равно IF SF ≠ OF, пр.:= 1 * -- -- -- * -- -- -- --  
Мov cx, 54H;Операнд для сравнения Cmp cx, 62H; Сравнение. SF ≠ OF SETL AL; AL устанавливается в 1.  
SETLE пр. SETNG пр. Установить, если меньше или равно, не больше. IF ZF=1 или SF ≠ OF Пр.:= 1 * -- -- -- * -- -- --  
Мov cx, 62H;Операнд для сравнения Cmp cx, 62H; Сравнение. SF ≠ OF, ZF =1. SETLE AL; AL устанавливается в 1.  
SETS пр. Установить, если отрицательно IF SF= 1, пр := 1 -- -- -- -- -- -- -- --
Мov cx, 54H;Операнд в СХ. Mov ax, 55H; Операнд в АХ. SUB cx, ax ; 54H – 55H = FFFFF. SF= 1 SETS DL; DL устанавливается в 1.
SETNS пр. Установить, если положительно IF SF= 0, пр := 1 -- -- -- -- -- -- -- --
Мov cx, 78H;Операнд в СХ. Mov ax, 55H; Операнд в АХ. SUB cx, ax ; 78H – 55H = 23H. SF = 0 SETNS BL; BL устанавливается в 1.
SETO пр. Установить, если переполнение. IF OF= 1, пр := 1 -- -- -- -- -- -- -- --
Мov cx, 308H;Операнд в СХ. Mov ax, 55H; Операнд в АХ. Mul cx, ax ; 308 55 = 101A8. OF = 1 SETO BL; BL устанавливается в 1.
SETNO пр. Установить, если не переполнение. IF OF= 0, пр := 1 -- -- -- -- -- -- -- --
Мov cx, 38H;Операнд в СХ. Mov ax, 55H; Операнд в АХ. Mul cx, ax ; 38 55 = 1298Н. OF = 0 SETNO BL; BL устанавливается в 1.
  3.4.9 Операции над регистрами флагов  
LANF Загрузить флаги в AH AH :=SF, ZF, x, AF, x, PF, x, CF   -- -- -- -- * * * * *
LANF; Загружает флаги в АН AND ah,11H; Маскирует биты AF и CF JNZ M3;Переход по “ AF = CF =1”
                                             

 

Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
SANF Сохранить АН в регистре флагов. SF, ZF, х, AF, х, PF, х, CF := АН -- -- -- -- * * * * *
LANF; Загружает флаги в АН OR ah,4; Установим PF =1 SANF; Восстановим флаги
PUSHF PUSHFD Копировать флаги в стэк SP : = SP-2, SS:SP := FP (Flags) SS:[(E)SP]:= EF Flags (E)SP:= SP-4 SS:[(E)SP]:= FP Flags * * * * * * * * *
PUSHF ; Сохранить флаги в стэке OR SS:[SP], 800H; Установить OF =1 POPF ; Восстановить флаги.
POPF POPFD Восстановить флаги из стэка EF Flags:= SS[(E)SP] (E)SP:= SP-2 EF Flags:= SS[(E)SP] (E)SP:= SP-4 * * * * * * * * *
PUSHF ; Сохранить флаги в стэке OR SS:[SP], 800H; Установить OF =1 POPF ; Восстановить флаги.
STC Установить флаг переноса CF := 1 -- -- -- -- -- -- -- --
STC; Флаг переноса CF устанавливается в 1.
CLC Сбросить флаг переноса CF := 0 -- -- -- -- -- -- -- --
CLC; Флаг переноса CF устанавливается в 0.
CMC Инвертировать флаг переноса CF := -- -- -- -- -- -- -- -- *
CMC; Если CF =1, то он устанавли- вается в 0, если CF =0, то в 1.
STD Установить флаг направления DF := 1 -- -- -- -- -- -- -- --
Mov cx,100; Устанавливаем счетчик, STD; Устанавливаем флаг направле- ния в 1, Rep Mov Tab1,Tab2;Пересылаем 100 элементов из Tab2 в Tab.
CLD Сбросить флаг направления DF := 0 -- -- -- -- -- -- -- --
Mov cx,100; Устанавливаем счетчик, CLD; Сброс флага направленияв 0, Rep Mov Tab1,Tab2;Пересылаем 100 элементов из Tab2 в Tab1.
Мнемокод Описание команд Флаги, пояснения, примеры
OF DF IF TF SF ZF AF PF CF
STI Установить флаг разрешения преры-вания IF := 1 -- -- -- -- -- -- -- --
STI ; Устанавливает IF в 1.
CLI Сбросить флаг разрешени я преры-вания IF := 0 -- -- -- -- -- -- -- --
CLI ; Сбрасывает IF в 0.
  3.4.10 Программные прерывания  
01h INT 21H Ввод символа с клавиатуры с эхом на дисплее: Функция DOS 01h. Вход : AH = 01H .   -- -- -- -- -- -- -- --
Mov ah,01h; Код функции DOS в АН Int 21h ; Копирование в стэке содержи- мого регистров IP, CS, EFLAGS и вызов программы обработки прерывания с функцией 01Н.
02h INT 21H Вывод символа на экран: функция DOS 02h. Вход : AH = 02H DL = ASCII – код символа -- -- -- -- -- -- -- --
Mov DL, 41H;ASCII– код буквы А в DL Mov AH,02H;Код функции DOS в АН Int 21h; Копирование в стэке содержи- мого регистров IP, CS, EFLAGS и вызов программы обработки прерывания с функцией 02Н.
09h INT 21H Вывод строки символов на экран: функция DOS 09h. Вход : AH : = 09H DX : = адрес выводимой строки символов. В конце строки должен быть знак $. -- * -- -- -- -- -- --
Lea DX, stroka; Адрес строки в DX Mov AH,09H;Код функции DOS в АН Int 21h;Копирование в стэке содержи- мого регистров IP, CS, EFLAGS и вызов программы обработки прерывания с функцией 09Н.
4Сh INT 21Н Завершение программы: функция DOS 4Сh. Вход : AH = 4СH -- -- -- -- -- -- --
Mov AH,4CH ;Код функции DOS в АН. INT 21H ; Вызов DOS.
IRET Возврат из подпрограммы IP:= [SS:SP] CS:= [SS:SP+ 2] EF Flags:= [SS:SP+ 2] * * * * * * * * *
IRET ; Восстановление состояния процессора. Восстановление из стэка значений регистров IP, CS, RFLAGS.
                                       

 








Дата добавления: 2016-01-26; просмотров: 955;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.