大连理工大学计算机原理实验报告

合集下载

大连理工大学计算机网络实验报告

大连理工大学计算机网络实验报告

大连理工大学本科实验报告课程名称:计算机网络实验学院(系):电信学部专业:自动化班级:学号:学生姓名:2014年11月23日大连理工大学实验预习报告学院(系):专业:班级:姓名:学号:组:___实验时间:实验室:实验台:指导教师签字:成绩:实验一:网络硬件环境准备实验一、实验目的和要求准备计算机网络实验所用到的计算机、网络设备和工具。

二、实验设备1.网络传输介质在网络中,信息是通过传输介质来传送的,常用的网络传输介质有三种:①金属导体,用电流变化传输信息。

如同轴电缆、双绞线等。

②光纤,用光波传输信息。

如透明玻璃为介质。

③不需要物理连接,用电磁波的辐射传输信息。

如无线电、微波、卫星等。

本实验采用超5类非屏蔽双绞线(UTP)做网络传输介质进行网络连接,最高数据传输速率是100Mbps。

双绞线具有抗干扰性能好、布线方便、价格低、全双工的特点。

适用于较短距离的电话系统和局域网系统。

2.网卡网络接口卡(NIC)也被称为网络适配器,是一种连接设备。

它能够使工作站、服务器、打印机或其他节点通过网络传输介质接收并发送数据。

首先要给PC机装上网卡,打开机箱,把网卡插在白色的PCI插槽里;然后开机,装上驱动程序;网络传输介质的连接器(如双绞线的RJ-45连接器)插入网卡的连接器接口。

三、实验内容制作实验用的双绞线制作两端使用EIA/TIA568B同一标准的正线。

大连理工大学实验报告学院(系):专业:班级:姓名:学号:组:___实验时间:实验室:实验台:指导教师签字:成绩:实验一:网络硬件环境准备实验一、实验目的和要求见预习报告二、实验原理和内容见预习报告三、主要仪器设备双绞线,网线头,电缆测试仪子母机,钳子。

四、实验步骤与操作方法1.制作实验用的双绞线;制作两端使用EIA/TIA568B同一标准的正线。

2.按照线色排好理直、剪齐,能清楚的看到8个线头整齐的顶到最前位置,套管推过止口位置;然后压紧。

3.逐根线检测五、实验结果与分析根据电缆测试仪子母机显示情况,制作一根八根线全部正常的网线六、讨论、建议、质疑大连理工大学实验预习报告学院(系):专业:班级:姓名:学号:组:___实验时间:实验室:实验台:指导教师签字:成绩:实验二:对等网络的建立实验一、实验目的和要求对于电脑数量不多、网络的安全性要求不高的局域网来说,拿出一台独立的电脑来做服务器是比较浪费的,可以采用对等式的网络结构。

计算机原理实验报告

计算机原理实验报告

实验名称:计算机原理实验实验日期:2023年X月X日实验地点:计算机实验室实验目的:1. 理解计算机的基本工作原理和组成结构。

2. 掌握计算机各部件的功能和相互关系。

3. 熟悉计算机指令系统和工作流程。

4. 培养动手能力和实验技能。

实验内容:一、计算机硬件组成实验1. 实验目的:了解计算机硬件的组成和各部件的功能。

2. 实验步骤:(1)观察计算机主机,识别各硬件部件,如CPU、内存、硬盘、显卡等。

(2)了解各硬件部件的功能和相互关系。

(3)拆装计算机,练习硬件组装和维修。

二、计算机指令系统实验1. 实验目的:熟悉计算机指令系统,掌握指令的格式和功能。

2. 实验步骤:(1)学习计算机指令系统的基础知识,了解指令的分类和功能。

(2)分析指令的格式,掌握指令的编码方式。

(3)编写简单的程序,实现指令的功能。

三、计算机工作流程实验1. 实验目的:理解计算机的工作流程,掌握程序执行的过程。

2. 实验步骤:(1)学习计算机工作流程的基本知识,了解程序的加载、执行和存储过程。

(2)观察计算机运行程序的过程,分析程序执行过程中的指令执行顺序。

(3)编写程序,验证程序执行的正确性。

实验结果与分析:一、计算机硬件组成实验实验结果:通过观察和拆装计算机,掌握了计算机硬件的组成和各部件的功能,熟悉了计算机的硬件结构。

分析:计算机硬件是计算机系统的基础,了解硬件组成有助于更好地理解计算机的工作原理。

二、计算机指令系统实验实验结果:学习了计算机指令系统的基础知识,掌握了指令的格式和功能,能够编写简单的程序实现指令的功能。

分析:计算机指令系统是计算机执行程序的基础,熟悉指令系统对于程序设计和开发具有重要意义。

三、计算机工作流程实验实验结果:理解了计算机的工作流程,掌握了程序执行的过程,能够分析程序执行过程中的指令执行顺序。

分析:计算机工作流程是计算机执行程序的关键,了解工作流程有助于优化程序设计和提高程序执行效率。

实验总结:本次计算机原理实验使我对计算机的基本工作原理和组成结构有了更深入的了解。

大连理工大学软件学院计算机组成原理实验一位全加器VHDL语言实现

大连理工大学软件学院计算机组成原理实验一位全加器VHDL语言实现

