河北工业大学-汇编实验报告(总30页)

上传人:文库****9 文档编号:182018240 上传时间:2021-05-07 格式:DOC 页数:30 大小:256KB
返回 下载 相关 举报
河北工业大学-汇编实验报告(总30页)_第1页
第1页 / 共30页
河北工业大学-汇编实验报告(总30页)_第2页
第2页 / 共30页
河北工业大学-汇编实验报告(总30页)_第3页
第3页 / 共30页
河北工业大学-汇编实验报告(总30页)_第4页
第4页 / 共30页
河北工业大学-汇编实验报告(总30页)_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《河北工业大学-汇编实验报告(总30页)》由会员分享,可在线阅读,更多相关《河北工业大学-汇编实验报告(总30页)(30页珍藏版)》请在金锄头文库上搜索。

1、 汇编实验 实验一 顺序与分支程序设计 一 、实验目的 1) 掌握顺序程序设计方法。2) 掌握分支程序的结构及分支程序的设计,调试方法。 2) 学习数据传送及算术和逻辑运算指令的用法。 3) 熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。 二、实验内容 1) 有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。 2)有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。 3) 在BUF和BUF+1、BUF+2单元分别放有一个无符号字节

2、型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。 4) 要求同上,只是比较的数为有符号数。 5) 将1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。6) 从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y按下列公式计算。7) 从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。a) 当输入字符为A,则计算X+Y,并以十六进制形式显示出来b) 当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来c) 当输入字符为C,则计算X

3、*Y,并以十六进制形式显示出来d) 当输入字符为D,则计算X/Y,并以十六进制形式显示出来三、实验设备 PC机一台 四、实验准备 1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。 2) 画出流程图。 3) 写出源程序。 4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。 五、实验步骤 1) 输入源程序。 2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。 六、实验报告的要求 1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。 2) 说明程序中各部分所用的算法。 3)说明主要符号和所用到寄存器的功能。 4) 总结为什么在设计分支程序

4、时必须解决三个问题:判断、转向和定标号。 5) 说明标志位CF、SF和OF的意义。 6) 上机调试过程中遇到的问题是如何解决的。 7) 对调试源程序的结果进行分析。Exam1:DATA SEGMENT ;数据段BUF1 DW 7898H BUF2 DW 4 DUP (0), 0AH, 0DH,$ BUF3 DW 4 DUP (0), $ DATA ENDS ;数据段结束CODE SEGMENT ;代码段 ASSUME CS:CODE, DS:DATA ;段寄存器关联说明伪指令BEGIN: MOV AX, DATA MOV DS, AX ;将数据段的基地址装入数据段寄存器DS MOV AX, B

5、UF1 ;将字型变量BUF1的值装入AX寄存器 ADD AX, 0 ;AX寄存器里的数据加0,以便进行转移测试 JS NEXT ;判断(AX)的正负,若为负则转到NEXT,为正则往下顺序执行。 MOV BUF2, AX ;为正,反码与原码一样 MOV BUF3, AX ;为正,补码与原码一样 JMP EEE NEXT: AND AX, 7FFFH ;将符号位变为0 NOT AX ;求反码 MOV BUF2, AX ;将BUF1的反码装入BUF2 INC AX ;求补码 MOV BUF3, AX ;将补码装入BUF3EEE: MOV CX, 0004H ;将0004H装入CX计数器寄存器中 MO

6、V DI, OFFSET BUF2 ;将DI指向变量BUF2开始的存储单元 MOV DX, DI ;将DI所指的数据装入DX寄存器中 ADD DI, 03 ;将DI指针下移三个字 BBB: MOV AX, DX ;将DX中的内容装入AX寄存器中 AND AX, 000FH ;即使BUF2的低四位不变,其余均变为0 CMP AL, 0AH ;比较AL与0AH的大小,以便能正确转换为0-9的ASCII值 JB QQQ ;若AL0AH,所以AL +07H,使得AL能转换成相应数字的ASCII值QQQ: ADD AL, 30H ;将AL转换成相应数字的ASCII值 MOV DI, AL ;将AL中的内

7、容装入以DS中的内容为段基地址,以DI的内容为偏移地址的存储单元中 DEC DI ;DI=DI-1,即将DI指向前一个存储单元 PUSH CX ;保存CX寄存器的内容 MOV CL, 04H ;给CL寄存器赋值为04H SHR DX, CL ;将DX逻辑右移四位 POP CX ;恢复CX寄存器的内容 LOOP BBB ;循环判断语句,CX=CX-1,若CX不等于0,则转到BBB,将下一个低四位存入存储单元中,否则循环结束 MOV CX, 0004H ;给CX寄存器赋值为0004H MOV SI, OFFSET BUF3 ;将SI指向变量BUF3开始的存储单元 MOV DX, SI ;将SI所指

8、的数据装入DX寄存器中 ADD SI, 03H ;将DI指针下移三个字CCC: MOV AX, DX ;将DX中的内容装入AX寄存器中 AND AX, 000FH ;即使BUF3的低四位不变,其余均变为0 CMP AL, 0AH ;比较AL与0AH的大小,以便能正确转换为0-9的ASCII值 JB DDD ;若AL0AH,所以AL +07H,使得AL能转换成相应数字的ASCII值DDD:ADD AL, 30H ;将AL转换成相应数字的ASCII值 MOV SI, AL ;将AL中的内容装入以DS中的内容为段基地址,以SI的内容为偏移地址的存储单元中 DEC SI ;SI=SI-1,即将SI指向

9、前一个存储单元 PUSH CX ;保存CX寄存器的内容 MOV CL, 04H ;给CL寄存器赋值为04H SHR DX, CL ;将DX逻辑右移四位 POP CX ;恢复CX寄存器的内容 LOOP CCC ;循环判断语句,CX=CX-1,若CX不等于0,则转到CCC,将下一个低四位存入存储单元中,否则循环结束 MOV DX, OFFSET BUF2 ;将BUF2的偏移地址装入DX寄存器中 MOV AH, 09H INT 21H ;在屏幕上显示BUF1的反码 MOV DX, OFFSET BUF3 MOV AH, 09H INT 21H ;在屏幕上显示BUF1的补码 MOV AH, 4CH I

10、NT 21H ;带返回码终止 CODE ENDS END BEGINExam2:DATA SEGMENT ;数据段A DB 34H, 18H, 2 DUP (0), $ ;定义字节型变量,其后的每操作数都占有一个字节B DB 56H, 83H ;定义字节型变量,其后的每操作数都占有一个字节DATA ENDS ;数据段结束CODE SEGMENT ;代码段ASSUME CS: CODE, DS:DATA START: MOV AX, DATAMOV DS, AX ;将数据段基地址装入数据段寄存器DSMOV AL, A ;将A所指的数装入AL寄存器中MOV BL, B ;将B所指的数装入BL寄存器中ADD AL, BL ;AL+BL-ALMOV AH,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号