汇编课程设计.docx_第1页
汇编课程设计.docx_第2页
汇编课程设计.docx_第3页
汇编课程设计.docx_第4页
汇编课程设计.docx_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、实验目的课程设计是计算机原理与汇编语言教学过程中的重要环节。本课程设计主要目的是使计算机专业学生深入学习计算机原理与汇编语言知识,进一步提高学生计算机原理与汇编语言综合能力和程序设计技能,锻炼运用计算机原理与汇编语言解决实际问题的能力。二、实验要求1认真查阅资料,独立完成设计任务,每道题都必须上机通过。2独立思考,培养综合分析问题解决问题和调试程序的能力。3按时完成课程设计,写出课程设计报告。三、实验内容1. 输入 2030之间的n 值, 用递归计算 Fibonacci 数, 以十进制数输出.、概要设计 程序要求键盘输入2030之间的n 值,首先要设计一个输入子程序用来得到输入的n值,然后

2、设计一个递归计算Fibonacci数的子程序,最后把得到的结果调用十进制输出子程序输出。程序流程图如下:程序开始屏幕输出提示信息输出程序结束输出第N个Fibonacci数键盘输入N值递归计算Fibonacci数判断递归是否大于N否是、具体设计 主程序.model small.data b1 db Fibonacci is: $ 用于输出提示信息 d dw ? 存放数的低位 g dw ? 存放数的高位 count db ? 存放输入的N值.stack.code main proc far mov ax,data mov ds,ax call tishi 输出提示信息 call shuru 调用输

3、入子程序 call huiche 回车换行 mov ax,1 mov bx,1 mov cx,0 mov dx,0 call f 计算Fibonacci数 call out10 十进制输出计算结果 mov ah,4ch int 21h main endp 输入子程序shuru proc near mov ah,1h ; 键盘输入一个字符 int 21h sub al,30h mov ah,0 mov cl,10d mul cl; 输入十位数 mov cx,ax mov ah,1 int 21h ; 输入个位数 sub al,32h add cl,al mov count,cl ;把输入的N值存

4、入count ret ;返回主程序shuru endp 递归计算Fibonacci数子程序f proc near mov d,ax mov g,dx add ax,bx 低16位放在ax里 adc dx,cx 高16位用带进位乘法 放在dx里 mov bx,d mov cx,g dec count 递归次数减一 jz exit 如果递归次数为0则结束递归过程 call f 如果递归次数不为0,进行递归计算 exit: retf endp 十进制输出子程序out10 proc near; dx中存放高16位,ax中存放低16位 mov bx,100d div bx 为了降低商的大小,先除以100

5、,把十进制个位和十位入栈 mov cx,ax mov ax,dx mov dx,0 mov bx,10d div bx push dx push ax mov ax,cx mov dx,0 mov cx,2cun: mov dx,0 div bx 继续除以10,把余数入栈 push dx inc cx cmp ax,0 jnz cun mov ah,2qu: pop dx 从高位到低位依次从栈中取出输出 add dl,30h int 21h loop qu mov dl,20h int 21h ret out10 endp、运行结果2. 求 100 以内的素数,要使用到子程序,完成这些素数的输

6、出显示和个数统计以及求和计算,均以十进制形式输出。、概要设计 Dl存放要判断的素数,如果bl能够整除dl说明dl中不是素数,dl加一继续循环,如果bl不能整除dl,则调用十进制输出子程序输出dl,并把count加一,sum加上dl.判断dl大于100则退出循环。程序流程图如下:开始初始化数据段输出提示信息调用求素数子程序 否N=100 是调用显示个数子函数调用显示素数和子函数结束、具体设计 主程序.model small.stack.data d1 db su shu in 100: $ d2 db sum is: $ d3 db count is: $ count dw 0;存放素数个数 s

7、um dw 0;存放素数和.code main proc far mov ax,data mov ds,ax call qiusushu ;调用求100以内素数并输出子程序 call qiugeshu;调用输出素数个数子程序 call qiuhe ;调用输出素数和子程序 mov ah,4ch int 21hmain endp求素数子程序qiusushu proc near ;计算100以内素数 push ax push bx push dx lea dx,d1 mov ah,9 int 21h mov dx,0ah mov ah,2h int 21h mov dx,0dh int 21h mo