大连理工大学软件学院计算机组成原理实验一位全加器VHDL语言实现第一篇:大连理工大学软件学院计算机组成原理实验一位全加器VHDL语言实现----------------------Company:--Engineer:----Create Date:18:35:51 04/08/2013--Design Name:--Module Name:testssFile Created--Additional Comments:----------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;----Uncomment the following library declaration if instantiating----any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity testss isPort(end testss;a,b,ci : inSTD_LOGIC;s,c : outSTD_LOGIC);architecture Behavioral of testss issignal x,y:std_logic;beginx <= a xor b;y <= x and ci;s <= x xor ci;c <= y or(a and b);end Behavioral;第二篇:计算机组成原理实验ALU设计module ALU(ALU_OP,AB_SW,F_LED_SW,LED);input[2:0] ALU_OP,AB_SW,F_LED_SW;output[7:0] LED;reg[7:0] LED;reg[31:0] A,B,F;reg OF,ZF;always@(*)beginendalways@(*)beginZF=0;OF=0;case(ALU_OP)3'b000: begin F=A&B;end 3'b001: begin F=A|B;end 3'b010: begin F=A^B;end 3'b011: begin F=~(A|B);end 3'b100: begin {OF,F}=A+B;OF=OF^F[31];end 3'b101: begin {OF,F}=A-B;OF=OF^F[31];end 3'b110: begin F=A3'b000: begin A=32'h0000_0000;B=32'h0000_0000;end 3'b001: begin A=32'h0000_0003;B=32'h0000_0607;end 3'b010: begin A=32'h8000_0000;B=32'h8000_0000;end 3'b011: begin A=32'h7FFF_FFFF;B=32'h7FFF_FFFF;end 3'b100: begin A=32'h8000_0000;B=32'hFFFF_FFFF;end 3'b101: begin A=32'hFFFF_FFFF;B=32'h8000_0000;end 3'b110: begin A=32'h1234_5678;B=32'h3333_2222;end 3'b111: begin A=32'h9ABC_DEF0;B=32'h1111_2222;end endcase endcase if(F==32'b0)ZF=1;endalways@(*)beginend case(F_LED_SW)3'b000: LED=F[7:0];3'b001: LED=F[15:8];3'b010: LED=F[23:16];3'b011: LED=F[31:24];default:begin LED[7]=ZF;LED[0]=OF;LED[6:1]=6'b0;end endcaseendmodule 管脚配置NET “AB_SW[0]” LOC = T10;NET “AB_SW[1]” LOC = T9;NET “AB_SW[2]” LOC = V9;NET “ALU_OP[0]” LOC = M8;NET “ALU_OP[1]” LOC = N8;NET “ALU_OP[2]” LOC = U8;NET “F_LED_SW[0]” LOC = V8;NET “F_LED_SW[1]” LOC = T5;NET “F_LED_SW[2]” LOC = B8;NET “LED[0]” LOC = U16;NET “LED[1]” LOC = V16;NET “LED[2]” LOC = U15;NET “LED[3]” LOC = V15;NET “LED[4]” LOC = M11;NET “LED[5]” LOC = N11;NET “LED[6]” LOC = R11;NET “LED[7]” LOC = T11;寄存器 module jicunqi(input Clk, input Reset, input [4:0] Reg_Addr, input Write_Reg, input [1:0] Sel, input AB, output reg [7:0] LED);reg [31:0] W_Data;wire [31:0] R_Data_A,R_Data_B,LED_Data;REGRU1(Clk,Reset,Reg_Addr,Reg_Addr,Reg_Addr,W_Data,Write_Reg,R_Data_A,R_Data_B);assign LED_Data=AB?R_Data_A : R_Data_B;always @(*)beginW_Data=32'h0000_0000;LED=8'b0000_0000;if(Write_Reg)begincase(Sel)2'b00: W_Data= 32'h1234_5678;2'b01: W_Data= 32'h89AB_CDEF;2'b10: W_Data= 32'h7FFF_FFFF;2'b11: W_Data= 32'hFFFF_FFFF;endcase end elsebegincase(Sel)2'b00: LED=LED_Data[7:0];2'b01: LED=LED_Data[15:8];2'b10: LED=LED_Data[23:16];2'b11: LED=LED_Data[31:24];endcase end end endmodule `timescale 1ns / 1ps // REG.v module REG(input Clk, input Reset, input [4:0] R_Addr_A, input[4:0] R_Addr_B, input [4:0] W_Addr, input [31:0] W_Data, input Write_Reg, output [31:0] R_Data_A, output [31:0] R_Data_B);reg [31:0] REG_Files[0:31];integer i;assign R_Data_A=REG_Files[R_Addr_A];assign R_Data_B=REG_Files[R_Addr_B];always @(posedge Clk or posedge Reset)beginif(Reset)beginfor(i=0;i<=31;i=i+1)REG_Files[i]<=32'h0000_0000;endelsebeginif(Write_Reg)beginREG_Files[W_Addr]<=W_Data;end end end endmodule管脚配置NET “Clk” LOC=“C9”;NET “Reset” LOC=“D9”;NET “Reg_Addr[4]” LOC=“T5”;NET “Reg_Addr[3]” LOC=“V8”;NET “Reg_Addr[2]” LOC=“U8”;NET “Reg_Addr[1]” LOC=“N8”;NET “Reg_Addr[0]” LOC=“M8”;NET “Write_Reg” LOC=“V9”;NET “Sel[1]” LOC=“T9”;NET “Sel[0]” LOC=“T10”;NET “AB” LOC=“A8”;NET “LED[7]” LOC=“T11”;NET “LED[6]” LOC=“R11”;NET “LED[5]” LOC=“N11”;NET “LED[4]” LOC=“M11”;NET “LED[3]” LOC=“V15”;NET “LED[2]” LOC=“U15”;NET “LED[1]” LOC=“V16”;NET “LED[0]” LOC=“U16”;第三篇:_计算机组成原理实验2计算机组成原理实验日志实验题目:进位、移位控制实验实验目的:(1)了解带进位控制的运算器的组成结构;(2)验证带进位控制的运算器的功能。

大连理工大学《计算机网络实验(一)》实验报告及学习要求

大连理工大学《计算机网络实验(一)》实验报告及学习要求

姓名:
报名编号:
学习中间:
层次:(高起专或专升本)
专业:
客观题:谈谈你对本课程学习过程中的心得当会?
试验一:PC的网络衔接及测试
试验意图:
试验疑问评论:
1.T568A 线序和T568B 线序。

2.网线制作过程。

试验二:交流机VLAN的根本装备
试验意图:
试验疑问评论:
1.哪些指令是将Switch B的1-6号端口区分到VLAN2?2. 4台PC机之间可以ping通吗?请写出成果及其缘由。

试验三:路由器静态路由装备
试验意图:
试验疑问评论:
1.路由器静态路由装备试验,为何需求两条装备口电缆,其效果是啥?
2.经过路由器静态路由装备的试验,写出静态路由完成的功用以及静态路由装备的效果。

试验四:生成树协议STP的装备
试验意图:
试验疑问评论:
1.生成树协议界说?
2.写出将4台交流机顺次命名为 SwitchA, SwitchB, SwitchC, 和SwitchD的代码。

试验五:路由器RIP的根本装备
试验意图:
试验疑问评论:
1.怎么发动RIP协议?
2.发动RIP协议之后,路由表详细改变是啥?。

计算机原理实验报告五——综合设计直流电机

计算机原理实验报告五——综合设计直流电机

大连理工大学本科设计报告(计算机原理接口实验综合设计)题目:基于PWM的直流电机调速系统设计课程名称:计算机原理实验学院(系):电子科学与技术学院专业:集成电路设计与集成系统班级:电集1001学号:201081086学生姓名:陈朝吉2012 年12 月26 日题目:基于PWM的直流电机调速系统设计1 设计要求利用实验台上的开关(K7-K0),实现3V直流电机的转速控制。

利用8253产生“准PWM”(占空比50%~0%)波形,不同的占空比影响着直流电机的转速。

通过秒中断服务程序读取K7-0的数据、修改PWM的占空比,实现直流电机的转速控制。

具体要求:1.以8253为核心,通过8253的OUT1输出方式2的方波经反相器后控制电机;a)设置8253的CNT0为方式三,将输入的1MHZ信号进行5000分频,在OUT0上得到200HZ对称方波,送CLK1使用;b)设置8253的CNT1为方式二,利用8253的CNT1的OUT1输出的不对称方波(参见图2.1),经一个反相器输出后,与直流电机连接、控制电机的转速;2.利用D8255A的PA7-PA0做输入,与K7-K0连接。

利用开关数据控制电机的转速。

