Справочник по языку Ассемблера IBM PC



CMPS/CMPSB/CMPSW/CMPSD - часть 2



Для того чтобы эти команды можно было использовать для сравнения последовательности элементов, имеющих размерность байт, слово, двойное слово, необходимо использовать один из префиксов repe или repne. Префикс repe заставляет циклически выполняться команды сравнения до тех пор, пока содержимое регистра ecx/cx не станет равным нулю или пока не совпадут очередные сравниваемые элементы цепочек (флаг zf=1). Префикс repne заставляет циклически производить сравнение до тех пор, пока не будет достигнут конец цепочки (ecx/cx=0) либо не встретятся различающиеся элементы цепочек (флаг zf=0).

.data obl1    db      'Строка для сравнения' obl1    db      'Строка для сравнения' a_obl1  dd      obl1 a_obl2  dd      obl2 .code ...         cld             ;просмотр цепочки в направлении возрастания адресов         mov     cx,20   ;длина цепочки         lds     si,a_obl1       ;адрес источника в пару ds:si         les     di,a_obl2       ;адрес назначения в пару ds:si repe    cmpsb           ;сравнивать, пока равны         jnz     m1      ;если не конец цепочки, то встретились разные элементы ...                     ;действия, если цепочки совпали ... m1: ...                     ;действия, если цепочки не совпали         

См. также: уроки 10, 11 и команды , , , , , , , , ,




Содержание  Назад  Вперед