汇编实验五条件转移指令.docx
《汇编实验五条件转移指令.docx》由会员分享,可在线阅读,更多相关《汇编实验五条件转移指令.docx(9页珍藏版)》请在冰豆网上搜索。
汇编实验五条件转移指令
汇编实验五条件转移指令
实验报告
──学年第学期
实验课程
汇编语言
学生姓名
123
实验项目
条件转移指令
学院
计算机科学技术
实验性质
专业选修课
班级学号
实验地点
同组人数
1
第组
实验日期
第周星期第节
成绩
5
环境参数
Dosbox-0.74
Masm5.0
一、实验目的及要求
二、实验原理、实验内容
三、实验仪器设备及材料
四、操作方法与实验步骤
五、实验数据记录及处理
六、实验结果分析及讨论
一、实验目的:
1.8088指令:
JZ,JNZ,JC,JNC,CMP,SHR。
2.程序:
用字符搜索法确定字符串长度。
3.程序:
16进制数化为ASCII码的一般方法。
二:
实验任务
1.自编程序:
修改实验准备程序
(二),使除了以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用'.'代替。
源代码:
DATASEGMENT
DATAENDS
STACKSSEGMENTSTACK
STACKSENDS
CODESEGMENT'code'
ASSUMECS:
CODE,DS:
DATA,SS:
STACKS
START:
MOVAX,DATA
MOVDS,AX
MOVSI,0H
MOVBL,10H
LOP:
MOVDL,[SI];先处理高四位
MOVCL,4H
SHRDL,CL;右移四位
CMPDL,0AH;判断是‘0’-‘9’还是‘a'-’f‘
JCJ1;是0-9跳转
ADDDL,7H;是a-f要多加7因为‘9’为390h‘A'为41h相差7h
J1:
ADDDL,30H;以'0'为基址
MOVAH,2H;输出高四位的ASCII码
INT21H
MOVDL,[SI];处理第四位
ANDDL,0FH
CMPDL,0AH;同上
JCJ2
ADDDL,7H
J2:
ADDDL,30H
MOVAH,2H
INT21H;数值输出完毕
MOVDL,20H;输出一个空格
MOVAH,2H
INT21H
MOVDL,[SI];将数值直接作为ASCII输出
MOVDH,06H;判断是否在07-0d之内
CMPDH,[SI]
JNCJ3
MOVDH,0eH
CMP[SI],DH
JNCJ3
MOVDL,2EH;在范围内,换成’.'
J3:
MOVAH,2H;输出
INT21H
MOVDL,20H;第一个字节处理完毕,输出一个空格
MOVAH,2H
debug下不同,所以输出的数据不同,但通过查ASCII表,确定其对应字符正确。
2.BUFX、BUFY和BUFZ9是3个有符号的十六进制数,编写一个比较相等关系的程序:
1)如果这3个数都不相等,则显示0
2)如果这3个数中有两个数相等,则显示1
3)如果这3个数都相等,则显示2
源代码:
DATASEGMENT
DATAENDS
STACKSSEGMENTSTACK
STACKSENDS
CODESEGMENT'code'
ASSUMECS:
CODE,DS:
DATA,SS:
STACKS
START:
MOVAX,DATA
MOVDS,AX
;将三个数分别存到bh,bl,dh中
movah,01h
int21h
movbh,al
movdl,20h
movah,02h
int21h
movah,01h
int21h
movbl,al
movdl,20h
movah,02h
int21h
movah,01h
int21h
movdh,al
movdl,0ah
movah,02h
int21h
;将dl设为字符‘0’
movdl,30h
cmpbh,bl
jnznext1;不相等
incdl;有两个数相等加一
next1:
cmpbh,dh
jnznext2;不相等
incdl
next2:
cmpbl,dh
jnznext3;不相等
incdl;这两个数相等加一
next3:
cmpdl,33h;超过二的话,需要重新修改
jbnext4
movdl,32h;改为‘2’
next4:
movah,02h;输出
int21h
MOVax,4C00H
INT21H
CODEENDS
ENDSTART
编译连接:
MS-DOS下运行结果:
结论:
1、在dos下执行,从键盘输入字符,可以正确判断三者的相等关系,并输出。
2、因为程序调用了21号中断的1号功能可以直接在dos中输入字符,所以没有再用debug调试键入字符。
流程图:
四、实验步骤
1) 用EDIT或其它编辑软件,编写.ASM源程序,
2) 对其进行汇编及连接,产生.EXE文件。
3) 对.EXE文件进行调试运行。
a. 用DEBUG调试运行。
b. 键入不同的字符,分别进行调试。
c. 在MS-DOS下运行这两个.EXE文件。
五、小结
1、学会了使用条件转移指令进行程序执行控制,就像c++中的if语句。
2、确切地体会到了数据数值与ASCII字符之间的关系。
3、学会了使用软件进行流程图的绘制。
4、程序能完全理解并加上了注释,教会别的同学。
仪器设备损坏、非正常损耗材料(试剂)及处理情况:
无
教师对报告的最终评价及处理意见:
教师签字:
年月日