根据PA的数据设置CNT1的初值在10~2之间变化(共9档速度)、实现电机转速的控制;3. 利用8253的CNT2做秒脉冲发生器(CLK2与OUT0连接以获取200HZ脉冲),在OUT2上输出0.5HZ的周期性方波,并由此方波与主8259的MIR5连接,引发中断服务ISR。

在ISR中对D8255A的PA口进行输入,并根据此数据修改CNT1的初值(PWM的占空比)。

4. 加分题:考虑如何使用一个电位器(替代开关)实现对电机转速的控制,并通过数码管显示相应档速值。

2 设计分析及系统方案设计设计方案分析:根据设计要求,可以8253为中心模块,这里利用AD转换器实现电位器进行调速,显示部分可利用8255作为输出控制芯片,程序编写实现将以中断为主。

计算机原理实验3

计算机原理实验3

大连理工大学实验报告实验室(房间号):420 实验台号码:班级:电英1102 姓名:郑泽亮-201181512 指导教师签字:成绩:实验三汇编语言综合设计——计算学生平均成绩实验一、实验目的1. 熟悉汇编语言程序的使用。

2. 掌握十进制的运算、设计显示程序运行结果的格式。

3. 熟练掌握DOS功能调用二、实验内容编写程序,求30个分数的平均值,并以十进制值表示将结果显示在屏幕上。

显示格式的要求如下:第一行显示:Please input 30 scores: 空格间隔30个成绩第二行显示:The average scores is:求得平均成绩并输出平均成绩三、实验算法说明1.输入十进制数,通过循环使用1号功能,循环30次输入数据2.求和:30次循环求得总成绩。

3.求平均成绩:用div除以30,取商去掉余数,得到平均成绩4.将平均成绩转换成十进制数,循环除10取余数并转换成相应的ascii码,并将其逆序存储起来,从而实现了十进制转化。

5.用9号功能输出相应字符串,并用2号功能通过循环以十进制形式输出平均成绩。

四、实验流程图五、程序清单data segmentarray db 30 dup(?) ;定义可以存储输入30位的空间ascdat db 3 dup(?) ;定义用于输出的3位STRING1 DB '*201181512*','ZhengZeLiang','*2013.11.25*',0dh,0ah, 'Please input 30 scores:',0dh,0ah,'$' ;定义要显示的字符串STRING2 DB 0dh,0ah,'The average scores is:','$'data endscode segmentmain proc farassume ds:data,cs:codeSTART: MOV AX,DATAMOV DS,AXLEA DX,STRING1 ;DX装载字符串首地址MOV AH,9 ;使用9号功能显示字符串INT 21Hlea si,array ;取array首地址,并初始化bl,cxmov bl,0mov cx,30next0: mov AH,1 ;1号功能循环输入INT 21Hcmp al,20H ;与空格的ascii码比较jz next1 ;若为空格则跳转next1SUB AL,30Hmov dl,10PUSH AX ;将AX入栈,保存刚得到的axMOV AL,BLMUL dL ;BL=BL*10MOV BL,ALPOP AXADD BL,AL ;相当于实现BL=BL*10+ALJMP next0 ;直接跳转next0next1: MOV [SI],BL ;将刚得到的数BL存到[SI]INC SIXOR BX,BXLOOP next0 ;循环30次输入30个数lea si,array ;取刚存好数的地址mov cx,30mov ax,0mov dh,0next3: mov dl,[si] ;取[SI]单元赋给dladd ax,dx ;ax=ax+dxinc siloop next3 ;循环30次求和mov bl,30div bl ;除以30求平均数mov ah,0mov si,10lea bx,ascdat+2 ;取ascdat末尾地址hta: xor dx,dx ;DX清零div si ;除10or dl,30h ;余数转换asciimov [bx],dl ;将dl存到[bx]单元dec bxand ax,ax ;ax与自己相与jz hta1 ;全为0结束,跳到htaljmp hta ;直接跳转htahta1: mov cx,3lea si,ascdatLEA DX,STRING2 ;显示string2MOV AH,9INT 21Hnext4: MOV dl,[si] ;将[si]传给dlinc simov ah,02h ;用2号功能依次输出int 21hloop next4 ;循环3次以十进制形式输出平均数mov ax,4c00hint 21hmain endpcode endsend start六.实验结果:。

大连理工大学计算机原理实验综合实验设计报告

大连理工大学计算机原理实验综合实验设计报告
sir0
出口参数
功能 描述
buf
步进电机驱动

步进电机延时

数码管延时

数码管显示
dir,speed,count, 调节电机方向速度,数码
portcl
管的状态,更新 count
dir,speed,count, 调节电机方向速度,数码
portcl
管的状态,更开始
-5-
IO_0809 equ 220h
ioled
equ 230h
data segment
portcl db 0ch,14h,21h,22h,0ffh
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,67h,77h,7ch,39h,5eh,79h,71h
count db ?
;cs
pop ds
push ds
mov ax,0
mov ds,ax
lea ax,cs:int_proc2
mov si,70h
;IR0 中断类型码 70h
add si,si
add si,si
mov ds:[si],ax
push cs
pop ax
mov ds:[si+2],ax
pop ds
;------------1Hz 分频----------
20
21
PA4 PA5 PA6 PA7 /WR RESET GND D0 D1 D2 D3 D4 D5 D6 D7 VCC PB7 PB6 PB5 PB4
D0 D1 D2 D3 D4 D5 D6 D7 CLK0 OUT0 GATE0 GND
1
24
2
23
3 8253 22

大连理工大学软件学院计算机组成原理实验报告

大连理工大学软件学院计算机组成原理实验报告

大连理工大学本科实验报告课程名称:学院(系):专业:班级:学号:学生姓名:年月日实验项目列表大连理工大学实验预习报告学院(系):专业:班级:姓名:学号:组: ___实验时间:实验室:实验台:指导教师签字:成绩:一、部件实验报告1.实验名称:部件实验——总线数据传输实验2.实验目的:了解总线在计算机中的作用及数据传输原理3.实验要求:把内存作为中间介质,完成寄存器间的数据传输4.实验原理图:(P32)5.实验操作步骤(流程图)开始将开关s0-s7置11110000上拨S13、S11s0-s7置10101010上拨S13、S10,下拨S10将开关全部复位上拨S12、S16、S15S11、S10,下拨S10将开关全部复位实验体会、意见、建议体会:通过这次实验,我对总线的作用和数据的传输原理有了初步的了解。

在实验过程中,开关的上拨顺序(有些开关必须先于某些上拨才能正常进行)和复位顺序很重要,一般遵照先拨后复位的顺序进行。

另外S10比较特殊是下降沿有效,所以需拨两次。

意见及建议:关于部件的实验过于简单和单调,建议增加关于部件的实验内容。

