汇编语言程序实验new

汇编语言程序实验new

ID:18725348

大小:171.00 KB

页数:12页

时间:2018-09-21

汇编语言程序实验new_第1页
汇编语言程序实验new_第2页
汇编语言程序实验new_第3页
汇编语言程序实验new_第4页
汇编语言程序实验new_第5页
资源描述:

《汇编语言程序实验new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、汇编语言程序实验实验目的【1】运用数值运算,通过编程及调试,熟悉8086

2、8088运算指令及DEBUG动态调试程序的方法【2】通过非数值运算编程,进一步掌握编程技巧和方法,这部分可以多做一些,题题目也较多【3】初步熟悉DOS系统和BIOS功能调用,其实前面要求中也包含着部分内容,比如数值运算包含显示功能调用一、实验原理【1】8086内部结构简介以下是微处理器的简要内部结构图其内部大概是有寄存器组,运算器,控制器,通过总线连接而成其中,标志寄存器用来指示运算结果的某些性质在编程中会反复用到这些寄存器,各个寄存器的作用如上表已经列出,表中的四个寄存器AX,BX,CX,DX都可以分别成为

3、两个8位的寄存器,如AX可以拆开用成AH和AL,分别表示高八位和低八位【2】8086指令系统一条指令有操作吗,目的操作数和源操作数组成,指令简要分为以下几类(1)数据传送类,如MOV,LEA,XCHG等(2)算术逻辑类,如ADD,ADC,SUB,SBB等(3)移位与旋转类,(4)跳转类指令,又细分为段内,段间跳转,跳转范围不同(5)伪指令,伪指令只是对指令的说明,其本身不占内存单元【3】汇编语言的基本语法一般要把每段的信息都交代,由于8086的系统是分段的,因此程序的数据与代码都应放在相应的段中,段按性质可分为代码段,数据段,堆栈段等,一个程序至少要有一个代码段具体的说明后面结合程

4、序再作介绍【4】DEBUG命令介绍在DOS环境下可以用DEBUG命令对程序进行调试,DEBUG命令具体有以下几条,简介其各条指令的功能(1)A汇编命令,从此命令往下逐行汇编(2)P和T命令单步执行命令,也就是跟踪命令,只是T命令跟踪到循环体中去(3)D内存显示命令(4)R寄存器显示命令(5)Q推出DEBUG的命令当然还有不少,这里就不一一列举了,熟悉以上的准备知识,下面就可以着手编程了。一、实验内容针对实验目的,每一个要求都选做不少于两个题目,共完成以下的实验内容【1】数值运算类,完成20个8位无符号二进制数的求和【2】完成减法运算,例如123456-789123【3】非数值运

5、算类,统计一百个数中正负数和零的个数【4】代码转换,完成组合BCD码与二进制码的转换【5】排序,将80个数按升序排列【6】BIOS功能调用,将运算结果显示出来【7】回显,键入一个数字或字符,回显在屏幕上【8】画一个矩形废话少说,直接上程序1.加法程序,以下程序实现20个8位无符号数的相加,并显示结果【设计思想】:将20个数放入一段内存,使用LOOP循环20次,每次取出一个数,不断和之前AX之中的和数相加【难点解决】:由于是第一个程序,那些格式都要熟悉,本程序就一个循环,难点是显示部分,要不断右移,逐位显示;加法程序全文如下DATASEGMENT;数据段TABDW1,2,3,4,5,

6、6,7,8,9,10,11,12,13,14,15,16,17,18,19,20;随便自定义20个数DATAENDS;数据段结束CODESEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATA;代码段开始MOVDS,AXMOVAX,0MOVCX,20;CX放20,用于控制循环次数LEASI,TAB;SI存放TAB首地址MOVBX,0;BX寄存器清零SUM:MOVAX,[SI];开始相加,AX取得第一个加数ADDBX,AXINCSI;SI加1,指向下一个数INCSILOOPSUM;一次相加结束,LOOP循环PUSHBX;相加结束,结果

7、存于BX中LOP2:MOVCL,04;CL控制移位位数ANDBL,0F0H;取BL高四位SHRBL,CLMOVDL,BL;DL存放数据用于显示ADDDL,30H;转换成ASC2码CMPDL,3AH;如果数字大于9,转化时再加7JBNEXTADDDL,7NEXT:MOVAH,2;2号功能调用,显示高位INT21HPOPBXLOP1:MOVDL,BL;做同样的事情,显示BL低4位ANDDL,0FHADDDL,30HCMPDL,3AHMOVAH,2INT21HMOVAH,4CH;程序正常结束INT21HCODEENDSENDSTART2、减法程序,实现减法并显示结果,123456-789

8、123【设计思想】(1)首先判断两个数那个大,大的减小则结果为正,否则为负,但程序始终使用大的减小的(2)低位数字在前,两位两位相减,结果存于开辟的数据段中【难点解决】难点在于显示,判断部分也不是很麻烦程序如下,有些不重要的部分就不写了,浪费时间DATASEGMENT'DATA';数据段定义ORG0100HDATA1DB56,34,12;注意高位是在后面的,前面的反而是低位DATA2DB23,91,78RESULTDB'H',6DUP(0),'$'DATAENDSCO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。