汇编第2次实验报告.doc
文本预览下载声明
实验名称:分支结构程序设计
班级:计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
显示全部