大连理工大学实验预习报告学院(系):专业:班级:姓名:学号:组: ___实验时间:实验室:实验台:指导教师签字:成绩:二、8位微程序控制计算机预习报告1 一位乘法程序的 *. LST 文件(要在重要地方加注释行,尽量使原程序易读)1 0000 ORG 02 0000 STRT:3 0000 3C00 MOV R4,#04 0002 3B00 MOV R3,#05 0004 3D0A MOV R5,#106 0006 600000 JKB STRT7 0009 408001 LDA 8001H8 000C 0F MOV R7,A9 000D L1:10 000D 60000D JKB L111 0010 408001 LDA 8001H12 0013 0E MOV R6,A13 0014 3001 MOV A,#414 0016 488002 STA 8002H15 0019 L2:16 0019 680019 JPB L217 001C 300A MOV A,#0AH18 001E 488002 STA 8002H19 0021 L3:21 0024 3010 MOV A,#10H22 0026 27 ADD A,R723 0027 488002 STA 8002H24 002A L4:25 002A 68002A JPB L426 002D 3009 MOV A,#927 002F 488002 STA 8002H28 0032 L5:29 0032 680032 JPB L530 0035 300A MOV A,#0AH31 0037 488002 STA 8002H32 003A L6:33 003A 68003A JPB L634 003D 3010 MOV A,#10H35 003F 26 ADD A,R636 0040 488002 STA 8002H37 0043 L7:38 0043 680043 JPB L739 0046 300A MOV A,#0AH40 0048 488002 STA 8002H41 004B L8:43 004E 300A MOV A,#0AH44 0050 488002 STA 8002H45 0053 L9:46 0053 680053 JPB L947 0056 06 MOV A,R6 ;把R6当作计数器48 0057 3A01 MOV R2,#149 0059 3B00 MOV R3,#00H50 005B L10: ;循环加被乘数,并把结果存在R3中51 005B 2A SUB A,R252 005C 500067 JC L1153 005F 0E MOV R6,A54 0060 03 MOV A,R355 0061 27 ADD A,R756 0062 0B MOV R3,A57 0063 06 MOV A,R658 0064 58005B JMP L1059 0067 L11:60 0067 03 MOV A,R3 ;分离R361 0068 2D SUB A,R562 0069 500073 JC L1264 006D 04 MOV A,R465 006E 22 ADD A,R2 ;计算十位66 006F 0C MOV R4,A ;把十位存入R4中67 0070 580067 JMP L1168 0073 L12:69 0073 04 MOV A,R470 0074 2A SUB A,R2 ;判断十位R4是否为071 0075 50008B JC L1372 0078 03 MOV A,R373 0079 C1:74 0079 680079 JPB C175 007C 488002 STA 8002H76 007F C2:77 007F 68007F JPB C278 0082 3010 MOV A,#10H79 0084 24 ADD A,R480 0085 488002 STA 8002H81 0088 580094 JMP OVER82 008B L13:83 008B 68008B JPB L1384 008E 3010 MOV A,#10H86 0091 488002 STA 8002H87 0094 OVER:88 0094 580000 JMP STRT 2大连理工大学实验报告学院(系):专业:班级:姓名:学号:组: ___实验时间:实验室:实验台:指导教师签字:成绩:三、8位微程序控制计算机实验报告1.实验名称:8位微程序控制计算机实验2.实验目的:了解微程序控制计算机的工作原理及实现方法、初步学会程序的流程图画法及程序的模块化设计、调试方法。

大连理工大学计算机原理实验第一次实验

大连理工大学计算机原理实验第一次实验

大连理工大学实验报告实验室(房间号):420 实验台号码:班级:电通1402 姓名:糜智华指导教师签字:成绩:实验一汇编语言上机操作&动态调试程序DEBUG的使用&运算类程序设计一、实验目的和要求1. 熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序。

2. 熟练掌握宏汇编程序MASM或TASM的使用。

3. 熟练掌握连接程序LINK或TLINK的使用。

4. 了解DEBUG或TD的特点和使用方法。

5. 学习使用DEBUG程序的各种命令。

6. 了解计算机取指令、执行指令的工作过程。

7. 利用DEBUG学习8086/8088CPU指令系统。

8. 掌握用DEBUG调试用户程序的方法。

9. 掌握运算类指令对各状态标识位的影响及其测试方法。

10.掌握使用运算类指令编程及调试方法。

二、实验算法数据段:定义变量buf为平方数0100h,定义变量result为开方数。

堆栈段:不妨取100个单元代码段: start:取数据段段地址并且将bx置1,cx置0。

circle:buf=buf-bx(即奇数bx从1开始)减完后如果buf大于等于零,则bx=bx+2,cx=cx+1,并且重复循环;如果buf小于零则调到over。

over:将cx赋给result,并退出。

三、实验流程图四、程序清单data segment ;数据段buf dw 0100h ;假设变量为0100hresult dw 0000hdata endsssg segment stack ;堆栈段dw 100 dup(0)ssg endscode segment ;代码段assume cs:code,ss:ssg,ds:datastart: mov ax,data ;取数据段段地址mov ds,axmov bx,1 ;bx置1,cx置0mov cx,0circle: sub buf,bx ;buf与bx相减cmp buf,0 ;减完后的buf与零作比较jl over ;(有符号数)小于则跳转add bx,2 ;若大于等于则bx+2,cx+1inc cxjmp circle ;重复循环over: mov result,cx ;将cx赋给resultint 20h ;退出code endsend start五、实验结果与分析(是否达到设计要求、出现的主要问题及解决方法)编译链接结果如图1.1图1.1TD调试运行窗口如图1.2图1.2结果:cx寄存器为0010h,并且存储器里可以看到dw结构的result是第3、4个单元里的内容,即result为0010h。

大连理工大学计算机系统结构实验-实验一

大连理工大学计算机系统结构实验-实验一

大连理工大学实验报告计算机系统结构实验实验一MIPS指令系统和MIPS体系结构学院(系):电子信息与电气工程学部专业:计算机科学与技术学生姓名:班级:学号:大连理工大学Dalian University of Technology实验一MIPS指令系统和MIPS体系结构一、实验目的和要求1. 了解熟悉MIPSsim模拟器。

2. 熟悉MIPS指令系统及其特点。

3. 熟悉MIPS体系结构。

二、实验步骤1、启动MIPSsim。

2、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。

3、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。

4、选择“文件”->“载入程序”选项,加载样例程序alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000000)。

5、查看“寄存器”窗口PC寄存器的值:[PC]= 0x00000000 。

6、执行load和store指令,步骤如下:(1)单步执行一条指令(F7)。

(2)下一条指令地址为= 0x00000004 ,是一条有(有,无)符号载入字节(字节,半字,字)指令。

(3)单步执行一条指令(F7)。

(4)查看R1的值,[R1]=0X FFFFFFFFFFFFFF80 。

(5)下一条指令地址为=0X00000008 ,是一条有(有,无)符号载入字(字节,半字,字)指令。

(6)单步执行1条指令。

(7)查看R1的值,[R1]=0X0000000000000080 。

(8)下一条指令地址为=0X0000000C ,是一条无(有,无)符号载入字(字节,半字,字)指令。

(9)单步执行1条指令。

(10)查看R1的值,[R1]= 0X0000000000000080 。

