文档详情

汇编语言第六章教程.ppt

发布:2017-04-25约4.91千字共46页下载文档
文本预览下载声明
;思考: 下面的代码段完成什么功能?; 第6章 循环程序设计 6.1 循环结构程序设计;1、循环程序的组成;2、循环程序的结构形式:; 6.2 循环指令;(CX)-1 CX;例1:在屏幕上显示10行 “how do you do”, 程序名: exa.asm;例2:求1~N自然数的和,结果存在 X字单元。 程序如下: MOV AX, 0 MOV CX, N DONE:ADD AX,CX LOOP DONE ;和它等价的指令是? MOV [X],AX ;思考题: 1.下列描述错误的是_______。 A.LOOP指令以CX为循环控制计数器 B. LOOPNE指令循环的条件是CX≠0且ZF=0 C. LOOPE指令循环的条件是CX≠0且ZF=1 D. LOOPE指令循环的条件是CX≠0且ZF=0 2.下列指令中不能构成循环条件的是()。 A. JMP B. JNZ C. LOOP D. DEC CX ;例题3:在一首址为ARY,长度为20的字符串查找字符“*”,如果找到,则将字节单元RESULT清0,否则为 -1。;WHILE结构的循环控制伪指令的格式为: ?????????? .WHILE 条件表达式 ?????????? ??? 循环体 ?????????? .ENDW ?UNTIL结构格式为: ?????????? .REPEAT ?????????? ??? 循环体 ?????????? .UNTIL 条件表达式 ?UNTIL结构还有一种格式: ?????????? .REPEAT ?????????? ??? 循环体 ?????????? .UNTILCXZ [条件表达式] ;cx←cx-1,直到cx=0或条件为真;下面代码段完成的功能?? XOR AX, AX ??MOV CX,100 ???.WHILE CX!=0 ???????? ADD AX,CX ???????? DEC CX ????.ENDW ????MOV SUM , AX;6.3 串操作指令;串指令的特点;(2)操作数 串指令可以处理累加寄存器和存储器操作数。对于存储器操作数应先建立地址指针: 若为源操作数,则必须把源串首地址放入SI寄存器,缺省情况寻址DS所指向的段。 若为目标操作数,则必须把目标串首地址放入ES:DI寄存器,不允许使用段超越前缀。;(3)地址指针的修改 串指令执行后自动修改地址指针SI、DI。 (4)方向标志 方向标志DF决定地址指针的增减方向。 若DF=0,则地址指针增量; 若DF=1,则地址指针减量。;(5)重复前缀 串指令前可以加重复前缀REPE/REPZ、 REP或REPNE/REPNZ,使后跟的串指令重复执行。 重复次数应事先初始化在计数器CX。;二、串指令;思考:如何把自buf1开始的100个字节数据传送到buf2开始的区域中(要求用串传送指令)。;前面的例子中语句 REP MOVSB 和它等价的程序段是什么?;2.取串指令 LODS 例题演示 显式格式:LODS SRC 隐含格式:LODSB, LODSW, LODSD 功能:源→累加器, 即([SI]) →AL(或AX、EAX), 且自动修改SI指针。;② 自buffer1开始的10个非压缩BCD码形式存放的十进制数转换成ASCII码,按顺序显示在屏幕上。设DS、ES已按要求设置;3.存串指令 STOS 显式格式:STOS DST 隐含格式:STOSB,STOSW,STOSD 功能:累加器→目标, (AL(或AX、EAX))→ES:[DI], 且自动修改DI指针。;③ 把自buffer1开始的非压缩BCD码存放的十进制数转换成ASCII码,并放到buufer2中,字符串长度为10字节。设DS、ES已按要求设置;例. 用4到5种方法编写实现以下功能的程序片断。 ① 把自buffer1开始的200个字节数据传送到buffer2开始的区域中。 ;LAST:MOV AL,[SI] MOV ES:[DI],AL INC SI INC DI LOOP LAST;4.串比较指令 CMPS 显式格式:CMPS DST, SRC 隐含格式:CMPSB,CMPSW,CMPSD 功能:源-目标,即([SI])
显示全部
相似文档