1、教务处制 第 页1实 验 报 告 学年 第 学期实 验 课 程 汇编语言 学 生 姓 名 123实 验 项 目 条件转移指令 学 院 计算机科学技术实 验 性 质 专业选修课 班 级 学 号实 验 地 点 同 组 人 数 1 第 组实 验 日 期 第周 星期 第 节环 境 参 数Dosbox-0.74Masm 5.0成 绩 51、实验目的及要求2、实验原理、实验内容3、实验仪器设备及材料4、操作方法与实验步骤5、实验数据记录及处理6、实验结果分析及讨论一、实验目的: 18088 指令:JZ,JNZ,JC,JNC,CMP,SHR。 2程序:用字符搜索法确定字符串长度。 3程序:16 进制数化为
2、ASCII 码的一般方法。二:实验任务1自编程序:修改实验准备程序(二),使除了以 16 进制数形式显示内存内容外,还能在其右边显示该 16进制码所对应的 ASCII 字符,07-0D 的控制字符用.代替。 源代码:DATA SEGMENT 教务处制 第 页2DATA ENDSSTACKS SEGMENT STACKSTACKS ENDSCODE SEGMENT codeASSUME CS:CODE,DS:DATA,SS:STACKSSTART:MOV AX,DATA MOV DS,AXMOV SI,0HMOV BL,10H LOP:MOV DL,SI ;先处理高四位MOV CL,4HSHR
3、DL,CL ;右移四位CMP DL,0AH ;判断是0-9 还是 a-fJC J1 ;是 0-9 跳转ADD DL,7H ;是 a-f 要多加 7 因为 9为 390h A 为 41h 相差 7hJ1: ADD DL,30H ;以0为基址MOV AH,2H ;输出高四位的 ASCII 码INT 21HMOV DL,SI ;处理第四位AND DL,0FHCMP DL,0AH ;同上JC J2ADD DL,7H教务处制 第 页3J2: ADD DL,30HMOV AH,2HINT 21H ;数值输出完毕MOV DL,20H ;输出一个空格MOV AH,2HINT 21HMOV DL,SI ;将数值
4、直接作为 ASCII 输出MOV DH,06H ;判断是否在 07-0d 之内CMP DH,SIJNC J3MOV DH,0eHCMP SI, DHJNC J3MOV DL,2EH ;在范围内,换成.J3: MOV AH,2H ;输出INT 21HMOV DL,20H ;第一个字节处理完毕,输出一个空格MOV AH,2HINT 21HINC SI ;内存中下一个字节DEC BL ;控制循环次数JNZ LOP;回调结束代码MOV ax,4C00H教务处制 第 页4INT 21HCODE ENDSEND START编译连接:MS-DOS 下运行结果:结论:1、可以看到输出了十六进制的字符并在其右边
5、输出了对应的 ASCII 字符。2、因为是在 dos 下执行了,数据段地址与debug 下不同,所以输出的数据不同,但通过查ASCII 表,确定其对应字符正确。2 BUFX、BUFY 和 BUFZ9 是 3 个有符号的十六进制数,编写一个比较相等关系的程序: 1)如果这 3 个数都不相等,则显示 02)如果这 3 个数中有两个数相等,则显示 13)如果这 3 个数都相等,则显示 2源代码:DATA SEGMENT 教务处制 第 页5DATA ENDSSTACKS SEGMENT STACKSTACKS ENDSCODE SEGMENT codeASSUME CS:CODE,DS:DATA,SS
6、:STACKSSTART:MOV AX,DATAMOV DS,AX;将三个数分别存到 bh,bl,dh 中mov ah, 01hint 21hmov bh, almov dl,20hmov ah,02hint 21hmov ah, 01hint 21hmov bl, almov dl,20hmov ah,02hint 21hmov ah, 01h教务处制 第 页6int 21hmov dh, almov dl,0ahmov ah,02hint 21h;将 dl 设为字符0mov dl, 30hcmp bh,bljnz next1 ;不相等inc dl ;有两个数相等加一next1: cmp b
7、h,dh jnz next2 ;不相等inc dlnext2: cmp bl,dhjnz next3 ;不相等inc dl ;这两个数相等加一next3: cmp dl,33h ;超过二的话,需要重新修改jb next4 mov dl,32h ;改为2next4: mov ah,02h ;输出int 21hMOV ax,4C00HINT 21HCODE ENDS教务处制 第 页7END START编译连接:MS-DOS 下运行结果:结论:1、在 dos 下执行,从键盘输入字符,可以正确判断三者的相等关系,并输出。2、因为程序调用了 21 号中断的 1 号功能可以直接在 dos 中输入字符,所以
8、没有再用 debug 调试键入字符。流程图:教务处制 第 页8教务处制 第 页9四、实验步骤1) 用 EDIT 或其它编辑软件,编写.ASM 源程序, 2) 对其进行汇编及连接,产生.EXE 文件。3) 对.EXE 文件进行调试运行。a. 用 DEBUG 调试运行。b. 键入不同的字符,分别进行调试。c. 在 MS-DOS 下运行这两个.EXE 文件。五、小结1、学会了使用条件转移指令进行程序执行控制,就像 c+中的 if 语句。2、确切地体会到了数据数值与 ASCII 字符之间的关系。3、学会了使用软件进行流程图的绘制。4、程序能完全理解并加上了注释,教会别的同学。仪器设备损坏、非正常损耗材料(试剂)及处理情况:无教师对报告的最终评价及处理意见:教 师 签 字: 年 月 日