(11)单步执行1条指令。

(12)下一条指令地址为0X00000014 ,是一条保存字(字节,半字,字)指令。

(13)单步执行一条指令。

(14)查看内存BUFFER处字的值,值为0x00000080 。

《计算机原理实验》(大连理工大学)

《计算机原理实验》(大连理工大学)

大连理工大学本科实验报告课程名称:计算机原理实验学院(系):专业:班级:学号:学生姓名:20 年月日实验项目列表注意:独立完成预习报告和实验操作。

专业:班级:学号:学生签字:联系电话:《计算机原理实验》报告填写要求根据《大连理工大学本科实验报告规范(试行)》提出的各项要求,现规定《计算机原理实验》报告填写要求如下:一、每次实验前必须完成预习报告。

注意:预习报告中的回答问题必须手写,且由学生本人签名。

第一次实验时,课前将预习报告交给实验老师。

每次实验时,课前提交预习报告,没有完成预习报告者不得进行实验。

二、每一个实验项目均须撰写一份实验报告,A4纸打印出来,最后按顺序装订上交。

三、实验报告内容:1、实验目的和要求:写明实验的目的和任务要求;2、实验原理和内容:与实验内容相关的算法描述、程序的结构类型,与实验相关的接口模块功能描述。

3、算法流程:使用流程图对算法进行描述。

流程图应当逻辑正确、简单清晰。

流程图可以采用打印或手工绘制。

4、使用protel等工具绘制实验系统电路图(也可手工绘制)。

系统电路图应正确、工整。

5、程序清单:程序清单一律采用打印的方式,源程序文件的格式要整齐、规范(语句的标号、指令及注释应在不同列中)。

在程序的关键语句上加注释。

相关子程序要在注视中进行功能说明;6、实验结果与分析:明确地写出最后结果(是否实现设计要求等),对实验中所遇到的问题以及解决的方法加以描述;7、实验体会、建议:通过实验所体会的收获。

针对实验内容、教学方法、考核方法等提出需要解决的问题,提出改进建议;8、全部文字叙述内容要求简明扼要,思路清楚、用词规范;9、主要仪器设备:记录主要仪器的名称、型号(包括实验运行软件名称)等10、实验时间:报告中应标明实验的日期(年、月、日;星期;组号)。

四、要求实验报告字迹工整,文字简练,数据齐全,图表规范,计算正确,分析充分、具体、定量。

五、对抄袭“实验预习报告”和“实验报告”或编造原始数据的行为,一经发现以零分处理,并按《大连理工大学学生违记处分规定》第二十六条给予处分。

大连理工微机原理实验步进电机报告

大连理工微机原理实验步进电机报告

大连理工大学本科设计报告(计算机原理接口实验综合设计)题目:步进电机控制系统设计课程名称:计算机原理实验学院(系):电信学院专业:电子信息工程班级:学号:学生姓名:成绩:2015 年月日题目:步进电机控制系统设计1 设计要求利用实验台上的电位器,实现步进电机的转速、转向控制。

具体要求如下:1.利用D8255A的PA0-PA3做输出,输出步进电机的相序、驱动步进电机工作(使用四个LED监视步进电机的相序信号),相序之间的时间决定着步进电机的转速,而间隔时间由延时程序中的CX寄存器的值决定。

2.利用电位器做输入,将电位器与ADC0809的IN0口相连,通过ADC0809将读取到的电压值转化为8位二进制值,根据这个8位二进制值的不同来实现对步进电机的转速、转向控制3.利用8254做秒脉冲发生器,产生约10Hz方波信号。

其中CNT0做分频器:将1MHz信号分频为100Hz;CNT1做秒脉冲输出(10Hz);4.利用386模块的主8259的MIR5做中断请求输入,将CNT1的OUT1秒信号方波作为中断请求信号,引发中断服务ISR;5.在中断服务程序中实现对步进电机的转速、转向实时控制。

方法如下:在ISR中,读取ADC0809转换得到的8位二进制值,并根据此值做如下处理:1)当转换值为00h~7fh时,逆时针旋转,00h时转速最大;2)当转换值为81h~0ffh时,顺时针旋转,0ffh时转速最大;3)当转换值为80h时,停止旋转。

2 设计分析及系统方案设计整个设计是在使用8255输出相序控制步进电机转动的基础上,利用中断实时调整输出相序的时间间隔以及顺序,起到控制步进电机转速和转向的效果。

程序的结构类型属于循环结构。

基础程序部分:该部分是利用8255 A口循环输出8个相序,在循环体中条用子程序delay控制时间间隔,延迟量由CX值决定。

中断程序部分:先安装中断向量,由于386EXCPU的8259初始化的程序已经固化在系统的ROM BIOS中,所以只要把中断类型码35H对应的内存位置上装上中断服务程序的段地址和偏移地址。

大连理工大学计算机组成原理实验报告(二)

大连理工大学计算机组成原理实验报告(二)

大连理工大学实验报告学院(系):电信专业:计算机科学与技术班级:电计1203姓名:刘阳学号:*********指导教师签字:成绩:实验名称脱机运算器实验一、实验操作步骤1.将教学机左下方的5 个拨动开关置为1XX00(单步、16 位、脱机);先按一下“RESET”按键,再按一下“START”按键,进行初始化。

2.接下来,按下表所列的操作在机器上进行运算器脱机实验,将结果填入表中。

通过两个12 位的红色微型开关向运算器提供控制信号,通过16位数据开关向运算器提供数据,通过指示灯观察运算结果及状态标志。

二、实验数据记录或实验结果截图三、实验结果与分析①.R0←1234:通过按钮开关给寄存器R0置数,故I5~I3选择000(R+S),而I2~I0选择111,令R为按钮表示的值1234,S为0。

输出结果为赋值结果1234H。

②.R9←789F:同①,通过按钮开关给寄存器R9置数,故I5~I3选择000(R+S),而I2~I0选择111,令R为按钮表示的值789F,S为0。

输出结果为赋值结果789FH。

③.R0←(¬R0):对R0取非,即对R0与FFFF取异或,故I5~I3选择110(R ⊕S),I2~I0取101,此时按钮开关应全置1。

④.R9←(R9⊕R0):对R9与R0异或,故I5~I3同上选择110(R⊕S),I2~I0选择001,通过将A、B分别置为0和9令两个操作数分别为R0和R9。

⑤.R0←(R0+1):令R0与常数相加,故I5~I3选择000(R+S),I2~I0选择101,令R为按钮表示的值0001,S为A(置为R0地址)。

⑥.R10←R0:将R0的值赋给R10,即R10=R0+0,I5~I3同上选择000(R+S),I2~I0选择110,将R置0、S置0即可。

⑦.R10←R0/2:将R0/2赋给R10,故I8~I6应选择101,令最后赋给B的值为输出的二分之一,I5~I3选择000(R+S),I2~I0选择011,按钮开关置0,即(R0+0)。

大工20春《计算机科学实验》实验报告答案

