
当8086/8088处于暂停状态时,只有以下3种情况之一发生时才能脱离暂停状态:
①RESET线上有复位信号;
②在NMI线上有请求;
③在中断允许情形下(IF=1),在INTR线上有请求。
HALT指令可以这样理解,在8088/8086系统中CPU启动后,处理器的指令指针寄存器IP会根据指令长度(顺序执行指令)、指令性质(转移指令、子程序调用指令)在系统时钟驱动下自动做出调整,使程序按指定流向执行,也就是每执行一条指令,IP都或自动增减其值。当执行到HALT指令时,IP在硬件上被冻结,程序暂定,直到上面说的三种脱离暂停状态情况之一出现。
halt:退出程序。exit:退出过程、函数。如果在主程序,则效果和halt一样。
break:跳出循环。continue也是用在循环里面,但它并不是跳出,而是跳过这一次循环,直接进入下一个循环。
EXIT是退出本程序块。如果在一个过程中使用则退出过程(子过程就退出子过程),在主程序里就直接退出。
BREAK是跳出一层循环,比如语句for i:=1 to 10 do begin for j:=1 to 10 do if i=j then breakwrite(j)end中,当i和j都等于1时,条件满足,就跳出for j:=1 to 10 do ……的语句了,直接就写j的最终值。这样就可以优化算法,省去了后面J的9次循环。
HALT是最武断的一种退出。无论执行什么程序,都直接截断,关闭程序回到编译窗口,一般用于判断死循环后的及时退出。例如语句begin for i:=1 to 1 do haltwriteln('a')end中,输出项为空,因为在输出语句之前就已经退出程序了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)