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

加入VIP,免费下载资源
 

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

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

下载须知

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

版权提示 | 免责声明

本文(16位乘法指令完成32位无符号数乘法微机接口课程设计.doc)为本站会员(星星)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

16位乘法指令完成32位无符号数乘法微机接口课程设计.doc

1、微机原理与接口技术课程设计 17周 B330 微机原理与接口技术课程设计题目一:用位乘法指令完成位无符号数乘法、 要求:以十六进制格式输入乘数与被乘数,以十六进制格式显示结果,两个数相乘。十六进制输入,十六进制输出。、 设计思路:实现个位无符号数的相乘,被乘数在和寄存器中,乘数在和寄存器中,最后的位乘积在,中。、 程序代码如下:data segment p1 db Input the first number:$ p2 db 0dh,0ah,Input the second number:$ p3 db 0dh,0ah,The result is:$ p4 db 0dh,0ah,Error!,

2、$ key1 db 11 dup(?) key2 db 11 dup(?) x db 4 dup(?) y db 4 dup(?) p dw 4 dup(?)data endssstack segment stack stack db 100h dup(?)sstack endscode segmentmain proc far assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,offset p1 mov ah,09h int 21h ; 显示 p1 mov dx,offset x mov si,dx mov dx,offset

3、 key1 mov bx,dx mov bx,byte ptr 9 mov ah,0ah ;输入第一个数 int 21h mov dx,offset key1 call switch mov dx,offset p2 mov ah,09h int 21h ;显示p2 mov dx,offset y mov si,dx mov dx,offset key2 mov bx,dx mov bx,byte ptr 9 mov ah,0ah ;输入第二个数 int 21h call switch mov ah,x+2;个数乘法 mov al,x+3 ;x1 mov bh,y+2 mov bl,y+3 ;

4、y1 mul bx ;x1*y1 mov p+2,dx mov p,ax mov ah,x mov al,x+1 ;x2 mul bx ;x2*y1 add p+2,ax adc p+4,dx mov ah,x+2 mov al,x+3 ;x1 mov bh,y mov bl,y+1 ;y2 mul bx ;x1*y2 add p+2,ax adc p+4,dx adc p+6,0 mov ah,x mov al,x+1 ;x2 mul bx ;x2*y2 add p+4,ax adc p+6,dx mov dx,offset p3;取出结果 mov ah,09 int 21h mov bx,

5、offset p ;显示结果 mov ch,8loop2: mov al,bx+7 push ax and al,0f0h;保留al的高位,清零低位 mov cl,4 shr al,cl;将al右移位 add al,30h cmp al,3ah jb ds1 add al,7ds1: mov dl,al;将al中的ASCII送入dl mov ah,2;将dl的内容输出到屏幕上 int 21h pop ax and ax,0fh add al,30h cmp al,3ah jb ds2 add al,7ds2: mov dl,al;将al中的ASCII送入dl mov ah,2 int 21h

6、dec bx dec ch jnz loop2 mov ah,4ch; 返回操作系统 int 21hmain endpswitch proc;子程序转换 mov bx,dx add bx,2 mov cx,0404hloop1: mov al,bx sub al,30h cmp al,0ah jb L1 sub al,07h cmp al,10h jb L1 sub al,20h cmp al,10h jb L1 mov dx,offset p4 mov ah,09h int 21h mov ah,4ch int 21hL1: shl al,cl push ax mov al,bx+1 sub

7、 al,30h cmp al,0ah jb L2 sub al,07h cmp al,10h jb L2 sub al,20h cmp al,10h jb L2 mov dx,offset p4 mov ah,09h int 21h mov ah,4ch int 21hL2: mov dl,al pop ax add al,dl mov ds:si,al inc si add bx,2 dec ch jnz loop1 retswitch endpcode ends end start ;程序结束、运行结果正确结果显示。错误输入给出错误提示!题目二:递归调用子程序设计有个人坐在一起,问第五个人