大工20春《计算机科学实验》实验报告答案

大工20春《计算机科学实验》实验报告答案实验一:XXX实验实验目的:探究XXX的原理和应用。

实验步骤:1. 首先,准备实验所需的材料和工具。

2. 接着,按照实验指导书的要求进行操作。

3. 测试实验结果。

实验结果分析:根据实验结果,可以得出以下结论:- 对于XXX的应用,具有XXX特点。

- 实验结果与理论预期相符。

实验二:XXX实验实验目的:研究XXX的性能和优化方法。

实验步骤:1. 首先,收集实验所需的数据和样本。

2. 接着,设计实验方案并进行实验。

3. 分析实验数据。

实验结果分析:根据实验数据分析,得到以下结论:- XXX的性能受到XXX因素的影响。

- 通过优化方法,可以提高XXX的性能。

实验三:XXX实验实验目的:实现XXX功能并验证其正确性。

实验步骤:1. 首先,了解XXX功能的实现原理。

2. 接着,编写代码实现XXX功能。

3. 运行程序并测试功能的正确性。

实验结果分析:根据实验结果分析,可以得出以下结论:- 实现的XXX功能符合预期要求。

- 通过实验验证,XXX功能的正确性得到确认。

结论大工20春《计算机科学实验》的实验报告详细介绍了三个实验的目的、步骤和结果分析。

通过这些实验,深入了解了XXX的原理、应用、性能和优化方法。

实验结果验证了理论的正确性,为进一步研究和应用XXX提供了基础。

这些实验也加深了对计算机科学领域相关知识的理解和掌握。

> 注意:以上内容仅为示例,具体实验报告内容需要根据实验的具体要求和实际情况进行填写。

大连理工大学计算机原理实验二报告

大连理工大学计算机原理实验二报告

大连理工大学实验报告实验室(房间号):420 实验台号码:4班级:电子1303姓名:指导教师签字:成绩:实验二显示程序编程训练一、实验目的和要求1.掌握在屏幕上显示数据格式的方法2.掌握数据分类的一种方法二、实验内容1.程序的开始必须具备一个字符串输出的功能:输出英文的姓名和学号;2.输出数据总的个数;3.分别输出正数、负数及零数据的个数。

三、实验算法在数据段中定义一个数据串(含有正数和负数),并将统计结果存在三个寄存器(或内存)中,在数据段中定义一个数据串(含有正数、负数和零数据),并将结果利用“字符输出”的DOS功能在屏幕上显示出来,利用“单个字符输入”或“字符串输入”的DOS功能输入建立一个数据串,拼装为N个数据并处理后,利用“字符输出”的DOS功能在屏幕上显示结果。

四、实验流程图五、程序清单data segmentbuf db 80H,7FH,00H,23H,98H,45H,77H,88H,00H,61H count equ $-bufbuf1 db 'my name is litong 201383081',0dh,0ah,'$'buf2 db 0dh,0ah,'$'buf3 db 'number of positive is ','$'buf4 db 'number of negative is ','$'buf5 db 'number of zero is ','$'buf6 db 'number of total is ','$'data1 db ?data2 db ?data3 db ?data4 db ?data endsssg1 segmentdw 100 dup(?)ssg1 endscode segmentassume cs:code,ds:data,ss:ssg1main: mov ax,datamov ds,axlea dx,buf1 ;输出字符串buf1mov ah,09hint 21hmov cx,10lea bx,buflop: mov al,[bx] ;对十个数进行循环比较and al,0ffhmov al,[bx]and al,80hjz posijmp negaa1: inc bxdec cxjcxz nextjmp lopposi: mov dl,data1 ;统计正数的个数送data1 inc dlmov data1,dljmp a1nega: mov dl,data2 ;统计负数的个数送data2 inc dlmov data2,dljmp a1zero: mov dl,data3 ;统计零的个数送data3inc dlmov data3,dljmp a1next: lea dx,buf3 ;输出字符串buf3mov ah,09hint 21hc1:mov si,offset data1 ;输出正数的个数mov al,ds:[si]and al,0f0hmov cl,04hshr al,cladd al,30hmov ah,02hint 21hmov al,ds:[si]and al,0fhadd al,30hmov dl,almov ah,02hint 21hlea dx,buf2mov ah,09hint 21hlea dx,buf4 ;输出字符串buf4mov ah,09hint 21hc2:mov si,offset data2 ;输出负数的个数mov al,ds:[si]and al,0f0hmov cl,04hshr al,cladd al,30hmov dl,almov ah,02hint 21hmov al,ds:[si]and al,0fhadd al,30hmov dl,almov ah,02hint 21hmov ah,09hint 21hlea dx,buf5 ;输出字符串buf5mov ah,09hint 21hc3:mov si,offset data3 ;输出零的个数mov al,ds:[si]and al,0f0hmov cl,04hshr al,cladd al,30hmov dl,almov ah,02hint 21hmov al,ds:[si]and al,0fhadd al,30hmov dl,almov ah,02hint 21hlea dx,buf2mov ah,09hint 21hlea dx,buf6 ;输出字符串buf6mov ah,09hint 21hc4:mov al,10h ;输出数据总个数and al,0f0hmov cl,04hshr al,cladd al,30hmov dl,almov ah,02hint 21hmov al,10hand al,0fhadd al,30hmov dl,almov ah,02hint 21hmov ax,4c00hint 21hcode endsend main六、实验结果与分析运行程序,得到如下结果:由结果可看出,程序具有统计和输出功能,且统计和输出正确,符合要求。

大连理工大学本科实验报告

大连理工大学本科实验报告

大连理工大学本科实验报告题目:8位A\D转换实验(查询方式)步进电机实验课程名称:计算机原理课程设计学院(系):电子信息与电气工程专业:电气工程及其自动化班级:学生姓名:学号:成绩:2010 年12 月13 日1.实验目的1.掌握模/数信号转换的基本原理,掌握ADC0809芯片的应用方法。

2.掌握步进电机的控制方法。

2.实验内容从ADC0809通道0输入+5V可变电压,使用查询方法读取转换数据并在数码管上显示两位16进制数。

