1、辽工大硬件实验报告1成绩辽宁工程技术大学上机实验报告课程名称计算机硬件基础实验题目简单程序设计院系软件学院专业软件工程班级12-3姓名 邢少强学号1120010325实验日期2014.11.20实验目的1熟练掌握宏汇编程序设计的思想。2掌握顺序程序设计的思想及方法。3熟练掌握分支程序的结构。4掌握分支程序设计的思想、方法及上机调试过程。实验准备预习和上网查找一下内容:18086/8088宏汇编指令及伪指令2汇编语言程序设计的步骤。分析问题 确定算法 绘制程序框图 分配存储空间和工作单元 编写汇编语言源程序 静态检查 上机调试3顺序程序设计的思想和方法。4分支程序设计的思想和方法。(1)分支程序
2、根据条件是真或假决定执行与否(2)判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志(3)用转移指令JCC和JMP可以实现分支控制(4)分支结构有: 单分支结构 双分支结构 多分支结构实验进度本次共有 3 个练习,完成 3 个。实验内容 在运行程序之前,先配置汇编语言集成器软件,然后在编写程序1.编写一个程序,计算表达式(XY-Z)/X的值,其中:X、Y、Z均为16位带符号数,存放在数据段中,要求将表达式的计算结果存放在数据段中的RESULT起始的单元中。程序代码aa segment x dw ? y dw ? z dw ? result dw ? aa ends bb segme
3、nt assume cs:bb,ds:aa start: mov ax,aa mov ds,ax mov ax,x imul y mov cx,ax mov bx,dx mov ax,z cwd sub cx,ax sbb bx,dx idiv x mov result,ax mov ah,4ch int 21h bb ends end start设数据区中NUM1、NUM2字节单元中存放的是两个无符号数,试编写程序完成下述功能之一的操作:(1)如果两个数均为偶数,则两个数分别加1后送入DA1、DA2字节单元中;(2)如果一个为偶数,一个为奇数,则奇数送入DA1,偶数送入DA2字节单元中;(3
4、)如果两个数均为奇数,则两个数分别送入DA1、DA2字节单元中;DATAS SEGMENT NUM1 DB ? NUM2 DB ? DA1 DB ? DA2 DB ?DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX MOV AL,NUM1 MOV AH,NUM2 TEST AL,01H JNZ J1 TEST AH,01H JNZ J21 INC AL INC AH MOV DA1,AL MOV DA2,AH JMP EXIT J21:MOV DA1,AH MOV DA2,AL JMP E
5、XIT J1:TEST AH,01H JNZ J22 MOV DA1,AL MOV DA2,AH JMP EXIT J22:MOV DA1,AL MOV DA2,AH EXIT:MOV AH,4CH INT 21HCODES ENDSEND START3在内存BUFFER单元中存有10个8位数,试编程找出其中的最大值及最小值,并放在指定的存储单元MAX和MIN中DATA SEGMENT BUF DB 10 DUP(?) MIN DB ? MAX DB ? COUNT DW 09HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,D
6、ATA MOV DS,AX LEA SI, BUF INC SI MOV AL,BUF MOV CX ,COUNTFMAX: CMP AL,SI JG A MOV AL,SIA: ADD SI,1 LOOP FMAXMOV MAX, AL LEA SI, BUF ADD SI,1 MOV AL,BUF MOV CX,COUNTFMIN : CMP AL ,SI JL B MOV AL,SIB : ADD SI,1 LOOP FMIN MOV MIN, ALMOV AH,4CHINT 21HCODE ENDSEND START实验分析实验分析(续)日【练习1】用反汇编命令u,进行反汇编。e指令给
7、x,y,z赋值利用U命令观察内容如下,表明DS=143BH;变量X 的起始地址为DX=0000H;变量Y的起始地址为DX=0002H;变量Z的起始地址为DX=0004H;存放结果的RESULT变量的起始地址为DX=0006H。通过键盘录入X=0004H,Y=0006H,Z=0002H并运行:用运行指令g从起始地址143C:0000开始到143C:0021暂停通过E命令将X、Y、Z值录入后,并通过G命令运行后,数据区143BH:0000H连续8个字节分别存放0006H(X),0002H(Y),0006H(Z),0001H(结果)。用d指令查看数据段的内容。1存在的问题实验问题和解决方案 在实验过
8、程中对于DOS命令不熟悉,不能快速有效的进行调试,甚至有时调试命令还导致运行结果错误。解决方案:多上机进行试验,熟悉各种调试命令 在这次上机中,存在一些问题,如在使用汇编集成编辑器的时候将一个窗口打开进行编写代码,代码编写结束后点击保存时页面显示错误会自动消失。解决方案:需要将MASMS文件放到无汉字的路径下,才能正常的运行。【练习2】1、进行调试,用反汇编命令u,进行反汇编,用e指令赋值。利用U命令观察内容如下,表明DS=143bH;变量NUM1 的起始地址为DX=0000H;变量NUM2的起始地址为DX=0001H;存放结果的DA1变量的起始地址为DX=0002H; DA2变量的起始地址为
9、DX=0003H用运行指令g从起始地址143c:0000开始到143c:0045暂停用d指令查看数据段的内容。【练习3】(1)用反汇编命令u,进行反汇编,用e指令赋值,用D命令进行查看赋值后情况。U观察表明DS=143bH;数据区BUFFER 的起始地址为DX=0000H;存放结果的MIN变量的起始地址为DX=000AH;MAX的起始地址为DX=000BH。用运行指令g从起始地址14D1:0000开始到14D1:0045暂停用d指令查看数据段的内容。实验总结 【实验1】1.存在问题 编写程序的时候在一开始定义未知数的时候直接给出了数据,这样在运行的时候直接运行给定的数据被限定了,所以后来改成了
10、问号,这样在运行程序的时候赋值也容易了。2实验结论 通过对数据段的数据定义,利用DOS系统功能调用方法实现了求表达式(XY-Z)/X的值。3.收获和体会 这是第一个计算机硬件上机实验,通过这次试验使我们所学的知识得到活学活用,我学会了使用汇编集成器运行和调试。更锻炼了动手操作能力 【实验2】1.存在问题 根据题目要求编写的时候由于题目是分条件的,所以一开始编写的时候容易混淆,不知道到哪里用JNZ转移。后来通过看书分清了个转移指令的用法,才是程序能够正确运行。2实验结论 通过对数据段的数据定义,利用DOS系统功能调用方法实现了判断一个数是奇数还是偶数。3.收获和体会 通过这个实验理解并学会运用了标志位转移指令以及比较指令。通过编辑代码学会比较两数奇偶性并判断。【实验3】1,.存在问题 在编写程序中由于要用到跳转指令,循环指令,比较指令等。容易混淆以及不知道怎么应用,还好在同学的帮助以及老师的帮助下完成了这个程序。2.实验结论 通过对数据段的数据定义,利用DOS系统功能调用方法实现了查找已知数据区的最大值和最小值。3.心得和体会 通过和同学的交流以及请教老师我学会了运用不同的指令完成这个实验。掌握了利用DOS系统功能调用方法实现了在已知数据区查找最大值和最小值。教师评语
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1