8、v bl,2 l1: cmp bl,100 ja jieshu mov dl,2 l2: cmp bl,dl jz sushu mov ax,bx div dl cmp ah,0 jz l3 inc dl jmp l2 l3: inc bl jmp l1 sushu: mov ax,bx call out10 inc bl inc count add sum,ax jmp l1 jieshu: pop dx pop bx pop ax retqiusushu endp十进制输出子程序out10 proc near;十进制输出AX push ax push bx push cx push dx

9、mov bx,10d mov cx,0c: mov dx,0 div bx push dx inc cx cmp ax,0 jnz c mov ah,2q: pop dx add dl,30h int 21h loop q mov dl,20h int 21h pop dx pop cx pop bx pop ax ret out10 endp输出素数个数子程序qiugeshu proc near push ax push dx mov ah,2h mov dx,0ah int 21h mov dx,0dh int 21h lea dx,d3 mov ah,9 int 21h mov ax,c

10、ount call out10 pop dx pop ax retqiugeshu endp输出个数和子程序qiuhe proc near push ax push dx mov ah,2h mov dx,0ah int 21h mov dx,0dh int 21h lea dx,d2 mov ah,9 int 21h mov ax,sum call out10 pop dx pop ax retqiuhe endp end、运行结果3. 模型机设计、实验目的a.掌握模型机的基本原理和结构b.掌握机器指令与微程序的对应关系;c.掌握机器指令的执行流程;、实验原理 图1 模型机示意图图1中所示模

11、型机包括运算器、存储器、微控器、输入设备、输出设备以及寄存器。这些部件的动作控制信号都有微控器根据微指令产生。需要特别说明的是由机器指令构成的程序存放在存储器中,而每条机器指令对应的微程序存储在微控器中的存储器中。、实验内容a.选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中b.搭建实验流程:根据原理图1和电路图(见附件),将已选择的组件进行连线。c.输入机器指令:选择菜单中的“工具”,再选择“模型机调试”,在指令输入窗口中输入如下指令:0000000000010000000010010010000000001011001100000000101101000000000000000

12、0000001本实验设计机器指令程序如下:地址(二进制)内容(二进制)助记符说明0000 00000000 0000IN R0“INPUT DEVICE”-R00000 00010001 0000ADD 0AH,R0R0+0AH-R00000 00100000 10100000 00110010 0000STA R0,0BHR0-0BH0000 01000000 10110000 01010011 0000OUT 0BH0BH-LED0000 01100000 10110000 01110100 0000JMP 00H00H-PC0000 10000000 00000000 1010运算数据自

13、定0000 1011求和结果这里做的是个加法运算,第一个加数已经存入到内存的0000 1010单元中,第二个加数是需要手工输入的。在实验运行面板中点击“运行”按钮,选择“输入”芯片,设置输入的数据后,双击连接“输入”芯片的单脉冲,这样第二个加数就设置好了。在实验运行面板中双击连续脉冲,模型机便开始工作,观察各个芯片的状态。或者在模型机调试窗口中(如图2所示)点击“指令执行”选项卡,在模型机调试窗口中点击“下一时钟”,模型机机执行到下一个时钟,点击“下一微指令”,模型机机执行到下一个微指令,点击“下一指令”,模型机机执行到下一条指令。观察各个芯片的状态,思考模型机的运行原理。、实验结果四、实验总结 经过两周的课程设计,明显感觉到自己用汇编语言编程能力的提高,虽然在课程设计中间遇到很多问题,但是经过耐心的查阅资料和反复检查终于解决了问题。例如求素数和Fibonacci数都遇到了一个共同的难题,就是十进制输出问题。显示100以内的素数和时,由于素数和只有四位,就想着先除以1000得到的商就是千位数字,然后依次除以100、10、1分别得到百位十位和个位数字。但是用同样的思想输出第35个Fibonacci数时遇到了问题,由于第35个Fibonacci数已经超过了2的16次方,所以产生了溢出。现在需要想出另一种显示十

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论