




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
;要求,输入一个整数,求出其所有素因子,并表现为乘积方式,求因子的算法用子程序来实现;例如:输入480,输出,480=2*2*2*2*2*3*5。; 如何编译链接该程序; 本程序需使用masm32来编译,若你的masm32安装在c盘,请设置如下环境变量; set include=c:masm32include; set lib=c:masm32lib; set PATH=c:masm32bin;%PATH%; 若本程序名为test.asm,则运行如下命令编译和链接和运行;ml /c /coff test.asm; link /subsystem:console test.obj; test.exe.386.model flat,stdcall ; 32 bit memory modeloption casemap :none ; case sensitiveinclude windows.incinclude user32.incincludelib user32.libinclude kernel32.incincludelib kernel32.lib.data inBuffer db 256 dup(?) ;输入缓冲区 outBuffer db 256 dup(?) ;输出缓冲区 number dd ? ;被分解的数 sqrtNum dd ? ;被分解的数的平方 dwLen dd ? ;字符串长度 tLen dd ? ; hInput dd ? ;标准输入设备句柄 hOutput dd ? ;标准输入设备句柄 facTab dd 32 dup(?) ;number的所有素因子 facCount dd ? ;number的所有素因子的个数 currFac dd ? ;number的当前因子.const szFmtInOut db %d,0 szFmtOut1 db Please input a number n(0=nsqrt(number) mov facTabecx*4,ebx ;将带分解的数r存储素因子表 inc ecx ;素因子数+1 dcom_exit: mov facCount,ecx ;素因子数存入facCount pop ebxpop edipop esiretdcomp endp; esi : in parameter, the address of string; eax : out parameter,the value of string; convert from a string to a integermyAtoi proc fac push ebx push ecx xor eax,eax xor ecx,ecx mov ebx,10loop_read_char: mov cl,byte ptr esi ; get a char from in_buff sub cl,0 cmp cl,9 ja input_exit ;if the char 9, then jump out loop mul ebx add eax,ecx inc esi jmp loop_read_char input_exit: pop ecx pop ebx ret myAtoi endp; number: in parameter; facTab: in paramter; facCount: factor count; hInstance: input device handleoutput_fac proc far push esi ;保存寄存器 push edi push ebx lea edi, outBuffer invoke wsprintf, edi, addr szFmtOut2,number add edi, eax xor ebx,ebxconvert_loop: mov eax,facTabebx*4 or ebx,ebx jnz case2case1: ;第一个因子,直接输出“因子“到outBuffer invoke wsprintf, edi,addr szFmtInOut,eax add edi, eax ;edi the write pointer in next time ; 下次输出时的地址送如edi jmp next_cmpcase2: ;非第一个因子,输出“因子“到outBuffer invoke wsprintf,edi,addr szFmtOut4,eax add edi, eax ;edi the write pointer in next ; 下次输出时的地址送edi next_cmp: inc ebx cmp ebx, facCount jb convert_loopprint: lea esi, outBuffer sub edi, esi mov dwLen,edi ;计算输出的字符串的长度,存入dwLen invoke WriteConsole,hOutput,addr outBuffer,dwLen,addr tLen,0 ;在控制台输出 pop ebx ;恢复寄存器 pop edi pop esi ret output_fac endp; eax : in parameter, a 32 bit integer; eax : out parameter, return sqrt(a), mySqrt proc fac push ecx ;保存寄存器 push ebx mov ecx,eax mov ebx,1 ;平方根的初始值为1 loop_mysqrt: mov eax,ebx ;计算ebx * ebx,结果存入eax mov edx,ebx mul edx cmp eax,ecx ;ebx的平方大于被开方数? ja mysqrt_exit ;若平方根的平方大于被开方数,推出循环 i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 移动互联网产品用户体验调查方案
- 2025-2030医疗AI辅助诊断系统临床落地难点分析报告
- 2025-2030动力锂电池梯次利用商业模式与回收网络建设报告
- 2025-2030动力锂电池回收再生材料纯度检测标准体系报告
- 2025-2030动力电池负极材料技术路线竞争与产能扩张评估
- 2025-2030动力电池梯次利用技术规范与退役规模预测模型
- 2025-2030动力电池梯次利用市场潜力与商业化模式研究报告
- 消防风险隐患排查与自我整改方案
- 2025-2030动力电池回收网点布局优化与退役量预测模型专项研究报告
- 2025-2030动力电池回收利用技术路线选择与商业模式探索报告
- 食管纵隔瘘护理
- 建筑项目水泥采购合同
- 华为ICT大赛网络赛道考试题库(786题)
- 水果采购协议样本
- 中职英语(高教版2021基础模块1)Part01-Unit2-Transportation
- 哲学与人生 第二课 树立科学的世界观2.1
- 2024-2030年中国止痛药品市场供需形势及未来前景动态研究研究报告
- 风电110KV升压站土建工程施工方案
- 2018低压电力线高速载波通信互联互通技术规范第3部分:检验方法
- 房屋漏水维修合同书范文
- 超声科医院感染管理:培训与演练
评论
0/150
提交评论