汇编语言编程编程练习

汇编语言编程编程练习

ID:38716934

大小:65.50 KB

页数:12页

时间:2019-06-18

汇编语言编程编程练习_第1页
汇编语言编程编程练习_第2页
汇编语言编程编程练习_第3页
汇编语言编程编程练习_第4页
汇编语言编程编程练习_第5页
资源描述:

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

1、汇编语言编程编程练习一、实验题1.非数值运算编程(a)实验目的通过非数值运算(如统计,分类,排序,代码转换等)编程,进一步掌握8086/8088汇编语言程序设计方法和技巧(b)实验内容·统计设有100H个数,编程统计正数、负数和零的个数。实验分析:程序中数的总数很多,某些部分需要重复执行,因此要用到循环结构。循环结构每次测试循环条件,当满足条件时,重复执行这一段程序;否则循环结束,顺序往下执行。其次,要统计正数、负数、零的个数,可以依靠标志位SF进行判断,SF=0,正数;SF=1,负数;零则为总数减去正负数的个数。该程序流程图如下:修改

2、:移动缓冲区指针,循环次数减一执行:从BUFF取数,进行算术运算,判断符号标志位SF初始化:设置缓冲区BUFF指针BX,设定循环次数256,统计计数器DL清零开始循环控制:CX=0NOYES结束:将寄存器的统计结果存入MEM单元,将控制交操作系统程序如下所示:STACKSEGMENTSTACKDW128DUP(?)STACKENDSDATASEGMENTBUFFDB256DUP(?)MEM1DB?MEM2DB?MEM3DB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAM

3、OVDS,AXMOVCX,256LEABX,BUFFXORDL,DLXORDH,DHXORSI,SI;统计计数器清0NEXT:MOVAL,[BX];取数据到ALADDAL,0;做运算,影响标志位SFJNSAA1;是正数,跳到AA1INCDL;是负数,统计加1AA1:INCDH;是正数,加1INCBX;移动指针LOOPNEXT;循环控制MOVMEM1,DLMOVMEM2,DHMOVMEM3,SI;保存统计结果MOVAX,4C00HINT21HCODEENDSENDSTART·代码转换编程将组合的BCD码9649转换成二进制数,考虑采用((

4、(A*10)+B)*10)+C)*10+D的算法。实验分析:由学习已知,写成十六进制的BCD码和十进制码是完全一样的,比如,75D=(01110101)BCD,而(01110101)B=75H。BCD码的运算也遵循十进制运算规则,这一点可以方便计算机本身擅长的二进制运算结合BCD码的调整指令来完成。本题中,由于9469H计算机会默认为二进制数。因而,我们首先要做的是将9469hBCD码先转换成十进制数,计算机将会以二进制形式存储。最后再辅助程序令其输出在屏幕上。实验大抵流程如下:开始初始化:设定字节空间……执行:BCD码转化成十进制二进

5、制码输出结束实验代码如下:DATASSEGMENTbuffer1DW9649hbuffer2DW?;分配两个字节的空间DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXmovax,[buffer1]andax,0f000hmovcl,12shrax,clmovdx,ax;至此,已将9649h(BCD)中的9(十进制)取出,并放入dx中callchange;调用chang,将9乘以10movax,dxmovbx,[buffer1]andbx,0f00h

6、movcl,8shrbx,claddax,bxmovdx,axcallchangemovax,dxmovbx,[buffer1]andbx,00f0hmovcl,4shrbx,claddax,bxmovdx,axcallchangemovax,dxmovbx,[buffer1]andbx,000fhaddax,bx;至此,ax中的值已是9649(十进制),但电脑是将其以二进制的形式存储的,故应是25B1h,二进制就是0010010110110001movbuffer2,ax;因为后面会用到ah,为避免在其过程中丢失ax中的数据,故将ax

7、中的数据放入buffer2中movcx,16again:shlbuffer2,1;将已经转换成二进制的数逐个显示出来movdl,0adcdl,30hmovah,2int21hloopagainmovah,4CHINT21Hchangeproc;子程序change的功能是实现dx乘以10adddx,dxmovcx,dxadddx,dxadddx,dxadddx,cxretchangeENDPCODESENDSENDSTART·排序将80H个无符号的八位二进制数按递增方式排列。同时考虑它们有符号数、递减等方式。实验分析:实验要求将数排序,则

8、用CMP比较两个数大小,用标志位JNG(有符号位不大于),JGE(有符号位不小于),JAE(无符号位不低于)来判定排序种类。准备将该题用“冒泡排序法”,将其两两比较。前一个数较大(递减),则不会改变原来位置

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

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

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