全球旧事资料 分类
数值存放在ECX中,每循环一次ECX内容减1,直到ECX为0时循环结束。格式:LOOPccTARGET功能:将ECX内容减1,不影响标志位,若ECX不等于0,且测试条件‘CC’成立,则转移到目标地址TARGET处执行程序。转移范围为128127。如表38所示。表38循环控制指令
f例367计算MODELTINYCODESTARTUPXOREAX,EAXMOVEDX,1MOVECX,1000SUM:ADDEAX,EDXINCEDXLOOPDSUMEXITEND例368找出以ARRAY为首地址的100个字数组中的第一个非0项,送AX寄存器中。MODELSMALLDATAARRAYDW0,0,0,0,1010H,…;100个字CODESTARTUPMOVCX,64HLEABX,ARRAYMOVSI,0FFFEHZERO:INCSIINCSICMPWORDPTRBXSI0LOOPZZEROMOVAX,BXSIEXIT
fEND关于过程调用和返回指令将在子程序一节中介绍。335串操作指令80x86提供处理字符串的操作。串指连续存放在存储器中的一些数据字节、字或双字。串操作允许程序对连续存放大的数据块进行操作。串操作通常以DS:ESI来寻址源串,以ES:EDI来寻址目的串,对于源串允许段超越。ESI或EDI这两个地址指针在每次串操作后,都自动进行修改,以指向串中下一个串元素。地址指针修改是增量还是减量由方向标志来规定。当DF0,ESI及EDI的修改为增量;DF1,当ESI及EDI的修改为减量。根据串元素类型不同,地址指针增减量也不同,在串操作时,字节类型SI,DI加、减1;字类型SI,DI加、减2;双字类型ESI,EDI加、减4。如果需要连续进行串操作,通常加重复前缀。重复前缀可以和任何串操作指令组合,形成复合指令,见表39。一、重复前缀指令
表39重复前缀指令
二、方向标志指令格式:CLDSTD功能:CLD为清除方向标志,即将DF置‘0’。STD为设置方向标志,即将DF置‘1’。三、串传送指令基本格式:REPMOVSDESTSSRCSREPMOVSBMOVSWMOVSD功能:DS:将ESI规定的源串元素复制到ES:EDI规定的目的串单元中,见表310。表310MOVS指令
f该指令对标志位无影响。如果加重复前缀REP,则可以实现连续存放的数据块的传送,直到ECX0为止。在16位指令模式下,使用SI,DI,CX寄存器;在32位指令模式下,使用ESI,EDI,ECX寄存器。例369MODELSMALLDATASRCDB123…100个字节DESTDB100DUPCODESTARTUPMOVAX,@DATAMOVES,AXMOVCX,100LEASI,SRCLEADI,DESTCLDREPMOVSBEXITEND该程序将起始地址为SRC的100个字节内容传送到起始地址为DEST的存储单元。四、串比较指令基本格式:REPEZREPNZNECMPSDESTSSRCSREPEZREPNZNECMPSBCMPSWCMPSD功能:由DS:ESI规定的源串元素减去ES:EDI指出的r
好听全球资料 返回顶部