实验程序:.model small.386AD_IO EQU 200HLED_IO EQU 210HDATA SEGMENTLEDCODE DB 3FH,06H,5H,4FH,66H,6DH,7DH,07H,7FH,67H,77H,7CH,39H,5EH,79H,71H DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXRPT:MOV DX,AD_IOOUT DX,ALMOV DX,AD_IOADD DX,2L1:IN AL,DXTEST AL,01HJZ L1MOV DX,AD_IOINC DXIN AL,DXCALL DISPJMP RPTDISP PROCMOV SI,OFFSET LEDCODEMOV BX,SIMOV CH,ALMOV CL,4ROR AL,CLAND AL,0FHMOV AH,0ADD,BX,AXMOV AL,[BX]MOV DX,LED_IOOUT DX,ALINC DXNOPOUT DX,ALCALL DELAYMOV AL,CHAND AL,0FHMOV AH,0ADD SI,AXMOV AL,[SI]MOV DX,LED_IOOUT DX,ALMOV AL,01HINC DXOUT DX,ALCALL DELAYRETDISP ENDPDELAY PROCPUSH CXMOV CX,50HX1:LOOP X1POP CXRETDELAY ENDPCODE ENDSEND START利用8255A口控制步进电机的运转。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1 实验任务 (1)2 设计方案 (1)3 设计电路 (3)4设计程序 (5)5 遇到的问题 (2)(1)程序语法方面 (2)(2)运行逻辑方面 (2)(3)软件使用方面 (2)6 何解决问题 (2)(1)程序语法方面 (2)1)寄存器使用时,数据类型不匹配: (2)2)程序越来越大的时候,程序结构混乱: (2)3)基本操作的要求: (3)4)对于中断服务程序、堆栈段以及中断STI指令的理解: (3)(2)运行逻辑方面 (3)1)电梯加速减速在一楼到二楼的特殊情况的考虑问题: (3)2)电梯运行方式的确定问题: (4)3)电梯连续运行时,各种参数的转换问题: (5)4)对于电梯实时运行显示的显示逻辑问题: (5)(3)软件使用方面 (5)1)在使用软件的时候,对于软件设置断点,以及使用断点的问题: (5)2)在软件使用中,经常出现的USB端口缺失,以及软件程序不能发送到实验板中的问题: (6)7 实验体会 (6)1 实验任务本次实验通过汇编语言编程,基本实现电梯的功能:通过在实验板的8位开关进行选择需要到的楼层,步进电机进行旋转,250个脉冲为一层,即电机旋转5.2圈为一层,每次启动,电机由速度为0加速启动,加速到最大速度时,正好达到二楼。

到达目的楼层之前,在距离楼层半层时开始减速,准确到达楼层时停止转动。

其中,当运动为一层时,电梯仅仅加速到最大速度的一半,然后减速,到达目的楼层。

在每次到达目的楼层之后,继续修改目的楼层,可以连续工作。

在工作的过程中,通过数码管实时显示当前的楼层,同时通过LED灯也实时显示楼层情况。

2 设计方案(1)电梯电机驱动部分通过地址200H选中8254定时器芯片,使用定时器0和定时器1对实验板上的1MHz脉冲信号进行分频,通过两个定时器进行分频,之后out1给中断控制器8259,触发中断,在中断中进行参数spnum的自加,在通过这个变量的数值大小与主程序speed的比较来决定主程序是否对步进电机发出相序信号,使其开始转动。

mov ax,speedcmp ax,spnum ;判断现在是否开始发步进电机脉冲时序jna tozero ;可以发脉冲,并且计数值spnum归零jmp go ;不发脉冲,继续进行检测其中,步进电机的驱动信号数组有两个,为了分别实现倒转和正转,分别建立如下两个相序完全相反的数组:data1 db 01h,03h,02h,06h,04h,0ch,08h,09hdata2 db 09h,08h,0ch,04h,06h,02h,03h,01h(2)电梯电机调速部分由(1)可以实现步进电机以一定的转速进行转动,在主程序中,通过修改speed的数值,来决定主程序在于spnum进行比较后主程序发送步进电机驱动相序的频率。

通过检测现在步进电机的行走路程distance,计算出现在的电梯所在楼层数floor,决定现在步进电机的运行状态。

具体逻辑如下:图2. 1 速度与楼层控制逻辑图如图:设定达到最大速度的时候速度参数speed 为100,且经过一层距离之后达到最大速度。

1)在电梯行走一层时,可以看到速度没有加到最大速度,到达最大速度的一半就开始减速,直到达到二楼。

在程序中,检测distance 的数值为半层楼的时候开始减速。

2)当电梯行走路程超过一层之后时,电梯可以达到最高速度,如图2.1可以看到,从二楼开始加速,到达三楼时达到最高速度,目标楼层是7楼,在达到6层是开始减速。

到达7楼准确停速。

(3) 楼层控制部分本程序是可以连续运行的,在初始时设置到达的楼层,到达目的楼层之后,通过开关输入下一次的目的楼层,之后,可以继续到达下一次的目的楼层。

程序中,通过变量distance (步进电机行走路程)计算出现在所在的楼层数floor ,每当到达目的楼层之后,把现在所在楼层存在变量floorbeforeshow 中,在下一次通过开关输入想要楼层之后,判断第二次的目的楼层与原来楼层的相对大小,把差值送给下一次电梯需要行走的路程的目标变量中。

继续进行下面的行走。

(4) 楼层显示部分显示部分分为:小灯LED 楼层模拟显示,以及数码管实时显示当前楼层,LED 默认从1层开始,每经过一层楼,小灯移位;数码管默认从1楼开始,电梯到达几楼就显示几楼的数值,实现了实时显示。

-10900246810速度与楼层关系速度3 设计电路本次实验使用有:(1)定时器芯片8254,本次实验使用的片选地址是220h,使用定时器0和定时器1,分别工作在方式3,采用二进制计数方式,把1MHz的时钟信号分频,并且把out1接入到中断管理芯片8259的主片IR5上,触发中断,在中断服务函数中进行参数spnum 的加一动作。

(2)LED以及LED开关打到CPU控制端时的编码芯片,在程序中选定其地址为200h。

(3)中断管理芯片,8259芯片,但是这个芯片我们并不知道其片选地址,其初始化已经在芯片中集成提前初始化,并不需要我们进行操作,提供给用户的引脚有IR5,本次我们使用IR5引脚来进行中断服务函数的编程。

(4)输入输出接口芯片8255,利用其出入输出缓冲的A、B、C八位端口,设置为A口输出,B口输入,C口输出,分别实现控制步进电机旋转、读取开关状态以及C 口输出到LED灯实现楼层的实时显示。

其中各地址计算如下:表3.1 地址解释地址对应芯片化为2进制200h LED编码芯片0010 0000 0000210h 8255输入输出接口芯片0010 0001 0000220h 8253(8254)定时器芯片0010 0010 0000由上可知,设计电路如下:其中左边是8086最小系统的简化表示,通过锁存器实现了对于地址的单一性选择,从而实现数据传输。

