王爽《汇编语言》课程设计一

王爽《汇编语言》课程设计一

ID:46824901

大小:50.01 KB

页数:7页

时间:2019-11-28

王爽《汇编语言》课程设计一_第1页
王爽《汇编语言》课程设计一_第2页
王爽《汇编语言》课程设计一_第3页
王爽《汇编语言》课程设计一_第4页
王爽《汇编语言》课程设计一_第5页
资源描述:

《王爽《汇编语言》课程设计一》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、课程设计(一)一、有除法溢出的dtoc子程序为:dtoc:pushcxs:movcx,10calldivdw;进行16位除法,被除数低16位存放在ax中,高16位存放在dx中,除数为10,存放在cx中,并调用不会产生溢出的除法运算的子程序divdwaddcx,30h;将余数加上30h,就得到十进制数码字符对应的ASCII码mov[si],cx;将十进制数码字符对应的ASCII码存放在数据段中incsipushax;保存此时的axaddax,dx;商是由ax和dx中的数据组合而成,为了判断商是否为0movcx,ax;将商的高16位和低16位加起来,送给cxpopa

2、x;恢复axjcxzok;若商为0,则结束子程序jmpshortsok:movbyteptr[si],0;在字符串的结尾添个0callback;调用把字符串反过来的子程序backpopcxretdivdw:movbx,axmovax,dxmovdx,0divcxpushaxmovax,bxdivcxmovcx,dxpopdxretback:pushdipushcxmovcx,simovdi,0s1:moval,[di]movah,0pushaxincdiloops1movdi,0movcx,sis2:popaxmov[di],alincdiloops2popcx

3、popdiret二、课程设计首先,定义数据的时候,定义了一个栈段,在data段的开始定义了一个有10字节的空间,用来把数据转换成十进制形式的字符串,后面的总收入、雇员数、人均收入均为dword数据,方便后面统一来进行循环处理。其次,刚开始的时候,用一个循环来计算人均收入,并把得到的数据放在data段中(在data段中定义了21个为0的dword数据用来存放人均收入)。再次,在总体思路上,就是先定义一个32*21个字节的table段,把分别用子程序dtoc把每个用二进制存放的数据转换成对应的十进制字符串,把字符串存放到table段中相应的位置,通过四个循环能把所有

4、数据对应的字符串存放到table段中,这时的table段中的存储模式与要求显示在屏幕上的模式一样,所以可以用一个双重循环将table中的内容一个字节一个字节地复制到显示缓冲区的偶地址上,奇地址存放字符的颜色属性白色07h。不用调用子程序show_str。代码如下:代码2assumecs:codestacksegmentdb64dup(0)stackendsdatasegmentdb10dup(0)db'1975','1976','1977','1978','1979','1980','1981','1982','1983'db'1984','1985','198

5、6','1987','1988','1989','1990','1991','1992'db'1993','1994','1995'dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000dd3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226dd11542,14430,152

6、57,17800dd21dup(0)dataendstablesegmentdb672dup('');定义一个内存为672=32*21个字节的段tableendscodesegmentstart:movax,datamovds,axmovax,tablemoves,axmovax,stackmovss,axmovsp,64;循环s0的作用是计算人均收入,并把结果存储到data段中ds:[262]movdi,94movcx,21s0:movax,ds:[di]movdx,ds:[di+2]divwordptrds:[di+84]mov[di+168],axaddd

7、i,4loops0;循环s的作用是将年份字符串逐一写入table段中的1—4列、1—21行movbp,0;table段中用[bp+si]来定位数据,bp定位行,si定位列,也就是字符串中的每个字符movbx,10;data段用[bx+di]来定位数据,bx定位年份字符串,di来定位字符串中的每个字符movcx,21;有21个年份字符串s:pushcxmovsi,0movdi,0movcx,4;每个字符串有4个字符s1:moval,[bx+di]moves:[bp+si],alincsiincdiloops1addbp,32addbx,4popcxloops;循环

8、s2的作用是将总收入转换

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

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

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