文档详情

汇编第2次实验报告.doc

发布:2017-06-21约2.89千字共5页下载文档
文本预览下载声明
实验名称:分支结构程序设计 班级:计062 日期:2008年4月13日 (第2次) 学号:200600401079 姓名:周玉祥 指导老师:蓝红莉 系(院):计算机工程系 实验程序1:在BUF和BUF+1,BUF+2单元分别存放有一个无符号数,将其中最大数存入MAX单元,并在屏幕上显示结果。 源程序: DATA SEGMENT BUF DB 38H,73H,1FH MAX DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BUF ;将BUF的值送入AL中 CMP AL,BUF+1 ;比较BUF和BUF+1内的数,大于或等于L1 JNB LP1 MOV AL,BUF+1 ;BUF中的数小于BUF+1中的数,则BUF+1内的数(AL L1:CMP AL,BUF+2 ;比较AL和BUF+2内的数,大于或等于转L2 JAE L2 MOV AL,BUF+2 ;小于,则大数(AL L2:MOV MAX,AL ;存结果 MOV BL,AL ;转存BL,为后续处理做准备 AND AL,0FH ;分离最大数的低4位 CMP AL,0AH ;比较是0至9还是A至F JB L3 ;是0至9,转L3 ADD AL,07H ;是A至F,则对应的数加37H L3:ADD AL,30H ;是数字0至9,则对应加30H MOV DL,AL ;处理后的结果送DL MOV AH,2 ;2号DOS功能调用显示结果的高位 INT 21H MOV AL,BL ;最大数恢复到AL中 MOV CL,04 ;设置移位位数 SHR AL,CL ;对高4位进行分离 CMP AL,0AH ;比较是0至9,还是A至F JB L4 ;是0至9,还是A至F ADD AL,07H ;是A至F,则对应的数值加37H L4:ADD AL,30H ;是0至9,则对应的数值加30H MOV DL,AL ;处理后的结果送DL MOV AH,2 ;2号DOS功能调用显示的低位 INT 21H MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START (1)程序流程图: (2)CF标志位是进位标志,记录运算结果的最高位向前进位或借位。若有进位或借位则置CF=1,否则清0。可用与检测无符号数二进制加减法运算时是否发生溢出(溢出时CF=1)。 SF是符号标志,记录运算结果的符号,若结果为负则置1,否则清0。 OF是溢出标志,记录运算结果是否超出了操作数所能表示的范围。若超出则置1,否则清0。可用与检测带符号数运算时是否发生溢出。 (3)总结设计分支程序必须解决的三个问题:判断,转向和定标号 在分支程序设计中需要测试条件,判断若符合条件则转向另一分支,否则按顺序执行,而转向操作是分支程序的执行逻辑,标号代指子程序,这些都是分支程序中不可缺少的。当判断条件符合某一条件时,程序执行顺序随即转向该条件程序执行,并通过标号转入该程序。 (4) 实验中遇到的问题及解决办法 实验时应注意条件判断后执行的的子程序,子程序中的条件判断又转向另一子程序,应该在读程序的同时就画流程图,可避免逻辑混乱。主程序执行完后要回到最初的分支执行的子程序。 (5)程序运行结果: 实验程序2:编辑实现从键盘输入一位数字,判断起奇偶性,并在屏幕上输出一个标志,若为奇数则输出1,否则输出0。 源程序: CODE SEGMENT ASSUME CS:CODE START: MOV AH,01H ;调用DOS中断的1号功能(输入一个字符) INT 21H ;AL(输入一位数字 CMP AL,30H ;若输入比0小的字符则重新输入 JB START CMP AL,39H ;若输入比9大的字符则重新输入 JA START CLC
显示全部
相似文档