计算机原理课程设计.doc_第1页
计算机原理课程设计.doc_第2页
计算机原理课程设计.doc_第3页
计算机原理课程设计.doc_第4页
计算机原理课程设计.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

大连理工大学本科实验报告课程名称 : 计算机原理课程设计学院(系): 专 业 : 班 级 : 学 号 : 学生姓名 : 镜花水月 此报告为本人拙作,仅供参考第一部分汇编语言程序设计设计题目一:用减奇数法开平方一、实验目的:1.进一步了解8086/8088CPU指令系统。2.了解计算机取指令、执行指令的工作过程。3.掌握调试用户程序的方法。二、程序清单:;只计算0-99的整数开平方,保留一位小数next macro;换行mov dl,0dhmov ah,02hint 21hmov dl,0ahmov ah,02hint 21hendmdata segmentinputdbinput the number(0=n100)-$outputdbthe square root is -$warningdbthe input is illegal$ndw?countdw?data endsstack segmentsta db 256 dup(0)stack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axlea dx,input;显示input字符串mov ah,09hint 21hmov count,0read:;输入符合要求的数字mov ah,01hint 21hcmp al,1bh;按ESC即退出je walecmp al,0dh;输入Enter后,跳入equal分支je equalcmp al,0;输入字符判定是否是数字jb warn;不是数字进入warn分支cmp al,9ja warninc count;计算输入次数,不能大于2次sub al,30hcmp count,01h;输入第一个字符,跳入fuzhi分支je fuzhicmp count,02h;输入第二个字符,跳入jiafa分支je jiafaja warn;输入第三个字符,跳入warn分支wale:mov ah,4ch;结束程序int 21hfuzhi:;将输入的第一个字符,放进内存数n中mov ah,00hmov n,axjmp readjiafa:;将输入的第一个数字乘以10,加上输入的第二个数字,结果放入内存数n中mov ah,00hmov dx,nmov bx,nsal bx,1mov cl,3sal dx,cladd dx,bxadd dx,axmov n,dxjmp readwarn:;输入错误,发出warningnextlea dx,warningmov ah,09hint 21hnextjmp start;跳到开头,重新开始equal:;如果输入的第一个字符就是Enter,跳入输入错误分支warncmp count,0je warnjmp cal;否则跳入计算分支calcal:nextlea dx,outputmov ah,09hint 21hmov dx,n;将内存数n乘以100,以便于计算小数点后一位mov bx,dxsal dx,1mov cl,3sal bx,cladd dx,bxmov ax,dxmov cl,3sal dx,1sal ax,cladd dx,ax;将最后结果放入dx寄存器mov cl,0mov bx,1jis:;用dx减去奇数bx,求开平方,减法运算次数放入cl中sub dx,bxjae jih;dx减去bx大于0,跳入jih分支xor al,al;al清零bcdm:;二进制换成bcd码,将cl变成al中的bcd码,便于运算add al,1daadec cljnz bcdmmov bl,al;al中的高四位代表开平方后的整数部分mov cl,4shr al,cladd al,30hmov dl,almov ah,02h;输出整数部分int 21hmov dl,2eh;输出小数点mov ah,02hint 21hand bl,0fh;输出al中的第四位,即小数部分add bl,30hmov dl,blmov ah,02hint 21hnextjmp start;跳到开头,接受输入jih:inc cladd bx,2;奇数每次加2jmp jiscode endsend start三,实验结果:设计题目二:求长度为8的无符号字节序列中的最大值和最小值一、实验目的:1.进一步了解8086/8088CPU指令系统。 2.了解计算机取指令、执行指令的工作过程。 3 .掌握调试用户程序的方法。二、程序清单next macro;换行mov dl,0dhmov ah,02hint 21hmov dl,0ahmov ah,02hint 21hendmdata segmentdata1 db 4h,6h,3h,7h,9h,8h,2h,5h data2 db Max is:$ data3 db Min is:$n db ?data endsstack segmentduizhan db 256 dup(0)stack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov si,offset data1mov bl,5hdayu:;获取最大数mov al,sixiyu:cmp bl,si;判定是否是最后一个数字,如果是就跳入jies分支je jiesinc sicmp al,si;比较al和si,如果al大于si,就跳到xiyu分支,否则就把si赋予aljb dayujmp xiyujies:;最大数在al中,将其保存在内存数n中mov n,allea dx,data2 mov ah,09hint 21hadd n,30h;打印最大数mov dl,nmov ah,02hint 21hnextmov si,offset data1haha:;获取最小数mov cl,sihehe:cmp bl,si;判定是否是最后一个数字,如果是就跳入jis分支je jisinc sicmp cl,si;比较cl和si,如果cl小于si,就跳到hehe分支,否则就把si赋予clja hahajmp hehejis:;最小数在cl中lea dx,data3 mov ah,09hint 21hadd cl,30hmov dl,cl;打印最小数mov ah,02hint 21hmov ah,01hint 21hmov ah,4chint 21hcode endsend start三、实验结果:设计题目三:计算20个成绩的平均值一、实验目的:1.进一步了解8086/8088CPU指令系统。2.了解计算机取指令、执行指令的工作过程。 3 .掌握调试用户程序的方法。二、程序清单:data segmentdata1 db 34h,56h,59h,61h,49h,47h,27h,38h,46h,60h,60h,58h,53h,45h,43h,37h,35h,29h,25h,44hdata2 db the 20 scores-$data3 db the average score-$data endsstack segmentduizhan db 256 dup(0)stack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axlea dx,data2mov ah,09hint 21hmov si,offset data1sta:mov bl,si;将20个16进制数字化成10进制,并显示出来xor al,albcdm:add al,1daadec bljnz bcdm;将二进制化成bcd码mov bh,al;bcd码高四位表示十位mov cl,4shr al,cladd al,30h;将高四位加上30h,变成数字字符,调用21h中断,显示出来mov dl,almov ah,02hint 21hand bh,0fh;bcd码低四位表示个位,加上30h,显示出来add bh,30hmov dl,bhmov ah,02hint 21hcmp si,0012h;当si大于18时,跳入next分支ja nextmov dl,2ch;打印数字之间的分隔符,逗号,mov ah,02hint 21hinc sijmp stanext:mov dl,0ah;换行mov ah,02hint 21hmov dl,0dhmov ah,02hint 21hlea dx,data3mov ah,09hint 21hmov ax,0mov si,offset data1jiaf:;将20个数加起来,放入ax中mov bh,0mov bl,siadd ax,bxcmp si,0012h;当si大于18时,跳入haha分支ja hahainc sijmp jiafhaha:mov bl,14h;将加法的和除以20div blmov bl,al;将商放入bl中xor al,al;al清零bcdt:;二进制变成bcd码,结果放入al中add al,1daadec bljnz bcdtmov bl,al;al的高四位表示平均数的十位mov cl,4shr al,cladd al,30hmov dl,almov ah,02hint 21hand bl,0fh;al的低四位表示平均数的个位add bl,30hmov dl,blmov ah,02hint 21hmov ah,01hint 21hmov ah,4chint 21hcode endsend start三,实验结果:第二部分接口的五个基本实验实验一:8255并行接口实验一、实验目的:1,学习利用并行接口芯片8255构成并行接口电路的基本方法2,熟悉掌握并行接口芯片8255的基本性能及在实际应用中硬件连接初始化编程方法。二、实验要求 编写程序,使8255的PB口为输出口,PA口为输入口,从PA口将K0-K7作为一个字节读入,再从PB口输出这一反码字节。三、参考程序CODE SEGMENTASSUME CS:CODESTART:MOV DX,21BH MOV AL,90HOUT DX,AL BG: MOV DX,218HIN AL,DXMOV DX,219HOUT DX,ALJMP BGCODE ENDSEND START四、实验现象:输入一个字节后显示这一字节的反码实验二:8255并行接口实验一、实验目的:1,了解PC机的中断结构及8259中断控制器的初始化2,熟悉8259中断控制器的工作原理和硬件连接方法3,了解8259的应用和硬件编程方法二、实验要求 编写中断实验程序,主程序使8255的PB口为输出口,输出0FFH,L0-L7指示灯全亮,中断服务程序从PB口输出0FH,L0-L3亮,L4-L7灭,并延时一段时间后返回主程序。三、参考程序INT0 EQU 220hINT1 EQU 221hINT10 EQU 228hINT11 EQU 229hSTACK SEGMENTSTA DB 50 DUP(?)TOPEQULENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART: CLI MOV AX,TOP MOV SP,AX push ds MOV AX,0000H;SET IRQ0 MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,0000H MOV SI,20H MOV SI,AX MOV AX,CS MOV SI,22H MOV SI,AX pop ds MOV AL,13H ;ICW1 MOV DX,INT0 OUT DX,AL MOV AL,8 ;ICW2 MOV DX,INT1 OUT DX,AL mov cx,0fffhloop $ MOV AL,9 ;ICW4 MOV DX,INT1 OUT DX,AL mov cx,0fffhloop $ MOV DX,INT1 MOV AL,0FEH ;OCW1 OUT DX,AL mov cx,0fffhloop $ MOV DX,INT0 MOV AL,20H OUT DX,AL mov cx,0fffhloop $ MOV AL,13H ;ICW1 MOV DX,INT10 OUT DX,AL MOV AL,8 ;ICW2 MOV DX,INT11 OUT DX,AL mov cx,0fffhloop $ MOV AL,9 ;ICW4 MOV DX,INT11 OUT DX,AL mov cx,0fffhloop $ MOV DX,INT11 MOV AL,0FFH ;OCW1 OUT DX,AL mov cx,0fffhloop $ MOV DX,INT10 MOV AL,20H OUT DX,AL mov cx,0fffhloop $ STI MOV DX,21BHMOV AL,90HOUT DX,ALDSP:MOV AL,0FFHMOV DX,219HOUT DX,AL JMP DSPIRQ0: STImov cx,0FFFFHLOOP $MOV AL,0FHMOV DX,219HOUT DX,AL MOV DX,INT0 MOV AL,20H OUT DX,ALmov cx,0FFFFHLOOP $mov cx,0FFFFHLOOP $ IRET code endsend start四、实验现象:L0-L7指示灯全亮,按下单脉冲源后L0-L3亮,L4-L7灭,并延时一段时间后L0-L7指示灯全亮。实验三:定时计数器实验一、实验目的:1,了解定时器8253的初始化及用法2,会用逻辑笔观察8253的工作状态二、实验要求 编写程序,使8253定时器2工作在方式3下三、参考程序TIM_CTL EQU 203HTIMER0 EQU 200HTIMER1 EQU 201HTIMER2 EQU 202HMODE23 EQU 0B6HMODE13 EQU 76HCODE SEGMENTASSUME CS:CODESTART:TT: CLI MOV DX,TIM_CTL MOV AL,MODE23 OUT DX,AL MOV DX,TIMER2 MOV AL,0FFh OUT DX,AL MOV AL,0FFh OUT DX,ALWT: JMP WTCODE ENDSEND START四、实验现象:K0打开,逻辑笔红绿变化实验四:A/D转换接口实验一、实验目的:1,了解模/数转换的工作原理2,掌握0809的使用方法二、实验要求 编写程序,用0809的IN0通道采集数据并在数码管上显示。三、参考程序B8279 EQU 212HD8279 EQU 210HLED0 EQU 00 LED1 EQU 38H data segmentLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H DB 5EH,79H,71Hdata endsCODE SEGMENTASSUME CS:CODE,DS:dataSTART: MOV DX,B8279 MOV AL,0D0H OUT DX,AL MOV CX,0FFFFH LOOP $ MOV DX,B8279 MOV AL,LED0 OUT DX,AL MOV AL,LED1 OUT DX,AL MOV DX,B8279 MOV AL,95H OUT DX,AL MOV DX,D8279 MOV AL,40H OUT DX,AL MOV DX,D8279 MOV AL,5eH OUT DX,AL MOV DX,D8279 MOV AL,77H OUT DX,AL TT: MOV DX,230H OUT DX,AL MOV CX,0FFFFH LOOP $ MOV DX,B8279 MOV AL,83H OUT DX,AL MOV DX,230H IN AL,DX AND AL,0FH LEA BX,LED XLAT MOV DX,D8279 OUT DX,AL MOV DX,B8279 MOV AL,84H OUT DX,AL MOV DX,230H IN AL,DX MOV CL,4H ROR AL,CL AND AL,0FH LEA BX,LED XLAT MOV DX,D8279 OUT DX,AL jmp TT CODE ENDSEND START 四、实验现象: 高五位显示Ad-XX。旋转电位器按钮,改变模拟量大小,转换值XX在00-FF范围内变化。实验五:步进电机一、实验目的:1,了解步进电机的工作原理,以及脉冲分配概念2,掌握计算机控制步进电机的方法二、实验要求 编写程序,通过8255控制步进电机旋转。三、参考程序CODE SEGMENTCODE SEGMENTASSUME CS:CODESTART:MOV DX,21BH MOV AL,90HOUT DX,ALBG: MOV DX,218HIN AL,DXCMP AL,01HJNZC2MOV BX,0FFFFHJMP WORKC2:CMP AL,02HJNZC4MOV BX,07FFFHJMP WORKC4:CMP AL,04HJNZC8MOV BX,0FFFHJMP WORKC8:CMP AL,08HJNZCCMOV BX,07FFHJMP WORKCC: MOV AL,00HMOV DX,219HOUT DX,ALJMP BGWORK: MOV AL,01HMOV DX,219HOUT DX,ALMOV CX,BXLOOP $ MOV AL,03HMOV DX,219HOUT DX,ALMOV CX,BXLOOP $MOV AL,02HMOV DX,219HOUT DX,ALMOV CX,BXLOOP $ MOV AL,06HMOV DX,219HOUT DX,ALMOV CX,BXLOOP $MOV AL,04HMOV DX,219HOUT DX,ALMOV CX,BXLOOP $MOV AL,0CHMOV DX,219HOUT DX,ALMOV CX,BXLOOP $MOV AL,08HMOV DX,219HOUT DX,ALMOV CX,BXLOOP $ MOV AL,09HMOV DX,219HOUT DX,ALMOV CX,BXLOOP $JMP BGCODE ENDSEND START四、实验现象:扳动K0-K3可控制步进电机的转速,K0-K3电动机转速依次提高。第三部分综合设计性实验一、 主要仪器设备8255并行接口芯片,输出灯,输入开关,8253定时器,8259中断控制器,芯片2003和步进电机等。二、设计题目: 测量检测及顺序控制实验三、设计要求:1.写一个顺序控制程序,要求输出一个控制字,就必须查询相应的一种输入状态字。查到相应的输入状态字后,在输出下一个输出状态字,以此类推实现顺序控制。2.按照状态表编写控制步进电机程序及定时器的控制程序(步进电机每一步间隔时间用定时器定时)。3.增加一个复位按键,利用试验台上的脉冲控制键,要求在顺序控制过程中,复位中断在任何一步都可以产生,复位控制过程能按正常顺序控制路径反向顺序返回(要求顺序返回时,如果步进电机没有归零,必须使步进电机归零,然后按复位顺序一步一步退回原位)。 四、设计结果的简要说明:序号D7 D6 D5 D4 D3 D2 D1 D01234567891011121314151 1 0 0 0 0 0 00 1 1 0 0 0 0 00 0 1 1 0 0 0 0步进电机正转1000步0 0 0 1 1 0 0 00 0 0 0 1 1 0 00 0 0 0 0 1 1 00 0 0 0 0 0 1 11 0 0 0 0 0 0 11 1 1 1 0 0 0 01 1 1 0 0 0 0 1步进电机反转1000步0 0 1 1 0 0 1 10 0 0 1 1 1 0 00 0 0 0 0 1 1 1输出状态表 输入状态表序号D7 D6 D5 D4 D3 D2 D1 D01234567891011121314151 1 0 0 0 1 0 10 1 1 0 0 0 1 10 1 0 1 1 0 0 0步进电机正转1000步0 1 1 0 1 0 1 00 0 1 1 1 0 0 00 0 1 1 0 1 1 11 1 1 1 0 0 0 01 1 1 0 0 0 1 11 1 1 0 0 0 1 00 0 1 1 1 1 1 1步进电机反转1000步0 0 1 1 1 0 0 10 0 1 1 1 0 1 11 1 0 0 0 0 0 0 1.程序启动后,输出灯显示输出状态表第一行,此时查询输入,若为第一行则显示输出状态表的下一行,以此类推。2.输出为第三行时,输入第三行数据后输出显示停留在第三行,步进电机开始正转,达到1000步后输出转入第四行并开始查询第四行输入。步进电机反转控制程序时序可同理可得。3.复位控制:按下复位按键后,复位中断程序对一些标志数进行设置,然后检测步进电机的步数,如果步数为零,则退出中断,否则电机先快速归零,然后退出中断。退出中断后,由于标志数的设置,进入按键复位过程中,即按正常顺序控制路径反向顺序返回,当反向输入为输入序列的序号16,即00000111时,输出为输出序列的序号1,即11000101,这时对标志数清零,复位过程结束,重新进入正常顺序控制过程中。五、系统电路:六、程序中主要的变量单元、子程序定义及说明DATA1存放输入状态表DATA2存放输出状态表TABLE1步进电机正转脉冲规律表TABLE2步进电机反转脉冲规律表INT_08复位中断服务程序,中断类型码为08INT_09步进电机控制中断服务程序,中断类型码09BL标志数,BL=0电机反转,BL=1电机正转BH标志数,BH=0,不复位,BH=1,复位过程中L标志数,按键复位过程开始时用于对SI进行一次减1七、程序流程图、程序清单程序清单:INT0 EQU 220hINT1 EQU 221hTIMER EQU 203HTIMER2 EQU 202HSTACK SEGMENTSTA DB 50 DUP(?)TOPEQULENGTH STASTACK ENDSDATA SEGMENTDATA1 DB 0C0H,60H,30H,18H,0CH,06H,03H,81H,0F0H,0E1H,33H,1CH,07HDATA2 DB 0C5H,63H,58H,6AH,38H,37H,0F0H,0E3H,0E2H,3FH,39H,3BH,0C0HTABLE1 DB 01H,03H,02H,06H,04H,0CH,08H,09HTABLE2 DB 01H,09H,08H,0CH,04H,06H,02H,03HN DW ?M DW ?L DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: CLI MOV AX,TOP MOV SP,AX PUSH DS MOV AX,0000H MOV DS,AX MOV AX,OFFSET INT_08;复位中断 ADD AX,0000H MOV SI,20H MOV SI,AX MOV AX,CS MOV SI,22H MOV SI,AX MOV AX,0000H MOV DS,AX MOV AX,OFFSET INT_09;步进电机延时中断 ADD AX,0000H MOV SI,24H MOV SI,AX MOV AX,CS MOV SI,26H MOV SI,AX POP DSMOV DX,TIMERMOV AL,0B6HOUT DX,ALMOV DX,TIMER2MOV AL,00hOUT DX,ALMOV AL,0FhOUT DX,AL MOV AL,13H MOV DX,INT0 OUT DX,AL MOV AL,8 MOV DX,INT1 OUT DX,AL MOV AL,9 MOV DX,INT1 OUT DX,AL MOV DX,INT1 MOV AL,0FEH OUT DX,ALMOV DX,21BHMOV AL,90HOUT DX,ALSTAR:MOV AL,0C5H;初始化B口输出和标志数MOV DX,219HOUT DX,ALMOV BH,0;BH=0表示没有复位,BH=1复位MOV CX,0;CX表示电机步数MOV L,0;一个标志数STIMOV SI,OFFSET DATA1INPUT:MOV DX,218HIN AL,DXCMP BH,1;判定是否按了复位键JZ DENYICMP AL,SI;判定是否符合顺序控制的输入JZ LOOP1JMP INPUT;否则重新输入DENYI:;按键复位过程中CMP L,1JZ YIQICMP AL,SI;比较输入与要求的数值JZ LOOP2JMP INPUTXIAY:MOV DX,218H;接受按键输入 IN AL,DX CMP AL,07H;如果输入为07H,重新初始化JZ STARJMP XIAY YIQI:CMP SI,0;如果刚刚初始化就复位,就重新初始化JZ STARMOV L,0;否则令L=0DEC SI;将SI减1,使SI符合复位的顺序要求CMP AL,SI;判定输入是否满足复位顺序JZ LOOP2JMP INPUTLOOP2: MOV DI,OFFSET DATA2 INC DIADD DI,SI MOV DX,219H;按复位要求输出B口 MOV AL,DI OUT DX,AL CMP SI,0;判定SI是否为0 JZ XIAYDEC SI;将SI减1,满足复位后反向输入的要求 JMP INPUTLOOP1: ;正常顺序控制过程MOV DI,OFFSET DATA2 INC SI;输入顺序的序列号SI加1CMP SI,13;如果SI=13,重新初始化JZ STARMOV N,SI;将SI保存到内存数N中CMP SI,3;如果SI=3,步进电机正转1000步JZ JIACMP SI,9;同理,步进电机反转1000步JZ BUJIAADD DI,SI;8255的B口输出 MOV DX,219H MOV AL,DI OUT DX,AL JMP INPUT HEHA:MOV SI,N;将内存数N重新赋值给SI ADD DI,SI MO

温馨提示

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

评论

0/150

提交评论