汇编语言程序设计32(教室版)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (3) REPNE / REPNZ 当不等/不为零时重复串操作 格式:REPNE 串操作指令 或 REPNZ 串操作指令 功能:重复后面的串操作指令,每重复一次CX-1,重复一 直进行到CX为0 或串操作指令使零标志ZF为1 止 即: CX≠0 并且 ZF=0时,重复串操作指令 在某字符串中查找是否存在“$”字符(该字符串 的首地址为1000H,长度为32个字节),如果存 在把所在地址送入BX寄存器中,否则BX寄存器清0。 CLD MOV DI,1000H MOV CX,0020H MOV AL,’$’ REPNE SCASB AND CX,0FFH JZ ZER DEC DI MOV BX,DI JMP ST0 MOV BX,0 HLT 例: ZER: ST0: ;AL的内容与串中字符比较, 结果不为零重复 通过CX值判断是否找到“$” ,“与”的结果为“0”,没找到,否则,找到了,地址为DI-1。 REPNZ 例:检测一段被传送过的数据是否与源串完全相同 … REPE CMPSB ;源与目的串比较直到ZF=0或CX=0 AND CX,0FFH JZ EQQ ;如果是CX=0,两串完全相同 … EQQ:… ;有不相同的字符,做相应的处理 SI指向源串 DI指向目的串 CX为串长度 …… ;两串相同做相应的处理 例:要求把当前数据段中偏移1000H开始的100个 字节的数据传送到从偏移2000H开始的单元中。 CLD PUSH DS POP ES MOV SI,1000H MOV DI,2000H MOV CX,100 REP MOVSB …… ;清方向标志 ;由于在当前数据段中传送数据, 所以使ES等于DS ;置源串指针初值 ;置目的串指针初值 ;重复次数 ;每次传送一字节数据 DF=0,按增值方式调整指针 2.6 处理机控制类命令 1.在RESET线上有复位信号 2.在NMI线上有请求 3.在中断允许情况下,在INTR线上有请求 脱离暂停的条件 所以,HLT指令常在程序中为了等待中断而使用。 ⑴ NOP空操作指令 功能:不执行任何操作 ⑵ HLT停机指令 功能:CPU进入暂停状态(在暂停状态不进行任何操作) 格式: HLT 2.6 处理机控制类指令 1.在RESET线上有复位信号 2.在NMI线上有请求 3.在中断允许情况下,在INTR线上有请求 脱离暂停的条件 所以,HLT指令常在程序中为了等待中断而使用。 ⑴ NOP空操作指令 功能:不执行任何操作 ⑵ HLT停机指令 功能:CPU进入暂停状态(在暂停状态不进行任何操作) 格式: HLT 指令格式 功能 WAIT 等待指令 使CPU进入等待状态,每隔5个时钟周期,测试一次芯片上的TEST状态,直到TEST线上的信号变为有效为止,等待状态不做任何操作 ESC 交权指令,把控制权交给协处理器,所以,ESC后面是协处理器指令 LOCK 封锁指令 是一个指令前缀,使得在执行下一条指令期间发出总线封锁LOCK信号,指令执行过程中禁止其它协处理器使用总线 * * * * * * * * * * * * * * * * * * * * * * * * 34 ,84,23,18,7 开始 (COUNT1)←N (COUNT2)←(COUNT1) I←0 Ai≥Ai+1? Ai Ai+1 I+1 (COUNT2)-1 (COUNT2)=0? 交换标志=0? 结束 比较遍数 每遍比较次数 Y N N Y N Y 交换标志=1 交换标志=0 (COUNT1)-1 例8 在附加段中,有一个按从小到大顺序排列的无符号数,
原创力文档

文档评论(0)