图3 1 系统电路设计4设计程序程序流程图如下:图4. 1 综合题程序流程图表4. 1 参数解释表参数名数据类型意义floorinit db 记录初始从开关读入的需要电梯运行的楼层数floorinitdis dw 读入的电梯运行楼层数折算出来的步进步数distance dw 记录此时从读入目的楼层到运行时的步进数floor db 从distance折算出来的当前楼层floorbeforeshow db 记录上一次电梯到达目的地的楼层数up db 标志位,目的楼层与现在楼层对比控制电机向上向下beforelouceng db 记录上一次开关的位置,决定了连续运行的开始源程序如下:;******************************; 电梯调速,四圈是一层,120步;******************************io_8253_0 equ 200hio_8253_1 equ 201hio_8253_k equ 203hp8255_a equ 210hp8255_b equ 211hp8255_c equ 212hp8255_ctl equ 213hled_cs equ 220h ;同时也是字形端口的地址,位扫描地址为221hdata segmentm ove db 0 ;运动标志位f loorinit db 0 ;目标楼层,会改f loorinitdis dw 0d ata1 db 01h,03h,02h,06h,04h,0ch,08h,09hd ata2 db 09h,08h,0ch,04h,06h,02h,03h,01hd istance dw 0 ;步进的距离,后面可以换成楼层,在中断中更新数值f loor db 0 ;直接存起来现在的楼层f loorbeforeshow db 0l edcode db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,67h,00hl ednow db 0u p db 0b eforelouceng db 0s pnum dw 0 ;记录进入中断次数s peed dw 100 ;速度分频值,数越大速度越慢b uf db 0b ufnum db 0i iii db 00000001bdata endscode segmenta ssume cs:code,ds:datamain:m ov ax,cxm ov ds,axm ov ax,datam ov ds,ax;设置8259中断屏蔽字i n al,21ha nd al,11011111bo ut 21h,alin al, 0a1hand al,0fehout 0a1h,al;设置中断向量表push dsmov bx,0mov ds,bxlea ax,cs:int_proc ;WRITE INTERRUPT PROGRAM EMTRY ADDRESSmov bx,5 ;n=IRxmov si,30h ;base =30Hadd si,bxadd si,si ;type num X 4add si,simov ds:[si],axpush cspop axmov ds:[si+2],axpush cspop axmov ds:[si+2],axpop ds;初始化8255m ov dx,p8255_ctlm ov al,82h ;初始化,方式0,A端口步进电机输出,b端口输入楼层,c端口输出小灯o ut dx,alm ov buf,33h;初始化8253,利用两次的分频m ov dx,io_8253_km ov al,36ho ut dx,alm ov dx,io_8253_0m ov ax,10o ut dx,alm ov al,aho ut dx,alm ov dx,io_8253_km ov al,74ho ut dx,alm ov dx,io_8253_1m ov ax,40o ut dx,alm ov al,aho ut dx,alr un: cli;程序开始,从8255中取出想要去的楼层往上走还是往下走m ov dx,p8255_bi n al,dxm ov beforelouceng,alc mp al,floorbeforeshowj na giveupm ov up,1s ub al,floorbeforeshowm ov floorinit,ald ec alm ov bh,250m ul bha dd ax,125m ov floorinitdis,axj mp out1giveup:m ov up,0s ub floorbeforeshow,alm ov al,floorbeforeshowm ov floorinit,ald ec alm ov bh,250m ul bha dd ax,125m ov floorinitdis,axout1: mov al,bufm ov dx,p8255_ao ut dx,als tic mp up,1j e bxupl ea bx,data2bxup: lea bx,data1 ;把相续代码的地址给bx;**************循环体*********************LLL:;------控制部分,主要是转化现在楼层,以及根据现在楼层设置速度-----m ov ax,speedc mp ax,spnumj na tozeroj mp gotozero: xor ax,axm ov spnum,axm ov al,[bx]nx1: mov dx,p8255_ao ut dx,alc mp up,1j ne nx2i nc bxm ov ah,bufnumi nc ahm ov bufnum,ahm ov al,8c mp al,bufnumj nz nextx or ax,axl ea bx,data1m ov bufnum,alj mp nextnx2:i nc bxm ov ah,bufnumi nc ahm ov bufnum,ahm ov al,8c mp al,bufnumj nz nextx or ax,axl ea bx,data2m ov bufnum,alj mp nextnext: inc distance ;记录步进电机的步数m ov ax,distancem ov ch,250d iv chm ov floor,al;如果目的是2楼c mp floorinit,1j nz next1 ;不等于二,进行下一步的正常启动c mp distance,125j nb shut_2s ub speed, 1c mp speed,20j nb shut_2m ov speed,20shut_2: cmp distance,250j b shutc li ;到了二楼关中断c mp up,1j ne storedown1m ov ah,floora dd floorbeforeshow,ahc all finddownstoredown1: mov ah,floors ub floorbeforeshow,ahc all finddownshut:c mp distance,125j na goa dd speed ,1 ;提高数值减速c mp speed,100j b gom ov speed,100j mp gonext1:;加速阶段c mp distance,250j nb shutdowns ub speed, 1c mp speed,20j nb gom ov speed,20shutdown: mov al,floorinit c mp floor,alj nz shut1c lic mp up,1j ne storedown2m ov ah,floora dd floorbeforeshow,ahc all finddownstoredown2: mov ah,floors ub floorbeforeshow,ahc all finddownm ov move,0shut1: mov ax,floorinitdisc mp distance, axj na goa dd speed ,1 ;提高数值减速c mp speed,100j b gom ov speed,100go:;循环之中显示小灯和数码管c mp up,1j ne show2;ledm ov al, 00000001bm ov ah,floorbeforeshowa dd ah,floorm ov cl,ahr ol al,clm ov dx, p8255_co ut dx,al;数码管m ov al,ahi nc alm ov cl,01hc all dispj mp continueshow2:;ledm ov al, 00000001bm ov ah,floorbeforeshows ub ah,floorm ov cl,ahr ol al,clm ov dx, p8255_co ut dx,al;数码管m ov al,ahi nc alm ov cl,01hc all dispcontinue: jmp lllfinddown procm ov distance,0loop1:;程序开始,从8255中取出想要去的楼层;ledm ov al, 00000001bm ov ah,floorbeforeshowm ov cl,ahr ol al,clm ov dx, p8255_co ut dx,al;数码管m ov al,ahi nc alm ov cl,01hc all dispm ov dx,p8255_bi n al,dxc mp al,beforeloucengj e loop1c mp al,floorbeforeshowj na giveup1m ov beforelouceng,alm ov up,1s ub al,floorbeforeshowm ov floorinit,ald ec alm ov bh,250m ul bha dd ax,125m ov floorinitdis,axj mp out1giveup1:m ov up,0m ov beforelouceng,alm ov cl,floorbeforeshows ub cl,alm ov al,clm ov floorinit,ald ec alm ov bh,250m ul bha dd ax,125 m ov floorinitdis,axj mp out1finddown ENDP;**********数码管显示函数******* DISP PROCpush dxpush bxpush axpush cxmov si,offset ledcodemov bx,simov ah,0add bx,axmov al,[bx]mov dx,led_csout dx,almov al,clinc dxnopnopnopout dx,alpop cxpop axpop bxpop dxRETDISP ENDP;****中断服务函数,控制速度*** int_proc proc farp ush axp ush cxi nc spnumc mp spnum,150j na conm ov spnum,150con:mov al,20ho ut 20h,alp op cxp op axi retint_proc endpcode endse nd main5 遇到的问题(1)程序语法方面1)寄存器使用时,数据类型不匹配;2)程序越来越大的时候,程序结构混乱;3)基本操作的要求,比如乘法MUL指令在AX和AL计算中的区别;4)对于中断服务程序以及中断STI指令的理解。

相关文档
最新文档