8、多少岁?他说比第四个人大岁。问第四个人,他说比第三个大岁,问第三个人,又说比第二个人大岁。问第二个人,说比第一个人大岁,最后问第一个人,他说是岁,请问第五个人多大?用递归调用的方法设计程序完成本题。、 要求:个人,输入人数和第一个人的年龄,输出结果,十进制输入,十进制输出。、 实验原理算法:age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=10通用公式:age(n)=age(n-1)+2 当n1时age(1)=10 当n=1时3、程序流程图、程序代码如下:data segmentp1 db Input the

9、number of people(199):$p2 db 0dh,0ah,Input the age of first people:$p3 db 0dh,0ah,The age cha is:$p4 db 0dh,0ah,The age of last people:$p5 db 0dh,0ah,Input Error!$keybuf db 5 dup(?)data endssstack segment stack sstack st1 db 100 dup(?)sstack endscode segmentmain proc far assume cs:code,ds:data,ss:ss

10、tackstart: mov ax,data mov ds,ax mov dx,offset p1 mov ah,09h int 21h ; 显示 p1 call hl cmp ch,0ffh je hl push ax mov dx,offset p2 mov ah,09h int 21h ; 显示 p2 call hl cmp ch,0ffh je hl push ax mov dx,offset p3 mov ah,09h int 21h ; 显示 p3 call hl cmp ch,0ffh je hl push ax pop cx;年龄差 pop bx;第一个人的年龄 pop ax;

11、总人数 mov dx,0 call lv mov bx,dx mov dx,offset p4 ; 显示p4 mov ah,09h int 21h mov cl,08h ; 将结果转化成进制并且显示 xor ax,ax mov ax,bx mov dl,100 div dl push ax add al,30h ; 显示百位 mov dl,al mov ah,2 int 21h pop ax shr ax,cl mov dl,10 div dl push ax add al,30h ; 显示 十位 mov dl,al mov ah,2 int 21h pop ax shr ax,cl add

12、al,30h ; 显示 个位 mov dl,al mov ah,2 int 21h mov ah,4ch ; 返回操作系统 int 21hmain endpswitch proc add bx,2 mov cl,4 mov al,bx sub al,30h cmp al,0ah jb L1 mov dx,offset p5 mov ah,09h int 21h mov ch,0ffh jmp L3 ; 给出错误提示L1: push ax inc bx mov al,bx sub al,30h cmp al,0ah jb L2 mov dx,offset p5 mov ah,09h int 21

13、h mov ch,0ffh jmp L3 ; 给出错误提示L2: mov dl,al pop ax mov bl,0ah mul bl add al,dlL3: ret switch endphl proc near mov dx,offset keybuf mov bx,dx mov bx,byte ptr 3 mov ah,0ah ; 输入数字 int 21h call switch rethl endplv proc near ; 递归子程序 cmp al,1 ;与作比较 jnz chn ; 不等于,跳转到chn mov dl,bl ; 等于1,产生第一个人的年龄 ret ; 返回主程序

14、chn: push ax; ax进栈 dec al ;人数减1 call lv ; 再次调用子程序lv pop ax ;ax出栈 add dl,cl ;递归计算结果 ret ;返回主程序lv endpcode ends end start ;程序结束、运行结果共个人,第一个人的年龄是10岁,差龄是岁,最后一个人的年龄是岁共个人,第一个人的年龄是10岁,差龄是岁,最后一个人的年龄是岁因为是10 进制输入,给出错误提示!课程设计总结通过这次的课程设计,让我懂嘚了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把握所学的理论知识与实际相结合起来,从理论中得出结论,才能真正提高自己的能力!在设计的过程中遇到问题,可以说还行,毕竟第一次做的,难免会遇到各种问题,同时在此过程中发现了自己的不足之处,对以前所学过的知识理解不够深,掌握不牢固。不过最终还是挺顺利的,在此谢谢老师的指导,还有同学们的帮助!本文来自网络,版权归原作者所有,请下载后,尽快删除。11计算机班30号。

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922