49506335程序控制指令内容摘要:

否则退出循环 ,执行 LOOP后面的指令。 注: LOOP指令与下面的指令段等价: DEC CX JNZ label 18 (2)LOOPZ (LOOPE) 格式: LOOPZ label 操作: (CX)1→CX ; 若 (CX)≠0∧ZF=1 ,则转至 label处执行 ; 否则退出循环 ,执行 LOOP后面的指令。 (3)LOOPNZ (LOOPNE) 格式: LOOPNZ label 操作: (CX)1→CX ; 若 (CX)≠0∧ZF=0, 则转至 label处执行 ; 否则退出循环 ,执行 LOOP后面的指令。 19 例 1:给 1A000H开始的 256个内存单元均减去 1,若 发现某个单元减为 0则立即退出循环,其后的单元不再减 1。 程序段如下 :(逻辑地址为 1A00:0H) MOV AX, 1A00H MOV DS, AX。 1A00H段 MOV DI, 1 MOV CX, 256 GOON: INC DI DEC BYTE PTR[DI] LOOPNZ GOON HLT 20 例 2:在 8000H开始的长度为 1000字节的字符串中 查找 ’S’,若找到,把其偏移地址记录在 ADDR中,否则 ADDR单元置为 0FFFFH。 MOV DI, 8000H MOV CX, 1000 MOV AL, ’S’ MOV ADDR, 0FFFFH GOON: SCASB LOOPNZ GOON JNZ DONE DEC DI MOV ADDR,DI DONE: HLT 21 3. 过程调用和返回指令 过程 (子程序 ) 一段具有特定功能的,供其它程序调用的公用程序。 特点  调用子程序时, IP(CS)的内容被压入堆栈栈顶。 从子程序返回时,栈顶的内容又被弹出到 IP(CS)。  子程序执行结束后一般均要返回调用程序。  一次定义,多次调用;  可带参数调用,以完成不同的功能。 优点 程序代码短 ,结构清晰 ,便于编程、调试、修改和阅读。 两条相关指令: 子程序调用指令 CALL 子程序返回指令 RET 22 一般格式: CALL sub。 sub为子程序的入口 根据子程序入口的寻址方式,子程序调用有四类。 ①段内直接调用 子程序的偏移地址直接由 CALL指令给出。 格式: CALL near_proc CALL执行时,它首先将 IP内容压栈,然后把指令中给出的位移量加到 IP上。 注:汇编以后的调用地址是相对于 CALL的下一条指令的位移量。 例: CALL 0120H。 子程序偏移地址由指令给出 (1)调用指令 CALL 23 位移量由汇编程序在汇编时进行计算 ,如下例 : CS:0102 CALL 0120H。 3字节 CS:0105 …… 则位移量为 : 01200105H=001BH 于是 CALL 0120H的机器码为 E8 1B 00 CS:0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。