微机原理第一次实验

合集下载

微机原理实验报告材料

微机原理实验报告材料

微机原理实验报告班级:指导老师:学号:姓名:实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序框图图 3-1四、参考程序清单DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验结果与分析这次实验依次将相加数与被加数存入AL,BL,依次从低位向高位相加,然后把结果放在内存中。

微机原理实验报告讲解

微机原理实验报告讲解

《微机原理实验》课程实验研究性学习手册姓名学号班级微机教师微机实验老师时间2014年12月上课时间10-13周实验一:I/O地址译码与交通灯控制实验一、实验目的1、掌握并行接口8255的基本原理2、掌握8255的编程方法3、掌握利用X86 汇编语言技巧二、实验内容如图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。

编程使六个灯按交通灯变化规律燃灭。

三、编程提示1、8255 控制寄存器端口地址 28BHA 口的地址 288HC 口的地址 28AH2、十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。

(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。

(3)南北路口的红灯、东西路口的绿灯同时亮3秒左右。

(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。

(5)转(1)重复。

四、参考流程图五、实验源程序CODE SEGMENTASSUME CS:CODESTART: MOV DX, 0EC0BH ;8255初始化,写控制寄存器MOV AL,10010000B ;OUT DX,ALFIRST: MOV DX, 0EC0AH ;C口地址MOV AL,00100100BOUT DX,AL ;南北绿,东西红,写入C口 MOV CX,0 ;送入初值65536(FFFF+1)MOV AX,4000H ;软件长延时DELAY1: DEC AXJNZ DELAY1LOOP DELAY1 ;双重循环MOV BL,5 ;黄灯闪5次SECOND:MOV DX, 0EC0AHMOV AL,01000100BOUT DX,AL ;南北黄,东西红,写入C口 MOV CX,3000H ;写入初值MOV AX,0100H ;延时LI1:DEC AXJNZ LI1LOOP LI1 ;双循环MOV DX, 0EC0AHMOV AL,00000100B ;南北黄灭,写入C口OUT DX,ALMOV CX,3000H ;写入初值MOV AX,0100H ;延时WEN1: DEC AXJNZ WEN1 ;软件短延时LOOP WEN1DEC BLJNZ SECOND ;黄灯闪5次THIRD: MOV DX, 0EC0AH ;写入C口MOV AL,10000001BOUT DX,AL ;南北红,东西绿,写入C口 MOV CX,0 ;送初值65536MOV AX,4000H ;软件长延时DELAY2: DEC AXJNZ DELAY2LOOP DELAY2MOV BL,5 ;黄灯闪5次FORTH: MOV DX, 0EC0AH ;写入C口MOV AL,10000010BOUT DX,AL ;南北红,东西黄,写入C口MOV CX,3000H ;送初值MOV AX,0100H ;短延时LI2:DEC AXJNZ LI2 ;软件短延时LOOP LI2MOV DX, 0EC0AH ;C口MOV AL,10000000BOUT DX,AL ;东西黄灭,写入C口MOV CX,3000H ;送初值MOV AX,0100H ;短延时WEN2: DEC AXJNZ WEN2LOOP WEN2DEC BLJNZ FORTH ;黄灯闪5次MOV DL,0FFHMOV AH,06HINT 21H ;执行键盘输入操作JZ FIRST ;若没有输入,继续循环;若有输入,返回操作系统MOV AH,4CHINT 21H ;返回操作系统CODE ENDS六、实验遇到的问题和解决方法问题:绿灯灭后黄灯没有出现闪烁的效果,一直保持常亮解决方法:修改程序,通过利用异或和循环指令使绿灯灭、红灯亮后,黄灯口的状态从0到1循环变换,并通过调用延迟子程序,从而实现人眼可辨的黄灯闪的效果。

西安交通大学微机原理第一次实验报告

西安交通大学微机原理第一次实验报告

微型计算机原理与接口技术第一次实验报告实验者姓名:实验者学号:所在班级:报告完成日期:20年月日实验二分支程序的设计一、实验目的1.学习提示信息的显示及键盘输入字符的方法。

2.掌握分支程序的设计方法。

二、实验内容在提示信息下,从键盘输入原码表示的二位十六进制有符号数。

当此数大于0时,屏幕显示此数为正数;当此数小于0时,屏幕显示此数为负数;当此数等于0时,屏幕显示此数为零。

三、实验调试过程利用-u命令进行反汇编,结果如下。

三个CMP语句运行完的地址如图所示,第一个CMP运行完的是29H输出结果的地址如下图所示:首先对输入为负数时进行验证:输入FFH,设置一个断点在29H,利用-t命令观察跳转,结果如图:可以看到,程序最终正确的转入输出负的分支。

再输入正数11H,利用-t观察整个比较过程如下:可以看到,程序最终正确的转入输出正的分支。

最后输入00H,利用-t观察整个比较过程如下:可以看到,程序最终正确的转入输出0的分支。

四、实验框图及程序代码实验框图:程序代码:CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDA TA SEGMENT;定义结果信息MESS1 DB 'INPUT DATA:',0DH,0AH,'$'MESS2 DB 'THIS DATA IS+',0DH,0AH,'$'MESS3 DB 'THIS DATA IS-',0DH,0AH,'$'MESS4 DB 'THIS DATA IS ZERO',0DH,0AH,'$'DA TABUF DB 3 ;定义最大可输入字符长度ACTLEN DB ? ;实际输入字符长度STRING DB 3 DUP(?) ;输入字符缓冲区DA TA ENDSSSEG SEGMENT PARA STACK 'STACK'DB 50 DUP(0)SSEG ENDSCODE SEGMENTASSUME CS:CODE,SS:SSEG,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV AX,SSEGMOV SS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21HMOV AH,0AHMOV DX,OFFSET DATABUFINT 21HCRLFMOV AL,STRINGCMP AL,38HJAE ISNEGCMP AL,30HJNZ ISPOSMOV AL,[STRING+1]CMP AL,30HJNZ ISPOSJMP ISZEROISPOS:MOV DX,OFFSET MESS2MOV AH,09HINT 21HJMP DONEISNEG:MOV DX,OFFSET MESS3MOV AH,09HINT 21HJMP DONEISZERO:MOV DX,OFFSET MESS4MOV AH,09HINT 21HJMP DONEDONE:MOV AX,4C00HINT 21HCODE ENDSEND START五、实验结果及分析编写的汇编程序EX2.ASM经过汇编MASM与链接LINK生成可执行文件EX2.EXE,测试如下:可见,程序能够正确判断输入数据的正、负、零情况。

北航微机原理实验一报告

北航微机原理实验一报告

微机原理第一次实验报告一、实验目的1. 了解Keil uVision4.0集成开发环境的使用方法。

2. 掌握ARM7TDMI汇编指令的格式和用法,编写ARM汇编语言程序。

3. 完成调试教材第四章例子。

二、实验设备PC计算机,Windows XP操作系统和ARM开发环境。

三、实验步骤用Keil uVision4.0集成开发环境编译、调试汇编语言程序的大致步骤如下:(1)运行软件,打开示例工程;(2)编写或修改程序代码,一定要注意每个工程内只能包含一个源文件;(3)点击“Build”编译工程,修改至无错误;(4)单步调试程序,观察每一步的变量变化情况和最终结果,并思考每一步的结果与预期结果是否相同。

四、实验内容1.例4-2程序代码:课本112-113页,其中有两处改动,一是存储结果的语句“ADD R0,0X4”改为“LDR R0,=Result”,因为程序运行时存储器的地址不确定,按书上的代码可能会取不到正确的地址;二是数据部分“Value DCB #0x59”改为“Value1 DCB 0x59”,应该属于书中印刷错误。

调试结果:2.例4-5程序代码:课本116页,其中有一处改动,把数据段开始的语句“AREA Data1,DATA”向后移动两行或直接去掉,否则输出结果不正确。

调试结果:几个关键步骤执行后的变量值表示如下:3.例4-11程序代码:课本124-125页,其中有几处类似于“LDR R0,[R7+#4]!”改为“LDRR0,[R7,#4]!”,同样把数据段开始的语句“AREA Data1,DATA”向后移动两行或直接去掉。

调试结果:4.习题11程序代码:AREA Reset,CODE,READONLYENTRYMainLDR R1,=ValueLDR R2,=NumberLDR R3,[R2] ;use R3 to countLDR R7,=OneLDR R4,[R7]LDR R7,=TwoLDR R5,[R7]LDR R7,=ThreeLDR R6,[R7]CMP1LDR R0,[R1],#4 ;load number in R0CMP R0,#0BGT ONEBEQ TWOBLT THREEB CMP2ONEADD R4,R4,#1B CMP2TWOADD R5,R5,#1B CMP2THREEADD R6,R6,#1CMP2SUBS R3,R3,#1BNE CMP1LDR R0,=OneSTR R4,[R0]LDR R0,=TwoSTR R5,[R0]LDR R0,=ThreeSTR R6,[R0] ;store resultsHere B HereValue DCD 0x00Number DCD 100One DCD 0Two DCD 0Three DCD 0END调试结果:由于100个数据较多,为了验证程序的正确性,调试时进行了前几个数据的测试。

微机原理与应用第一次实验报告

微机原理与应用第一次实验报告

微机原理与应用实验一、实验二实验报告电92 雷云泽2009010941 实验一简单计算机系统基本模块设计1一、实验目的1.掌握简单计算机系统的指令系统2.掌握简单计算机基本模块的设计方法3.巩固EDA电路仿真和调试的方法二、实验任务包括练习指令编码设计寄存器组模块、设计RAM模块、设计I/O端口及其映射模块、设计和检测ROM模块1.练习指令编码阅读项目任务书的简单计算机指令系统,理解其中的7条R型指令AND、OR、ADD、SUB、ADDC、SUBC、SLT,和2条I型指令的LW、SW。

写出表1-1指令的编码和功能说明。

表1-1 指令编码练习2.设计寄存器组模块(1)任务要求在R类型指令中有3个操作数,其中2个操作数来自寄存器组,作为算术逻辑模块ALU的输入,另1个操作数是ALU 的输出,需写回寄存器组中。

所以,寄存器组模块需要1个写通道、2个读通道。

在寄存器组读操作时,需给出要读寄存器的寄存器号,寄存器组将该寄存器号对应的内容从输出端口输出;在寄存器组写操作中,需给出要写入寄存器的寄存器号和要写入的数据,寄存器组模块将在控制信号的作用下把数据写到指定的寄存器中。

寄存器组模块的封装图见1-1,包含2个异步读通道、1个同步写通道,内部包含4个8位寄存器(分别称为R0、R1、R2、R3,对应的二进制编号分别为00、01、10、11),1个2-4译码器和2个8位4选1多路选择器,其中每个寄存器都是带时钟使能和异步复位端口的8位D 触发器。

可利用QuartusII的MegaWizard下LMP_FF、LMP_DECODE、LPM_MUX进行设计。

寄存器组模块信号说明:输入信号:N1[1..0]:读通道1的寄存器号N2[1..0]:读通道2的寄存器号ND[1..0]:写通道的寄存器号DI[7..0]:写通道的输入数据CLK:时钟脉冲信号,上升沿有效REG_WE:写允许,为1时,在CLK上升沿,将数据DI写入ND指定的寄存器;为“0”时,禁止对寄存器阵列进行写操作。

微机原理第1、2次实验

微机原理第1、2次实验

微机原理第1、2次实验
3.1 IO口读写实验(245、373)
1、实验内容
利用板上集成电路上的资源,扩展一片74HC245,用来读入开关状态;扩展一片74HC373,用来作来输出口,控制8 个LED 灯。

2、实验目的
(1)了解CPU 常用的端口连接总线的方法。

(2)掌握74HC245、74HC373 进行数据读入与输出。

3、实验电路
4、实验流程图
5、实验说明
一般情况下,CPU 的总线会挂有很多器件,如何使这些器件不造成冲突,这就要使用一些总线隔离器件,例如74HC245、74HC373。

74HC245 是三态总线收发器,本实验用它做输入,片选地址为0D0000H-0DFFFFH。

就是用于读入开关值。

74HC373 是数据锁存芯片,通过它作数据的锁住输出。

6、发现的问题
(1)实验指导书中译码器上的连线与代码中的地址不对应,在CPU的输出状态时译码器的Y0为低电平,其他位为高电平,应将原先连接在Y9的线改接到Y0上。

如图:
如果不想改电路,把代码中的OUT373 EQU 8000H改为OUT373 EQU 0E000H,也能使CPU在输出状态时Y9呈现低电平。

如图:
(2)元件与元件直接必须用导线相连,两个元件挨在一起是不算作导通的
否则会出现比如下面这种即使两端有电势差LED灯也不亮的情况
如图,只需将右边改为下图这样即可
添加三极管的目的是为了在8个开关都闭合(向74HC245输入低电平)的情况下,使七段数码管的第一根管脚断路,七段数码管不发光,避免了在8个开关都
闭合时显示数字8。

东南大学微机原理第一次实验报告

《微机实验及课程设计》实验报告实验一汇编语言与程序调试基础姓名:学号:专业:仪器科学与工程学院实验室:计算机硬件技术实验时间: 2014年04月17日报告时间: 2014年04月23日评定成绩:审阅教师:一、实验目的1、了解命令行操作基本方式和基本命令,掌握PC环境下命令行方式的特点2、掌握汇编语言程序指令编辑、宏汇编、连接和运行的基本概念3、熟练掌握动态调试程序TD的常用命令和窗口功能,学会用TD调试程序,修改环境4、学会利用DEBUG或TD检查认识指令功能的正确方法二、实验内容1、必做内容(1)要求计算两个多字节十六进制数之差:3B74AC60F8-20D59E36C1=?式中被减数和减数为5个字节,存放在DATA1和DATA2的内存区,低位在前,高位在后。

试编写减法的程序段,要求相减的结果存放在首址为DATA3的内存区。

(2)以BUFFER为首地址的内存区存放了10个十六位带符号数,编写程序比较它们的大小,找出其中最小的带符号数,存入MIN和MIN+1单元。

2、选做内容(1)两个字符串的长度均为10,首地址分别为STRING1和STRING2,比较两个字符串是否完全相同,如果相同,将BL寄存器置为00H;如果不完全相同,将BL寄存器置为FFH,并将第一个字符串中的第一个不相同字符的地址放在SI寄存器中。

三、实验原理1、实验基本步骤(1)用任意一种文本编辑器(EDIT、NOTEPAD、UltraEDIT等)建立编辑汇编源程序,并将其保存为文件名.asm文件,将其放入带汇编工具的文件夹中(d:\tasm)。

注:文件名不要起的过长,在连接时可能会出现can’t find file的问题。

(2)开始菜单,点运行条目,打入cmd命令进入DOS调试环境。

(3)进入该文件夹(cd d:\tasm) ,键入如下命令开始编辑程序:d:\zxj>edit 文件名.asm(4)将程序保存后返回DOS进行汇编,键入如下命令:d:\zxj>tasm 文件名.asm如果汇编通过,进行下一步,如果出现error,返回3步骤,根据错误的行数进行修改,然后重新汇编,直到不产生error为止。

北理工 自动化 微机原理实验一

微型计算机原理与接口技术软件实验报告(一)班级:学号:姓名:2012.11一、实验题目1、学习并掌握IDE86集成开发环境的使用;2、参考书例4-8,以单步形式观察程序的执行过程;3、修改该程序,求出10个数中的最大值和最小值。

以单步形式观察如何求出最大值、最小值。

二、实验目的1、熟悉IDE86集成开发环境的使用。

2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。

3、锻炼动手编程,独立思考的能力。

三、实验内容3.1题目2设计思路及流程图3.1.1设计思路为实现求和的功能,首先将十个数存入内存中,设定AX为计算结果存储单元,CX为计数器,随后建立循环,将每个数依次加到AX上,直至CX=O,最后将AX中存储的结果移动到SUM存储单元中,结束程序。

3.1.2程序流程图题目2的程序流程图如图1所示:图1题目2的程序流程图3.2题目3设计思路及流程图3.2.1设计思路为实现求取最大值最小值的功能,首先将十个数存入内存中,设定CX为计数器,将第一个数分别存入到MAX与M1N储存单元中,随后建立循环,将每个数依次与MAX(MIN)相比较,如果有大于(小于)MAX(MIN)中的,移入相应存储单元,直至CX=0。

最后将MAX和MIN中存储的数据打印在屏幕上,返回DoS系统,结束程序。

3.2.2程序流程图题目3的程序流程图如图2所示:图2题目3的程序流程图4.1题目2源程序DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h ;10个加数DB67H,78H z89H z9AH z0FDHSUM DW?DATA ENDSCODE SEGMENT ;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,AX ;初始化DSMOVES,AX ;初始化ES1EASUAB1E ;SI指向TAB1EMOVCX,10 ;循环计数器XORAX z AX ;AX为中间结果NEXT: ADDA1z[SI] ;把一个数加到A1中ADCAH z O ;若有进位,则加到AH中INCSI ;指向下一个数1OOPNEXT ;若未加完,继续循环MOVSUM Z AX ;若结束,存结果于SUMH1T ;结束CODE ENDS ;代码段结束END START ;汇编结束DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h;十个待比较数DB67H,78H,89H,9AH,0FDHMAX DB?MIN DB?A DB,MaxOS ;屏幕提示字符串B DBoDH,0AH「Min:,SDATA ENDSCODE SEGMENT;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,A× ;初始化DSMOVES,AX ;初始化ES1EASIJAB1E ;SI指向TAB1EMOVCX z IO ;循环计数器XORAX z AX ;清空AXC1D ;清方向标志DF1ODSB ;A1存入一个8位数MOVMAX z A1 ;将该数送MAXMOVMIN Z A1 ;将该数送MINDECCX ;计数器减一NEXT: 1ODSB ;取下一个数CMPA1Z MAX ;与MAX比较JA1ARGERCMPA1Z MIN JBSMA11ERJMPGOON1ARGER:M0VMAX,A1JMPGOONSM A11ER:MOVMIN z A1GO ON:1OOPNEXT1EADX,AMOVAH z09HINT21HMOVA1z MAXCA11DISP1AY1EADX,BMOVAH z09HINT21HMOVA1z MINCA11DISP1AYMOVAH z4CHINT21H DISP1AYPROCPUSHBXPUSHCX ;若大于转1ARGER;否则与MIN比较;若小于转SMA11ER ;否则转GOON;A1的值存入MAX;转到GOON;A1的值存入MIN;CX-1,若CXWO转NEXT ;获取A的首地址;调用字符串显示功能;MAX值存入A1;调用显示子程序;获取B的首地址;调用字符串显示功能;MIN值存入A1;调用显示子程序;调用返回DoS功能;十六进制显示子程序;保持BX内容;保持CX内容MOVBH z A1MOV CH,2 ;设置循环计数器ROT: MOV C1,4 ;移位次数RO1 BX z C1MOV A1B1AND A1z OFH ;清空A1高四位ADD A1,30H ;0-9转换ASCII码CMP A1z3AHJ1 PRITADD A1,7H ;A-F转换ASCII码PRIT: MOV D1,A1MOV AH,2 ;调用字符显不功能INT 21HDEC CH ;计数器-1JNZ ROT ;CHW0,继续循环POPCX 丁恢复CX内容POPBX 丁恢复BX内容RET ;返回D ISP1AYENDPCODEENDS ;代码段结束END START ;结束五、实验运行结果5.1题目2运行结果前五个数运算结束后寄存器状态:图3 其中ax 值为图4前五个数计算后AX 的值故此时前五个数之和为0104Ho 前八个数运算结束后寄存器状态:×0000图6前八个数计算后AX 的值故此时前八个数之和为026CH o 全部运算结束后,ax 的值为:图7计算结束后AX 的值故十个数的和为0403H 。

北京理工大学微机原理实验报告一

本科实验报告实验名称:基于并行接口的键盘控制实验一基于并行接口的键盘控制一、实验目的1、掌握简单并行接口(8255)的工作原理及使用方法。

2、了解小键盘的工作原理,学会设计小键盘的接口技术。

3、利用8255并行接口芯片作为小键盘的接口电路,掌握它们之间的线路连接。

4、程序实现实验系统上的4×4键盘输入。

二、实验内容与步骤1、接线:PA0-PA3 /8255 接行0-行3 /4×4键盘PB0-PB3 /8255 接列0-列3 /4×4键盘CS /8255 接YI/IO地址2、编程:实现在按下小键盘上的任意键后,在微机屏幕上显示相应的字符。

输入输出关系如下:小键盘显示小键盘显示0 -- 0 8 -- 81 -- 1 9 -- 92 -- 2 A -- A3 -- 3 B -- B4 -- 4 C -- C5 -- 5 D -- D6 -- 6 E -- E7 -- 7 F -- F三、实验原理1、熟悉8255A-5芯片工作方式的设置(1)基本控制字基本控制字的格式如下:各位含义如下:D7:设定工作方式标识,1有效。

D6、D5:A组方式选择:00--方式0 01--方式1 1X—方式2D4:端口A功能(1=输入,0=输出)D3:端口C高四位功能(1=输入,0=输出)(2)端口C置位/复位控制字端口C置位/复位控制字如下:各位含义如下:D7:位置0位置1标识,0有效。

D6、D5、D4:不用,可人任意值。

D3、D2、D1:端口C的每位选择,由111—000分别表示第7位—第0位。

D0:位置1/置0,1=置1,0=置0.2、键盘阵列由8255芯片控制,并将行列连接到8255芯片的A口、B口,还需要连接8255芯片的片选到YI/IO地址(288H~28FH),以使键盘阵列由8255芯片控制。

其线路连接图如下:3、编程方法对于片选信号根据设置的YI/IO地址来具体连接相应的输出端口。

微机原理实验一

微机原理实验一
实验目的:
通过本实验,学生将掌握微机原理的基本知识,了解微机的组成结构和工作原理,掌握微机的基本操作方法。

实验内容:
1. 掌握微机的基本组成结构。

2. 了解微机的工作原理。

3. 学习微机的基本操作方法。

实验仪器和设备:
1. 微机主机。

2. 显示器。

3. 键盘。

4. 鼠标。

实验步骤:
1. 打开微机主机电源,启动计算机。

2. 通过鼠标和键盘操作,进入操作系统界面。

3. 了解微机的基本组成结构和工作原理。

4. 学习并掌握微机的基本操作方法。

实验注意事项:
1. 在操作微机时,要注意避免静电干扰,避免损坏微机设备。

2. 操作过程中要注意操作方法,避免误操作导致系统崩溃。

3. 学习微机原理时,要认真听讲,理解每个步骤的操作原理。

4. 实验结束后,要及时关闭微机电源,做好设备的保养工作。

实验总结:
通过本次实验,我对微机的基本组成结构和工作原理有了更深入的了解,掌握了微机的基本操作方法。

这对我今后的学习和工作都有很大的帮助。

同时,我也意识到了学习微机原理的重要性,希望在今后的学习中能够更加努力,不断提高自己的专业技能。

结语:
微机原理实验一是我们学习过程中的重要一环,通过实际操作,我们更深入地了解了微机的组成结构和工作原理,也掌握了微机的基本操作方法。

希望大家能够认真对待实验,加强对微机原理的学习,为以后的学习和工作打下坚实的基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11
实验一
用ARM汇编实现1+2+….n的运算。 在sum.s文件中,用汇编实现算法核心部分,需添加 的代码参考流程图如下:
R0暂存累加和
RO=R0+R1 YES
结果溢出?
SUM_END YES
NO R1>=N NO R1=R1+1
R1自增1
12
实验二
3、理解C和汇编,并用汇编程序实现字符串拷贝, 并在C程序中调用该汇编程序。 在汇编文件testfile1.s中添加两行汇编代码,分别实 现: 拷贝源字符串的一个字节到R2中 将拷贝的字节复制到目标空间 注意事项: 1.C文件和汇编文件都必须加到工程中去,否则编 译会报错。 2.C文件和汇编文件要拷贝到工程目录下。 3.汇编文件testfile.s文件中的CMP R0,#0 中的R0改为R2
1.在汇编中使用C定义的全局变量 在汇编和C之间进行一些数据的传递,最简便的办法就是 使用全局变量。 在汇编中调用C中定义的全局变量,需要在汇编中 IMPORT 对应的全局变量。 IMPORT 伪指令用于通知编译器要使用的标号或变量在 其他的源文件中定义 。 例如:汇编文件asmfile.s想调用C文件cfile.c中定义的全 局变量a,则在汇编文件asmfile.s前面要添加: IMPORT a
实验一 ARM汇编基础实验
1
一、实验目的
1.掌握ARM汇编指令 2.学习掌握C与汇编混合编程基础 3.熟练使用ARM调试工具RVDS进行调试操作
2
二、实验内容
1.熟悉ARM汇编 2.用ARM汇编实现1+2+...+N 3.C调用汇编实验(实现字符串拷贝功能) 4.汇编调用C实验
5.ARM汇编实现冒泡算法(选做)
13
实验三
4、在汇编中调用C函数。 在汇编文件testfile2.s中相应位置添加汇编代码, 通过调用c函数g()实现1+2+3+glovb1,结果存在R8 中。
14
实验四(选做)
5、用ARM汇编实现冒泡算法。(选做) 这种方法的基本思想:是将待排序的元素看作是竖 着排列的“气泡”,较大的元素比较重,从而要往下 沉。在冒泡排序算法中我们要对这个“气泡”序列处 理若干遍。所谓一遍处理,就是自上向下检查一遍这 个序列,并时刻注意两个相邻的元素的顺序是否正确。 如果发现两个相邻元素的顺序不对,即“轻”的元素 在下面,就交换它们的位置。显然,处理一遍之后, “最重”的元素就沉到了最低位置;处理二遍之后, “次重”的元素就沉到了次低位置。在作第二遍处理 时,由于最低位置上的元素已是“最重”元素,所以 不必检查。一般地,第i遍处理时,不必检查第i低位置 以下的元素,因为经过前面i-1遍的处理,它们已正确 地排好序。
15
冒泡排序算法流程图(参考) -----较小的数值排放到后面
16
七、思考题
1、add替换成adds ,sub替换成subs有什么影响。 2、mov替换成movne有什么影响? 3、STMIA换成STMIB ,STMIA换成STMDA有什么 区别。 4、思考用ARM汇编实现1+3+5+….+(2n+1)或者 2+4+6+…..+2n。 5、实验4中如果去除汇编代码中的“EXPORT strcopy”会有什么现象,为什么? 6、实验5中如果去除汇编代码中的“IMPORT …..” 会有什么现象,为什么?
7
汇编中调用C函数
2.在汇编中调用C的函数 要在汇编中调用C文件中定义的函数,主要做两方面 的工作:
首先:需要在汇编中IMPORT 对应的C函数名。 其次:在调用该C函数之前还需要通过汇编语言传递该函数的 参数。
C和汇编之间的参数传递是通过ATPCS(ARM Thumb Procedure Call Standard)的规定来进行的。 简单的说就是如果函数有不多于四个参数,对应的用 ARM寄存器R0-R3来进行传递,多于4个时借助栈。函 数的返回值通过R0来返回。
10
C中调用汇编函数
/*C file*/ extern void fun (int *p); 声明函数原型 int main() { int i; fun(&i); printf("%d\n", i); return 0; } /*ASMFILE*/ AREA asmfile, CODE, READONLY EXPORT fun 导出函数名 fun MOV R1,#1 STR R1,[R0] MOV PC,LR 返回语句 END
17
1. 用ARM汇编实现以下功能: 座位号为奇数:求0-N之间奇数之和; 座位号为偶数:求0-N之间的偶数之和; N = 100 – 学号后两位; 2.C调用汇编实验(实现字符串拷贝功能) 3.汇编调用C实验 4.ARM汇编实现冒泡算法(选做)
18
3
三、预备知识
1. ARM汇编、 C语言
2. RVDS工具
4
四.实验设备与工具
硬件:PC 机Pentium100 以上 软件:Windows操作系统,RVDS软件
5
五、实验原理
ARM中的C和汇编混合编程:
1.在汇编中使用C定义的全局变量 2.在汇编中调用C的函数 3.在C中调用汇编的函数
6
汇编语言中使用C定义的全局变量
8
/*asmfile */ AREA asmfile, CODE, READONLY IMPORT cFun
ENTRY MOV R0, #22 MOV R1, #11 BL cFun MOV R4,R0 (函数返回值保存在R0中) END
ቤተ መጻሕፍቲ ባይዱ
/*C file, called by asmfile */ int cFun(int a,int b) { return a-b; }
9
C中调用汇编函数
3.在C中调用汇编的函数 在C中调用汇编文件中的函数,要做的主要工作有两 个:
一:是在C中声明函数原型,并加extern关键字; 二:是在汇编中用EXPORT导出函数名,并用该函数名作为汇 编代码段的标识,最后用mov pc,lr返回。然后,就可以 在C中使用该函数了。
EXPORT伪指令用于在程序中声明一个全局的标号, 该标号可在其他的文件中引用。
相关文档
最新文档