微机原理第04章3顺序分支循环结构.ppt

上传人:牧羊曲112 文档编号:6284483 上传时间:2023-10-13 格式:PPT 页数:34 大小:354.82KB
返回 下载 相关 举报
微机原理第04章3顺序分支循环结构.ppt_第1页
第1页 / 共34页
微机原理第04章3顺序分支循环结构.ppt_第2页
第2页 / 共34页
微机原理第04章3顺序分支循环结构.ppt_第3页
第3页 / 共34页
微机原理第04章3顺序分支循环结构.ppt_第4页
第4页 / 共34页
微机原理第04章3顺序分支循环结构.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《微机原理第04章3顺序分支循环结构.ppt》由会员分享,可在线阅读,更多相关《微机原理第04章3顺序分支循环结构.ppt(34页珍藏版)》请在三一办公上搜索。

1、计算机接口技术(汇编与接口),第四章 汇编语言程序设计3,主要内容:,汇编语言源程序的结构汇编语言语句格式伪指令功能调用汇编语言程序设计,一个完整源程序结构例,DSEG SEGMENT DATA1 DB 1,2,DATA2 DW 1234HDSEG ENDSESEG SEGMENT DB 20 DUP(?)ESEG ENDSSSEG SEGMENT STACK STACK DB 200 DUP(?)SSEG ENDS,一个完整源程序结构例,CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ES:ESEG,SS:SSEG START:MOV AX,DSEG MOV DS,A

2、X MOV AX,ESEG MOV ES,AX mov ah,4ch int 21hCSEG ENDS END START,汇编语言程序设计,设计步骤:根据实际问题抽象出数学模型确定算法画程序流程图 分配内存工作单元和寄存器程序编码调试,第4章:4.3 顺序程序设计,没有分支、循环等转移指令的程序,会按指令书写的前后顺利依次执行,这就是顺序程序顺序结构是最基本的程序结构完全采用顺序结构编写的程序并不多见,例题4.4 顺序程序设计实例采用查表法,实现一位16进制数转换为ASCII码显示,第4章:例4.4 数据段,;数据段ASCIIdb 30h,31h,32h,33h,34h,35h,36h,37

3、h,38h,39h;对应0 9的ASCII码db 41h,42h,43h,44h,45h,46h;对应A F的ASCII码hexdb 04h,0bh;假设两个数据,第4章:例4.4 代码段,;代码段mov bx,offset ASCII;BX指向ASCII码表mov al,hex;AL取得一位16进制数;恰好就是ASCII码表中的位移and al,0fh;只有低4位是有效的,高4位清0Xlat;换码:ALDS:BXAL,XLAT,第4章:例4.4 代码段(续),mov dl,al;入口参数:DLALmov ah,2;02号DOS功能调用int 21h;显示一个ASCII码字符mov al,he

4、x+1;转换并显示下一个数据and al,0fhxlatmov dl,almov ah,2int 21h,XLAT,第4章:4.4 分支程序设计,分支程序根据条件是真或假决定执行与否判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志转移指令Jcc和JMP可以实现分支控制分支结构有单分支结构双分支结构多分支结构,第4章:单分支结构,条件成立跳转,否则顺序执行分支语句体注意选择正确的条件转移指令和转移目标地址,实例:求绝对值,第4章:计算AX中有符号数的绝对值,cmp ax,0 jge nonneg;条件满足(AX0),转移 neg ax;条件不满足,求补nonneg:mov resu

5、lt,ax;条件满足,;不恰当的分支 cmp ax,0 jl yesneg;条件满足(AX0),转移 jmp nonnegyesneg:neg ax;条件不满足,求补nonneg:mov result,ax;条件满足,第4章:双分支结构,条件成立跳转执行第2个分支语句体,否则顺序执行第1个分支语句体 注意第1个分支体后一定要有一个JMP指令跳到第2个分支体后,实例:显示BX的最高位,第4章:显示BX的最高位(双),shl bx,1;BX最高位移入CF标志jc one;CF1,即最高位为1,转移mov dl,30h;CF0,即最高位为0:DL30H0jmp two;一定要跳过另一个分支体one:

6、mov dl,31h;DL 31H1two:mov ah,2int 21h;显示,可以用JNC替换JC,4章:显示BX的最高位(双),shl bx,1;BX最高位移入CF标志jnc one;CF0,即最高位为0,转移mov dl,31h;CF1,即最高位为1:DL31H1jmp two;一定要跳过另一个分支体one:mov dl,30h;DL 30H0two:mov ah,2int 21h;显示,4章:显示BX的最高位(单支),mov dl,0;DL30H0shl bx,1;BX最高位移入CF标志jnc two;CF0,即最高位为0,转移mov dl,1;CF1,即最高位为1:DL31H1tw

