ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:118.06KB ,
资源ID:23752367      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23752367.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言实现浮点相乘的程序.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言实现浮点相乘的程序.docx

1、汇编语言实现浮点相乘的程序汇编语言实现浮点相乘的程序 小数的乘法利用C语言非常简单,利用汇编则需要考虑很多问题,此程序的设计思路如下: 1、对运算的数据逐位的输入、判断、存储;包括:符号、小数点,整数、小数小数位; 2、对于带符号的数,先对其绝对值进行运算; 3、对于小数的计算利用汇编比较繁琐,此程序将小数转换成整数进行相乘的运算。 4、由整数相乘的结果,正确的分离出原数据的整数部分和小数部分。 5、判断结果的符号、整数的位数,小数的位数,逐位的分离并输出显示。程序设计思路:(1)两个浮点小数的输入 将两个小数逐位的输入,同时逐位经过判断符号位、整数位、小数点位、小数位,并实现数字由ASCII

2、码向数值的转换,最终完成两个小数的输入。输入过程中,对符号个数(0、1、2)、整数位个数及小数位个数做出记录,输入后,符号的个数、整数、整数、小数点标志位、小数和小数的位数存放到不同的存储空间内。(2)小数向整数的转换 根据对两个小数各自的小数位个数的记录,将小数的整数部分扩大相应的倍数后,与小数的小数部分相加,实现将小数调整为整数。例:浮点小数3.14的转换。(3)整数的乘法 将两个小数转化为整数后,用乘法指令实现两数的相乘,得到乘积。(4)整数向小数的转换 由两个浮点数的小数位数的记录,可以轻易的获得整数向小数转变时的相应倍数。(5)计算结果的转换及其显示 同样根据浮点数的整数位个数和小数

3、位个数,获得各自的位数,进而进行各位的分离以及由数值向ASCII码的逆向转换,并逐位的显示。这里需要指出的是,显示时,符号根据符号位的值(0、1、2)进行判断。另外,在整数和小数部分需要显示小数点“.”。(6)补充 此算法在计算过程中不考虑数的符号,统一的在计算结束后根据符号标志位进行判断。程序流程图一、数据a和b输入的程序流程图数据ASCII码转换的程序流程图数据的存储的程序流程图代码:stack segment stack db 1024 dup(0)stack endsdata segmentact db 0; aint dw 0;/数a的整数部分aflt dw 0;/数a的小数部分bi

4、nt dw 0;/数b的整数部分bflt dw 0;/数b的小数部分dota db 0;/数a的小数点标志值位 ca db 0; /数a的小数位个数位dotb db 0; /数b的小数点标志值位cb db 0; /数b的小数位个数位sign db 0; /数a、b的符号个之和data ends ;code segment code; assume cs:code,ds:data,ss:stackstart: mov ax,data;mov ds,ax; ;/数字a的输入errora: mov ah,01h; /输入一个字符int 21h; cmp al,32; / 空格je inputb; c

5、mp al,13; /回车je inputb;cmp al,-; /判断正负符号jne nexta1;inc sign; call errora;nexta1:cmp al,.; /判断小数点jne nexta2;inc dota; call errora; nexta2: cmp al,0; /判断是否在0-9jb errora;cmp al,9;ja errora;and ah,00h;sub ax,48;cmp dota,0; /以小数点为标志判断是整数部分还是小数部分je inta;inc ca;/是小数部分,则输入一位,标志位加1,记录小数位数mov bx,aflt; 小数的存储mo

6、v dx,bx;mov cl,3;shl dx,cl;shl bx,1;add bx,dx;add bx,ax;mov aflt,bx; call errora; inta: mov bx,aint; 整数的存储mov dx,bx; mov cl,3;shl dx,cl;shl bx,1;add bx,dx;add bx,ax;mov aint,bx; call errora; ;/数字b的输入 inputb: errorb: mov ah,01h;int 21h;cmp al,32; / 空格je kout; cmp al,13; /回车je kout; cmp al,-;jne nextb

7、1;inc sign;call errorb;nextb1:cmp al,.;jne nextb2;inc dotb; call errorb; nextb2: cmp al,0jb errorb;cmp al,9; ja errorb;and ah,00h;sub ax,48;cmp dotb,0;je intb; inc cb;mov bx,bflt;mov dx,bx;mov cl,3;shl dx,cl;shl bx,1;add bx,dx;add bx,ax;mov bflt,bx; call errorb; intb:mov bx,bint;mov dx,bx;mov cl,3;s

8、hl dx,cl;shl bx,1;add bx,dx;add bx,ax;mov bint,bx; call errorb; ;/浮点数a调整为整数kout: mov bl,ca; cmp bl,0;je a_over; a_again:mov dx,aint; mov cl,3;shl dx,cl;shl aint,1;add aint,dx; /数a放大十倍 dec bl;jnz a_again; a_over: mov ax,aint;add ax,aflt;mov aint,ax; ;/ 浮点数b调整为整数mov bl,cb; cmp bl,0;je b_over; b_again:

9、mov dx,bint; mov cl,3;shl dx,cl;shl bint,1;add bint,dx;dec bl;jnz b_again;b_over:mov ax,bint;add ax,bflt; mov bint,ax;/数a与数b的乘积 mov ax,aint;mov bx,bint;mul bx; push ax;push dx; ;/由整数调整为小数 mov bx,1;mov dl,0;add dl,ca;add dl,cb;cmp dl,0;je l_over; l_again:mov ax,bx; mov cl,3;shl bx,cl;shl ax,1;add bx,

10、ax;dec dl;jnz l_again; l_over: pop dx;pop ax; div bx; mov aint,ax; /整数部分mov aflt,dx; /小数部分;/ASCII码转换及显示部分;/符号部分 cmp sign,1; /符号三种可能:0、1、2jne sign_overmov dl,45; /-mov ah,02h;int 21h; ;/整数部分的显示sign_over: mov bx,1;cmp aint,1000;jb d2;mov dl,4; jmp int_num_over;d2:cmp aint,100;jb d1:mov dl,3; jmp int_n

11、um_over;d1:cmp aint,10;jb d0 mov dl,2; jmp int_num_over;d0: mov dl,1 int_num_over:mov act,dl; /确定整数的位数auto1: mov ax,bx;mov cl,3;shl ax,cl;shl bx,1;add bx,axdec dljnz auto1; mov cl,act;shift1:mov dx,0;mov ax,bx;mov bx,10;div bx;mov bx,ax;int_over:add al,48;mov dl,almov ah,02h;int 21h;pop dx;pop ax;mo

12、v ax,dx; mov aint,ax;dec cl;jnz shift1; mov ax,aint; div bx;push ax;push dx; ;/小数点的显示 cmp aflt,0; je all_dis_over; /小数部分为0,显示结束mov dl,46;mov ah,02h;int 21h; ;/小数部分mov dl,0; add dl,ca;add dl,cb;mov ca,dl;mov bx,1; dec dl;auto2: mov ax,bx;mov cl,3;shl ax,cl;shl bx,1;add bx,ax;dec dl ;jnz auto2; mov cl,ca; shift2: mov dx,0;mov ax,aflt;div bx;push dx; add al,48;mov dl,almov ah,02h;int 21h; mov dx,0;mov ax,bx;mov bx,10; div bx;mov bx,axpop dx; mov aflt,dx;dec cl;jnz shift2; all_dis_over:mov ax,4c00h;int 21h;code ends ;end start;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1