资源描述:
《哈工程 微机原理实验 实验一》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、哈尔滨工程大学实验报告实验名称:实验一熟悉实验环境及简单程序设计实验室名称:水声楼五楼电学实验室哈尔滨工程大学实验室与资产管理处制1.实验名称熟悉实验环境及简单程序设计2.实验目的1.熟悉实验环境;2.掌握基本DEBUG命令;3.熟练掌握汇编语言编写、调试和运行的基本方法;4.掌握数据在寄存器、内存中的存放方式和寻址方式。3.实验内容与实验步骤3.1实验一编写程序,用移位加法方法,将AL寄存器中的无符号数乘以7。思考若(AL)*7的结果较大,超过了一个字节的表示范围,编程时如何处理?请编程调试。编程流程图:将AX赋初值将AX值送给BXAX左移一位相当于*2将AX值送给CXAX再左移一位相当
2、于*4将AX和CX相加赋给AX将AX和BX相加赋给AX程序源代码:DATASEGMENT;数据段定义DATAENDSCODESEGMENT;;代码段ASSUMECS:CODE,DS:DATA;设定数据段和代码段位置START:MOVAX,DATA;将代码段赋给DS寄存器MOVDS,AXMOVAL,2;将AL初值赋为2MOVBL,AL;将AL赋给BLSHLAL,1;AL*2MOVCL,AL;将AL赋给CLSHLAL,1;AL*2ADDAL,CL;将AL,BL相加相当于*5ADDAL,BL;将AL,BL相加相当于*7MOVAH,4CH;程序结束INT21HCODEENDSENDSTART上机运行这
3、段程序,可以得到如下结果。图1实验1的编程结果可以看出,当AL输入为2时,AL输出14,可见整个过程中数据*7。当数据量超过8位时,可以用整个的16位寄存器来储存计算结果。具体程序如下。DATASEGMENT;数据段定义DATAENDSCODESEGMENT;;代码段ASSUMECS:CODE,DS:DATA;设定数据段和代码段位置START:MOVAX,DATA;将代码段赋给DS寄存器MOVDS,AXMOVAX,0;将AX寄存器清零MOVAX,40;将AL初值赋为40MOVBX,AX;将AX赋给BXSHLAX,1;左移,相当于AX*2MOVCX,AX;将AX赋给CXSHLAX,1;AX*2A
4、DDAX,CX;将AX,CX相加相当于*5ADDAX,BX;将AX,BX相加相当于*7MOVBX,AX;利用BX寄存器保护AX结果MOVAH,4CH;程序结束INT21HCODEENDSENDSTART以下是此程序的输出结果。可以看出,当输入为40时,输出的值是16进制数0118H,转化为十进制数即为280,可见符合要求。图2当数据量超过8位时的数据处理方法3.2实验二多字节加法程序:编程实现两个32位二进制数据的加法程序。编程流程图:程序源代码:一.无进位实例:DATASEGMENTDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DAT
5、A;将代码段赋给DS寄存器MOVDS,AXMOVAX,1234H;利用AX存放低16位,将1234H赋给AX寄存器MOVDX,5678H;利用DX存放高16位,将5678H赋给DX寄存器ADDAX,1234H;将AX和1234H相加JNCKEEPUP;如果没有进位,则跳转INCDX;如果有进位,则高位加一KEEPUP:ADDDX,789AH;将DX同789AH相加MOVAH,4CH;程序结束INT21HCODEENDSENDSTARTDATAENDS图3实验2(无进位)的结果由结果可以看出,当输入为56781234H和789A1234H时,和为CF122468H这样的结果是在低位没有进位时得到
6、的输入。下面我们改变程序参数,运行程序得到了如图4所示的结果。二.有进位实例:DATASEGMENTDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;将代码段赋给DS寄存器MOVDS,AXMOVAX,0D678H;利用AX存放低16位,将0D678H赋给AX寄存器MOVDX,1234H;利用DX存放高16位,将1234H赋给DX寄存器ADDAX,789AH;将AX和789AH相加JNCKEEPUP;如果没有进位,则跳转INCDX;如果有进位,则高位加一KEEPUP:ADDDX,1234H;将DX同1234H相加MOVAH,4CH;
7、程序结束INT21HCODEENDSENDSTARTDATAENDS图4实验2(有进位)的结果可知,输入为1234D678H和1234789AH时,输出为24694F12H,结果正确。3.3实验三给出一组数据:1230H,7145H,00FFH,0E236H,9031H,0003H,4567H,7BA3H编程分别实现:(1)将以上数据视为无符号数找出其中最大值。(2)将以上数据视为带符号数找出其中