7、o:mov ah,2int 21h;显示,编写分支程序,需留心分支的开始和结束,4章:显示BX的最高位(无分支),mov dl,0shl bx,1;BX最高位移入CF标志adc dl,30h;CF0,DL030h030H0;CF1,DL030h131H1two:mov ah,2int 21h;显示,分支结构(多分支),试编写程序段,实现符号函数。1 X0Y=0 X=0-1 X0,程序,START:MOVAX,BUFFER;(BUFFER)=XORAX,AXJzZERO;X0,则转ZEROJNSPLUS;X为正数,则转PLUSMOVBX,0FFFFH;X为负数,则1送BXJMPCONT1ZERO

8、:MOVBX,0JMPCONT1PLUS:MOVBX,1CONT1:,范例,现有若干个程序段,每一程序段的入口地址分别是SUB1,SUB2,SUBn。试编制一程序,根据指定的参数转入相应的程序段。(入口地址构造的跳转表),例子,DATA SEGMENT TABLE DW SUB1,SUB2,SUBn PARAM DB 3DATA ENDSSTACK SEGMENT PARA STACKDW 10 DUP(0)STACK ENDS,COSEG SEGMENT PARA STACKASSUME CS:COSEG,DS:DATA,SS:STACKBEING:MOV AX,DATAMOV DS,AXM

9、OV AL,PARAMMOV AH,0DEC ALSHL AL,1MOV BX,OFFSET TABLEADD BX,AXJMP BXSUB1:.JMP END0,Mov bx,bxJmp bx,END0:MOV AH,4CHINT 21HCOSEG ENDSEND BEING,跳转表由转移指令组成,DATA SEGMENTPARAM DB 3 DATA ENDSSTACK SEGMENT PARA STACKDW 20H DUP(0)STACK ENDSCOSEG SEGMENTASSUME CS:COSEG,DX:DATA,SS:STACKBEING:MOV AX,DATA MOV DS,

10、AX,MOV BH,0MOV BL,PARAMDEC BL MOV AL,BLSHL BL,1ADD BL,ALADD BX,OFFSET TABLEJMP BXTABLE:JMP SUB1 JMP SUB2 JMP SUBn,SUB1:JMP END0SUB2:JMP END0SUBn:END0:MOV AH,4CHINT 21HCOSEG ENDSEND BEING,第4章:4.5 循环程序设计,循环程序结构是满足一定条件的情况下,重复执行某段程序循环结构的程序通常有3个部分:循环初始部分为开始循环准备必要的条件,如循环次数、循环体需要的数值等 循环体部分指重复执行的程序部分,其中包括对循

11、环条件等的修改程序段循环控制部分判断循环条件是否成立,决定是否继续循环,关键是什么?,第4章:循环控制,循环结构程序的设计关键是循环控制部分循环控制可以在进入循环之前进行,也可以在循环体后进行,于是形成两种结构:“先判断、后循环”结构“先循环、后判断”结构循环结束的控制可以用循环次数,还可以用特定条件等,于是又有:计数控制循环条件控制循环,图示,第4章:先循环后判断的循环结构,第4章:4.5.1 计数控制循环,计数控制循环利用循环次数作为控制条件易于采用循环指令LOOP和JCXZ实现初始化:将循环次数或最大循环次数置入CX循环体循环控制:用LOOP指令对CX减1、并判断是否为0,第4章:用二进

12、制显示BL内容,mov cx,8;CX8(循环次数)again:shl bl,1;左移进CF,从高位开始显示mov dl,0;MOV指令不改变CFadc dl,30h;DL030HCF;CF若是0,则DL 0;CF若是1,则DL 1 mov ah,2int 21h;显示loop again;CX减1,如果CX未减至0,则循环,计数控制循环先循环后判断,第4章:4.5.2 条件控制循环,条件控制循环需要利用特定条件判断循环是否结束条件控制循环用条件转移指令判断循环条件转移指令可以指定目的标号来改变程序的运行顺序,如果目的标号指向一个重复执行的语句体的开始或结束,便构成了循环控制结构,第4章:显示

13、以0结尾的字符串,;数据段stringdb Let us have a try!,0;代码段mov bx,offset stringagain:mov dl,bxcmp dl,0jz done;为0结束mov ah,2;不为0,显示int 21hinc bx;指向下一个字符jmp againdone:,条件控制循环先判断后循环,第4章:记录某个字存储单元数据中1的个数,;数据段numberdw;代码段mov bx,numberxor dl,dl;循环初值:DL0again:test bx,0ffffh;也可以用cmp bx,0jz done;全部是0就可以退出循环,减少循环次数shl bx,1;用指令shr bx,1也可以adc dl,0;利用ADC指令加CF的特点进行计数jmp again,条件控制循环先判断后循环,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号