《微机原理和应用》实验报告
微机原理及应用实验报告
3•掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分 析等。
2•本实验要求在PC机上进行。
3•本实验只要求在DEBUC调试状态下进行,包括汇编程序,调试程序,执行程序。
4•熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1•实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2•本实验要求在PC机上进行。
3•汇编过程中出现问题,可用DEBU(进行调试。
xorax,ax pushax movax,data movds,ax leasi,data1 leadi,data2 leabx,data3 moval,[si+3] movah,[di+3] an dal,0fh an dah,0fh addal,ah oral,30h mov[bx+3],al moval,[si+2] movah,[di+2] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+2],al moval,[si+1] movah,[di+1] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+1],al moval,[si] movah,[di] an dal,0fh an dah,0fh adcal,ah
;exercize21
微机原理与应用第一次实验报告
微机原理与应用实验一、实验二实验报告电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”时,禁止对寄存器阵列进行写操作。
微机原理与应用第四次实验报告
微机原理与应用第四次实验报告实验6 汇编语言程序结构一、实验目的1.掌握汇编语言项目上机过程2.掌握汇编语言程序结构和常用伪操作3.掌握汇编语言程序设计和调试方法4.掌握MSP430F1xx基本I/O控制方法二、实验任务1.学习汇编指示性语句(可在simulator下完成)在EWH8下新建项目Lab_6,编写下面程序L6_directives.s43(程序清单见后页,该程序只是为了学习指示性语句,程序本身并没有实现什么特定功能),利用project/remove移出模板文件test_asm.s43,点击project/add/files将L6_directives.s43添加到项目中。
1) 利用EW430下的view/memory查看DATA16_C段中定义的存储单元内容和地址,在memory/go的窗口内输入存储单元的符号(如number1)即可查看到该符号对应的存储单元地址和内容,注意在L6_directives.s43程序中使用这些存储单元的内容和地址的方法;利用view/disassembly反汇编程序,对比源程序,利用每条指令后的注释,学习其中用到的指示性操作,如:#define、SFB、SFE、SIZEOF、$等,并能在今后的程序设计中使用。
2) 在L6_directives.s43中,number4和number1分别被定义成了什么?二者有何不同?#number4和#number1这两个操作有何不同?MOV #number4, R7和MOV number4, R7执行的结果会相同吗?为什么?3) 如图6-1所示,点击项目中的msp430x14x.h文件,了解该文件中用到的指示性语句,今后的实验中会用到该文件中的定义。
答2.编程控制实验板上发光二级管按下面4种规律循环显示1) 8个LED灯顺时针一个一个单独点亮,每次只有一个灯亮,其他灯灭;2) 4个奇数号LED灯和4个偶数号LED灯交替点亮各一次;3) 8个LED灯两两点亮,顺序为LED1和8,LED2和7,LED3和6,LED4和5,每次只有两个灯亮,其他灯灭;4) 8个LED灯全亮,全灭注意:在灯的状态变化中,需留一定延时,以便视觉能感受到灯的亮灭,要求编写一延时子程,需要延时的地方,用CALL指令调用该子程。
南理工微机原理与应用实验报告
微机原理与应用综合实验指南1 汇编语言实验1.1 emu8086简介及其汇编语言编程及调试EMU8086是一个基于WINDOWS的8086/88CPU仿真实验程序,它包括编辑器、汇编器、连接器以及跟踪执行器、虚拟外设等模块,支持与8086 /88CPU有关的仿真实验。
EMU8086提供基于汇编语言的程序模板,编程者只需在此基础上,添加有关的核心语句,然后点击相应按钮,系统即可完成编译和链接工作。
若无错误,即可自动进入到指令跟踪运行界面,控制程序以单步或连续方式运行。
通过此界面还可以观察寄存器以及存储器的值,还有指令的机器码及反汇编指令。
1.2实验目的:(1)熟悉汇编语言开发环境(2)掌握Emu8086软件使用方法(3)了解汇编语言的程序结构,调试一个程序并记录程序运行结果。
1.3实验内容及要求:1.3.1 熟悉emu8086的操作1.3.1.1打开桌面上的Emu8086的图标,出现如图所示的对话框:1.3.1.2点击【NEW】,可以选择编程所采用的模板。
1.3.1.2.1 若选择COM template, 则文档模板如下:采用此格式,源代码应该在100H 后加载(即:源代码之前应有ORG 100H),从文件的第一个字节开始执行,它支持DOS和Windows命令提示符。
1.3.1.2.2 若选择EXE模板,则显示下图所示的EXE文件模板:1.3.1.2.3 也可选择BIN模板:1.3.1.2.4 BOOT模板文档如下:1.3.1.3 这里我们点选COM模板,建立一个com类型的程序如下图所示。
1.3.1.4点击compile按钮,出现如下提示:1.3.1.5输入汇编后的二进制文件名称“1_”后,出现如下窗口,意味着汇编成功完成。
1.3.1.6点击“run”按钮,跳出如下图所示的调试窗口,并显示运行结果。
1.3.1.7点击[reload]菜单,重新载入程序,然后点击【single step】单步运行。
微机原理与应用实验报告范文
微机原理与应用实验报告范文姓名:专业:学院:学号:指导老师:微机原理实验一一、实验目的1、熟悉汇编程序调试方法2、80某86指令运用及顺序结构程序设计二、实验设备80某86微型计算机三、实验内容1、编程并调试显示“HelloWord!”字符串的汇编程序STACKSSEGMENTSTACK;堆栈段DW128DUP()STACKSENDSDATASSEGMENT;数据段DATASENDSCODESSEGMENT;代码段ASSUMECS:CODES,DS:DATASSTART:MOVA某,DATAS;初始化MOVDS,A某OUTBUFDB'HelloWord!$'MOVD某,OFFSETOUTBUFMOVAH,9;显示在屏幕上INT21HMOVAH,4CH;退出程序INT21HCODESENDSENDSTART程序调试运行结果如下图:屏幕显示有“HelloWord!”字符串2、A、B、C、D、W是互不相等的在数据段中定义的16位有符号数,并假设加减运算不产生溢出。
编写一个完整段定义的汇编语言程序(包含必要的伪指令),计算W=(A+B)某(C—D)。
STACKSSEGMENTSTACK;堆栈段DW128DUP()STACKSENDSDATASSEGMENT;数据段ADW1HBDW2HCDW5HDDW6HWDW2DUP()DATASENDSCODESSEGMENT;代码段ASSUMECS:CODES,DS:DATASSTART:MOVA某,DATAS;初始化MOVDS,A某MOVA某,AADDA某,BMOVB某,CSUBB某,DIMULB某MOVW,A某MOVW+2,D某MOVAH,4CH;退出程序INT21HCODESENDSENDSTART调试验证结果:W=(A+B)某(C—D)=(1H+2H)某(5H-6H)=-3H,结果存于097E:0008开始的的4个单元里。
微机原理实验二一、实验目的1、熟悉80某86指令及汇编程序调试方法2、掌握分支和循环结构程序设计方法的运用二、实验设备80某86微型计算机三、实验内容3、设某、Y为在数据段中定义的有符号字变量。
微机原理及应用的实验报告
微机原理及应用的实验报告1. 实验介绍在本次实验中,我们将学习微机原理及应用的基本知识,并通过实践来深入理解和应用这些知识。
本实验旨在让我们熟悉微机系统的原理、组成部分以及在实际应用中的一些常见问题和解决方案。
2. 实验目的•了解微机系统的基本组成部分•掌握微处理器的工作原理和操作方法•学习使用汇编语言编写简单的程序•熟悉实验中常用的开发工具和调试技术3. 实验步骤1.首先,我们需要了解微机系统的基本组成部分。
微机系统主要由中央处理器(CPU)、内存、输入输出设备和总线组成。
其中,CPU是微机系统的核心部件,它负责执行程序的指令和处理数据。
内存用于存储程序和数据,输入输出设备用于与外部环境进行数据交互,总线则负责连接各个部件之间的数据传输。
2.接下来,我们将学习微处理器的工作原理和操作方法。
微处理器是CPU的核心组成部分,它由运算器、控制器和寄存器组成。
运算器负责执行各种算术和逻辑运算,控制器负责控制程序的执行流程,寄存器用于保存指令、数据和中间结果。
3.在实验中,我们将学习使用汇编语言编写简单的程序。
汇编语言是一种低级语言,它与机器语言直接相对应。
通过编写汇编程序,我们可以更加直观地了解指令的执行过程以及数据的处理方式。
同时,在实验中我们还将学习如何使用调试工具对程序进行调试和测试。
4.最后,我们将熟悉实验中常用的开发工具和调试技术。
在实验中,我们将使用一些开发工具如汇编器、编译器和调试器来编写、编译和调试程序。
同时,我们还将学习如何使用逻辑分析仪和示波器等调试工具来对程序进行分析和验证。
4. 实验结果通过本次实验,我对微机原理及应用有了更深入的了解。
我学会了微机系统的基本组成部分,了解了微处理器的工作原理和操作方法,并且能够使用汇编语言编写简单的程序。
同时,我还熟悉了实验中常用的开发工具和调试技术,能够使用它们来进行程序的编写、编译和调试。
通过实验,我对微机系统的原理和应用有了更加直观和深入的认识。
微机原理与应用实验报告6
微机原理与应⽤实验报告6实验10 串⾏通信技术⼀、实验⽬的1. 了解异步串⾏通信原理2. 掌握MSP430异步串⾏通信模块及其编程⽅法⼆、实验任务1. PC机上的串⾏通信接⼝及其控制程序的使⽤1.1 任务要求参看讲义,了解PC机的标准异步串⾏接⼝协议,从⽹络学堂下载“串⼝调试助⼿程序”,⽤D型9针孔-孔交叉线连接两台PC机的串⼝,利⽤“串⼝调试助⼿程序”控制PC机串⼝,实现两台PC机之间字符串的传送。
1.2 任务实现已完成。
2. 掌握单⽚机与PC机串⾏通信的硬件连接2.1 任务要求参看附录D实验板原理图,了解MSP430F1xx串⼝模块相关引脚和实验板串⼝接线(插座S3: P3.4-UTXD0,P3.5-URXD0,P3.6-UTXD1,P3.7-URXD1),及其经RS-232电平转换后的信号(插针P7: TXD0,RXD0)。
思考:设计单⽚机与PC机进⾏串⾏通信时,硬件设计有哪些需要注意的事项?2.2 任务实现已完成。
设计需注意硬件相容与软件相容必须⼀致,即硬件相容的地⽅,必须也是软件相容的,⽐如UART0和UART1两个端⼝是针型还是孔型要符合它们的接线⽅式是male还是female (即TxD和RxD已交叉还是未交叉)。
3. 查询⽅式控制串⾏通信的收发3.1 任务要求采⽤查询⽅式控制单⽚机串⼝的接收和发送,在实验板上设计连线,编程实现接收PC 机的串⼝发送来的字符串,字符串以字符@结尾,MCU将接收到的字符串保存在RAM中,收到字符@后,MCU开始将收到的字符串发给PC机,PC机侧⽤串⼝助⼿程序接收并显⽰收到的字符串。
思考:1)如果采⽤单⽚机的串⼝1完成,如何设计实验连线,程序该如何修改?2)如果两个单⽚机进⾏串⾏通信,如何设计连线和编程?3)如果波特率改为2400bps,如何编程完成?波特率改为38400bps呢?3.2 任务实现程序如下所⽰:#include "msp430.h" ; #define controlled include file NAME main ; module namePUBLIC main ; make the main label vissible; outside this moduleORG 0FFFEhDC16 init ; set reset vector to 'init' labelRSEG DATA16_NBUFFER DS8 100RSEG DATA16_Cstringend: DB '@'RSEG CSTACK ; pre-declaration of segmentRSEG CODE ; place program in 'CODE' segment init: MOV #SFE(CSTACK), SP ; set up stack main: NOP ; main programMOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timerCALL #UART0_INITAA: MOV #0,R13MOV #0,R14MOV #BUFFER,R5Rchk: BIT.B #URXIFG0,&IFG1JZ RchkMOV.B &U0RXBUF,BUFFER(R13)CMP.B BUFFER(R13),stringend(R14)JZ TchkINC R13JMP RchkTchk: BIT.B #UTXIFG0,&IFG1JZ TchkMOV.B @R5+,&U0TXBUFDEC R13JNZ TchkJMP AAUART0_INIT:BIS.B #SWRST, &U0CTLBIS.B #BIT4+BIT5, &P3SELBIS.B #PENA+PEV+SPB+CHAR,&U0CTLMOV.B #SSEL0,&U0TCTLBIS.B #URXEIE,&U0RCTLMOV.B #03h,&U0BR0MOV.B #0h,&U0BR1MOV.B #55h,&U0MCTLBIS.B #UTXE0+URXE0, &ME1BIC.B #SWRST,&U0CTLRETEND波特率寄存器值计算如下:N=ACLKbaud rate=327689600=3.41≈03h故U0BR0=03h,U0BR1=0h0.41 ×101起始位+8数据位+1偶校验≈4故U0MCTL=1010101b=55h如果采⽤单⽚机的串⼝1完成,需⽤孔-孔交叉线连接实验板的串⼝1和PC机的串⼝。
微机原理及应用实验报告
实验一 程序调试实验(顺序结构程序设计)一、实验目的: 1.学习及掌握汇编语言源程序的基本结构,明确程序中各段的功能和相互之间的关系。
2.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
3、熟悉和掌握DEBUG 常用命令的使用 二、实验要求:1、上机前,要认真阅读前言和课本相关章节2、上机前,画好流程图,编写好程序3、上机时,注意出现的错误,记录下出错信息,翻译之4、完成好实验报告 三、实验内容:在内存TAB 开始的16个单元连续存放了0-15的平方值(0-225),任给一个数X(0 ≤ X ≤ 15),求X 的平方值,并把结果存放在Y 单元中。
(2).分析X 平方的值是tab 为首地址且x 的值为有效地址中的值。
data segmentx db 8 y db ?data endsstack segment para'stack' db 100 dup(0) stack ends code segmentassume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax xor ax,ax mov al,x lea si,tab add si,ax mov al,[si] mov y,al mov ah,4ch int 21h code ends end start(3).程序调试:4.心得体会了解了顺序结构,掌握了程序的运行,调试。
实验二分支程序设计一、实验目的:熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;掌握条件转移、无条件转移指令的使用方法。
掌握分支程序设计、编写、调试和运行的方法。
二、实验要求:1、上机前认真分析题意,找出算法,画出流程图,依据流程图,编好程序。
2、认真调试程序,对程序可能存在的所有分支都要进行运行,只有这样才能证明程序的正确性。
二、实验内容1.判断X单元数据的奇偶性,若为奇数,将Y单元设置为0FFH,若为偶数,将Y单元清0。
微机原理与应用实验报告4
实验6 汇编语言程序结构一、实验目的1. 掌握汇编语言项目上机过程2. 掌握汇编语言程序结构3. 掌握汇编语言程序设计和调试方法4. 掌握MSP430F1xx基本I/O控制方法二、实验任务1. 学习汇编指示性语句(可在simulator下完成)1.1 任务要求编写下面程序L6_directives.s43(程序清单见后页,该程序只是为了学习指示性语句,程序本身并没有实现什么特定功能),利用project/remove移出模板文件asm.s43,点击project/add/files将L6_directives.s43添加到项目中。
1) 利用EW430下的view/memory查看DATA16_C段中定义的存储单元内容和地址,在memory/go的窗口内输入存储单元的符号(如number1)即可查看到该符号对应的存储单元地址和内容,注意在L6_directives.s43程序中使用这些存储单元的内容和地址的方法;利用view/disassembly反汇编程序,对比源程序,利用每条指令后的注释,学习其中用到的指示性操作,如:如何定义一个存放在RAM中的变量、如何应用该变量,如何定义一个存放在ROM 的常量、如何用该常量等,并能在今后的程序设计中使用。
2) 在L6_directives.s43中,number4和number1分别被定义成了什么?二者有何不同?#number4和#number1这两个操作有何不同?MOV #number4, R7和MOV number4, R7执行的结果会相同吗?为什么?1.2 任务实现1) DATA16_C段中定义的存储单元内容和地址如下所示:在L6_directives. s43程序中使用这些存储单元的内容和地址的方法如下所示:MOV.B number1, R9 ;传送存储单元内容到寄存器中MOV.W number2, R12 ;传送字变量内容到寄存器中用符号寻址方式和寄存器寻址方式,读取存储单元number1和number2的内容到寄存器。
微机原理与应用实验报告_2(汇编语言源程序的建立调试和运行)
西华大学实验报告西华大学实验报告(理工类)开课学院及实验室:电气信息学院6A-217 实验时间:年月日装订线五、实验过程记录(数据、图表、计算等) assume ds:data,cs:code,es:datadata segmentbuffer1 db 1,2,3,4,5 ;定义字节buffer2 db 6,7,8,9,0 ;定义字节buffer3 db 100 dup(?) ;定义字节data endscode segmentmain proc farbegin:push dsmov ax,0000hpush axmov ax,datamov ds,ax ;初始化mov es,axlea si,buffer1 ;将buffer1的地址送给si lea bx,buffer2 ; 将buffer2的地址送给bx add bx,4 ;bx+4code segmentmainproc farassume cs:codego:mov si,300h ;将300h给simov di,400h ;将400h给dimov cx,50 ;将50给cxnext:mov al,[si] ;将[ds]:[si]处内存给al mov [di],al ;将al送到ds:[di]处inc di ;di+1dec cx ;cx-1jnz next ;cx不到0,跳到nextmov si,300h ;再将si给300hmov cx,50 ;cx赋予50cld ;清除方向标志位next1:lodsb ;将si处内存读到almov bl,al ;将al复制到blpush cx ;cx入栈lea di,buffer3 ;将buffer2的地址送给bxmov cx,5 ;循环次数m:mov al,[si] ;将ds:[buffer1]处的值给aladd al,[bx] ;al=al+ds:[buffer2+4]mov [di],al ;将al送给ds[buffer3]处inc si ;si+1dec bx ;bx-1inc di ;di+1dec cx ;cx-1jnz m ;cx>=0 则在m处循环mov ah,4c ;结束int 21hretmain endpcode endsend beginendinc si ;si+1mov cl,4 ;给cl赋4ror al,cl ;al循环右移4位pop cx ;cx出栈call disp ;调用disp子程序mov al,bl ;再将bl给alcall disp ;再次调用dispmov dl,' ' ;给dl赋予‘’mov ah,02 ;ah赋予02int 21h ;调用中断,显示字符loop next1 ;循环50次mov ah,4ch ;ah赋予4chint 21h ;调用中断,结束ret ;子程序返回main endp六、实验结果分析及问题讨论disp procand al,0fh ;屏蔽高4位cmp al,09h ;将al与9比较ja asc ;大于9跳到ascor al,30h ;小于9,加30hjmp do0 ;跳到doasc:add al,'A'-0ah ;al加‘a’到10的ASCII do0:mov dl,al ;将al送到dlmov ah,02 ;ah赋予02int 21h ;调用中断,显示字符ret ;子程序返回disp endpcode endsend go。
微机原理与应用实验二报告
实验3第四章书后练习10题
三、实验过程
四、实验结论和体会
《微机原理与应用》课程实验报告
实验名称
分支程序设计
实验序号
二
实验日期
姓名
院系
班级
学号
专业
指导教师
成绩
一、实验目的及要求程序设计方法。据定义方法,利用不同的寻址方式传送数据。
二、实验内容
实验1分类统计字符个数
(1)题目:
分类统计字符个数COUNT_CHAR
(2)实验要求:
程序需进入turbo debug运行并查看计数结果。
实验2显示月份名
(1)题目:
显示月份名direct
(2)实验要求:
程序要求根据用户键入的月份数在终端上显示该月的英文缩写名。
(3)提示
程序可建立一个月份表:
MONTABDB‘JAN’
DB‘FEB’
DB‘MAR’
┇
可以看出,‘JAN’的地址为MONTAB+0,‘FEB’的地址为MONTAB+3,‘MAR’的地址为MONTAB+6,……,根据用户对给定的月份数可以计算出与其对应的表格地址,计算方法是
程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。
(3)提示:
程序可采用0AH功能调用把键入字符直接送到缓冲区中,然后再逐个取出分类计数。也可采用01H功能调用在接收字符后先分类计数然后再存入缓冲区中。
微机原理及应用实验报告
实验报告课程名称实验日期学生专业学生学号学生姓名教师姓名成绩南京理工大学机械工程学院实验一DEBUG命令及其操作一、实验目的1.熟练掌握debug的常用命令,学会用debug来调试程序。
2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3.掌握各种寻址方法以及简单指令的执行过程。
二、实验要求1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。
2.本实验要求在PC机上进行。
3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。
三、实验内容实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。
答:1运行结果:.2.小结debug常用命令及使用体会a 汇编d显示内存单元内容e修改单元内存内容g执行命令t单步(或多步)调试n指定文件路径文件名(含扩展名)u反汇编r查看寄存器值及修改l加载程序w写盘命令体会:●实验内容2设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
实验报告要求:1.写出完成上述功能的程序段;2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值答:●实验内容3设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元装入0AH,0BH,0CH,0DH,0EH。
在DEBUG状态下送入下面的程序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?A100 ;给各内存单元赋值Mov di,0300Mov dx,0aMov cx,51oop1:mov[di],dxInc diInc dx1oop loop1程序清单如下:寻址方式和AX的内容MOV BX,0300 立即寻址MOV SI,0002 立即寻址MOV AX,BX 寄存器寻址AX: 0300MOV AX,0304H 立即寻址AX:0304MOV AX,[0304H] 存储器直接寻址AX:ds:0304 内存单元的内容0EH MOV AX,[BX] 寄存器间接寻址AX:ds:0300 内存单元的内容0AH MOV AX,0001[BX] 基址相对寻址AX:ds:0301 内存单元的内容0BH MOV AX,[BX][SI] 基址变址寻址AX:ds:0302 内存单元的内容0CH MOV AX,0001[BX][SI] 基址变址寻址AX:ds:0303内存单元的内容0DH 实验内容4设AX=0002H,编写程序将AX的内容乘10,要求用移位的方法完成。
微机原理与应用实验报告
微机原理及应用实验报告班级:机械1301班:黄佳清学号: 0801130117座位号:中南大学机电工程学院实验一单片机仿真开发机操作和MCS-51指令系统应用一.实验目的1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整;2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编;3、掌握程序的调试和运行的各种方法。
三.实验容及步骤(完成分值:60分)本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真1.新建工程项目2.设置工程文件参数3.编写新程序事例4.调试程序直至能够运行出结果。
四.实验程序AJMP MAINORG 0030HMAIN: MOV R0,#20HMOV R2,#0FHMOV A,#00HA1: MOV R0,AINC R0INC ADJNZ R2,A1MOV R0,#20H ;暂停,观察并记录!MOV DPTR,#7000HMOV R2,#0FHA2: MOV A,R0MOVX DPTR,A INC R0INC DPTRDJNZ R2,A2MOV R0,#030H ;断点,观察并记录!MOV DPTR,#7000HMOV R2,#0FHA3: MOVX A,DPTRMOVX R0,AINC R0INC DPTRDJNZ R2,A3DO: LJMP DOEND ;部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。
五、附加题1. 将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光标3.4.修改程序,实现新功能实现倒序数据转移程序AJMPMAINORG 0030HMAIN: MOV R0,#40HMOV R2,#0FHMOV A,#00HA1: MOV R0,ADEC R0INC ADJNZ R2,A1MOV R0,#30HMOV DPTR,#7000HMOV R2,#0FHA2: MOV A,R0MOVX DPTR,AINC R0INC DPTRDJNZ R2,A2MOV R0,#030HMOV DPTR,#7000HMOV R2,#0FHA3: MOVX A,DPTRMOVX R0,AINC R0INC DPTRDJNZ R2,A3DO: LJMP DOEND实验二程序设计一、实验目的1、掌握MCS-51单片机指令系统及用汇编语言编程技巧;2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。
微机原理及应用实验报告
微机原理及应用实验报告实验名称:微机原理及应用实验实验目的:通过实际操作,学习微机原理及应用,了解微机硬件组成和工作原理,掌握微机汇编语言的基本操作及应用。
实验器材与软件:电脑、汇编语言编译软件、实验板、示波器。
实验内容:1.微机硬件组成及工作原理-学习微机硬件包括中央处理器(CPU)、存储器(RAM和ROM)、输入输出设备(I/O)等组成部分。
-了解CPU的工作原理,包括指令译码、执行和数据传输。
-掌握存储器的分类和作用,了解RAM的读写操作和ROM的存储功能。
-理解输入输出设备的工作原理,例如键盘、显示器、串口等。
2.微机汇编语言基础-学习汇编语言的基本语法和指令格式。
-掌握汇编语言中的数据存储和操作方法。
-学习汇编语言的控制结构,包括顺序、选择和循环结构。
3.实验操作-实验前准备:连接实验板、示波器和电脑,启动汇编语言编译软件。
-编写简单的汇编程序,例如实现两个数字相加的功能。
-编译和调试汇编程序,观察电路的输出情况。
-修改程序代码,实现其他功能,例如实现数字的乘法和除法。
实验结果与分析:根据实验内容,我们成功学习了微机硬件组成和工作原理,掌握了汇编语言的基础知识并进行了实际操作。
在实验过程中,我们发现CPU是整个微机系统的核心,通过执行指令和数据操作来实现各种功能。
存储器用于存储程序和数据,RAM可以读写操作,而ROM只能读取。
输入输出设备是与外部环境进行数据交互的媒介。
通过编写简单的汇编程序,例如实现两个数字相加的功能,我们深入了解了汇编语言的语法和指令格式。
在编译和调试过程中,我们发现对于了解指令执行的效率和结果的正确性非常重要。
在修改程序代码的过程中,我们扩展了功能,例如实现数字的乘法和除法。
在这个过程中,我们学会了如何在程序中使用循环结构和控制结构。
总结与心得:通过本次实验,我们深入了解了微机原理及应用的相关知识。
通过实际操作,我们掌握了微机的硬件组成和工作原理,学会了使用汇编语言编写和调试程序。
微机原理与应用-实验报告
《微机原理与应用》实验报告姓名:***学号:**********年级:2014专业:电子2016年春季学期实验一.熟悉单片机开发环境1.功能要求在 P1 端口接8 个LED,并编程依次循环点亮。
要求用软件延时程序控制LED 的亮灭时间,并能精确地计算和用软件测量延时时间。
2.硬件原理3.程序清单ORG 0000HLJMP STARTORG 0030HSTART: MOV R2,#8MOV A,#01H LOOP1: MOV P1,ALCALL DELAY RL ADJNZ R2,LOOP1 MOV R2,#8RR ALOOP2: MOV P1,ALCALL DELAY RR ADJNZ R2,LOOP2 LJMP STARTDELAY: MOV R5,#20 D1: MOV R6,#80 D2: MOV R7,#248 DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND4.实验心得首次接触开发板,通过实验1加强了对单片机的了解,学会使用仿真软件,学会搭线的各种技巧,并且掌握了LED亮灭的原理。
实验二.并行口输入输出实验——循环彩灯控制1.功能要求P1 口接8 个开关,P0 口接8 个灯,每个开关对应一个灯,实时读取开关状态,开关闭合时,灯亮。
开关断开时,灯灭。
用5 个开关K0~K4,控制P0 口所接8 个灯的循环,各开关的功能要求如下:(1)K1~K2 分别选择灯的四种闪动方式;(2)K3 用于控制灯的循环方向(顺时针或逆时针);(3)K4 用于选择灯的两种循环速度;(4)K0 用于引发外部中断,在外部中断子程序中,读取通过K1-K4 所设定 的循环彩灯的工作方式,并按所设定的工作方式控制彩灯运行。
当K0 没有引发 中断时,保持上一次的循环方式。
2.硬件原理3.程序清单ORG 0000HLJMP MAINDELAY2: MOV R0,#200 D4: MOV R1,#200ORG 0003HLJMP INTERRUPTORG 0030HMAIN: SETB EX0SETB IT0SETB EAMOV A,#01HA1: MOV P0,AJB 20H.2,B1JNB 20H.2,B2A2: JB 20H.3,LOOP11 JNB 20H.3,LOOP22 B1: LCALL DELAY1LJMP A2B2: LCALL DELAY2LJMP A2LOOP11: RL ALJMP A1LOOP22: RR ALJMP A1ORG 0600HDELAY1: MOV R0,#100D1: MOV R1,#100D2: MOV R2,#10D3: DJNZ R2,D3DJNZ R1,D2DJNZ R0 ,D1RET4.实验心得开始熟悉开发板,通过实验2加强了对单片机的了解,学会中断程序的书写方法,学会搭线的各种技巧,并且掌握了跑马灯工作的原理。
微机原理与应用实验报告-汇编语言程序设计
实验报告册课程名称:微机原理指导老师:班级:姓名:学号:学期:20 19 —20 20 学年第学期实验目录实验一:汇编语言程序设计实验二:实验三:实验四:实验五:实验六:姓名:成绩:实验一汇编语言程序设计一、实验目的1、学习8088汇编语言程序的基本结构和程序设计的基本方法。
2、熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的全过程。
3、掌握DEBUG基本指令及其使用方法。
二、实验内容编写程序,将80H-8FH共16个字节数据写入数据段1000H偏移地址开始的16个内存单元中。
三、实验步骤1、进入编程环境,编写、汇编、链接、运行汇编语言源程序。
2、利用DEBUG指令,对程序进行调试。
四、实验程序实验代码如下:;将80H-8FH共16个字节数据写入数据段1000H偏移地址开始的16个内存单元中。
DATAS SEGMENTDATA DB80H,81H,82H,83H,84H,85H,86H,87H,88H,89H,8AH,8BH,8CH,8DH,8EH,8FH;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV ES,AXMOV SI,OFFSET DATAMOV DI,1000HMOV CX,16CLDREP MOVSB;此处输入代码段代码HLTMOV AH,4CHINT 21HCODES ENDSEND START五、实验结果将80H-8FH送入1000H-1016H内存段的结果:3.实验小结进一步巩固了数据的一般传送以及体会到了数据块传送的便利之处,进一熟悉了MASM软件的操作和DEBUG命令的使用。
微机原理实验报告
测控11《微机原理与应用》实验报告要求
重申上课时已经提出的实验要求:完成AD和DA实验,并用AD或DA模块结合其它一到二个硬件模块(不可以是8个LED模块、AD实验不可以用其实验上的静态显示驱动)设计实验,调试并完成实验报告。
实验报告格式如下:
一、设计题目
二、设计要求
三、设计的作用及目的
四、所用仪器设备
五、具体设计
1、硬件设计图
2、软件流程图
3、程序代码
六、调试过程、现象、出现的问题及解决方法
七、心得体会
源程序代码可以打印,其它部分必须手写完成,手写部分页数不少于3页(不含源程序页)。
报告由班长收齐,在12月25日16:30之前上交至科技楼315。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
je exit
cmp al,'S'
jne goback
inc si
mov al,ENG[si]
cmp al,'U'
中国石油大学(华东)现代远程教育
实验报告
课程名称:微机原理及应用
实验名称:循环程序设计
实验形式:在线模拟+现场实践
提交形式:在线提交实验报告
学生:褚东学 号:02
年级专业层次:17电气自动化技术高起专
学习中心:枣庄函授站(新)
提交时间:2018年7月10日
一、实验目的
1.掌握单重循环及多重循环的程序设计方法;
incsi
loopagain
jmpoutput2
output1:
cmpdi,0
jnzbegin
jmpaa
output2:
leadx,str1
movah,09
int21h
jmpexit
aa:
leadx,str4
movah,09
int21h
movax,9999h
data segment
arraydw12,78,55,4,125,96
maxdw?
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
movsi,0
movax,array[si]
movcx,5
again:
addsi,2
deccx
2.学会针对不同的问题,选用不同的组织循环的方法;
3.进一步熟悉利用DEBUG程序、CODEVIEW调试程序的方法,并检查和验证结果的正确性。
二、实验容
1. 已知字数组定义如下:ARRAY DW 12,78,55,4,125,96
MAX DW ?
编制程序求出该ARRAY数组中的最大数放入MAX单元。
a:
movcx,9999h
b:
loopb
decax
jnza
exit:
movah,4ch
int21h
codeends
endstart
3.有一个首地址为NUM的N字无序无符号整数数组,编制程序采用选择排序法使该数组中的数按照从小到大的次序排序输出。
data segment
arraydw22,31,10,5,1,66,136,99
data ends
codesegment
mainprocfar
assumecs:code,ds:data
start:movax,data
movds,ax
movdi,0
again:
movsi,di
next:
movax,array[di]
addsi,2
cmpsi,16
jaexit
cmpax,array[si]
str4db0dh,0ah,'wrong 3 times,program will be over$'
data ends
codesegment
assumecs:code,ds:data
start:movax,data
movds,ax
movdi,3
begin:
decdi
leadx,str3
movah,09h
dw 40h dup(?)
top label word
sta ends
datarea segment
ENG db 'I ALWAYS WATCH THE NBA GAMES .ESPECIALLY I SUPPORT FOR THE SUN TEAM$'
total dw ?
num db 'SUN:$'
jbes0
popdx
popcx
popbx
popax
ret
outputendp
codeends
endstart
4.设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,统计其中单词的个数,并查出单词SUN在该文中的出现次数,并以格式“SUN:××××”显示出次数。
sta segment stack
datarea ends
code segment
assume ds:datarea,ss:sta,cs:code
main proc far
mov ax,sta
mov ss,ax
lea sp,top
mov ax,datarea
mov ds,ax
xor bx,bx
xor ax,ax
mov si,0
l0: mov al,ENG[si]
int21h
leadx,input
movah,0ah
int21h
movsi,0
moval,input[si+1]
cmpal,count
jnzoutput1
movsi,0
movcx,count
again:
moval,password[si]
movbl,input[si+2]
cmpal,bl
jnzoutput1
jcxzexit
cmpax,array[si]
jaagain
movax,array[si]
jmpagain
exit:
movmax,ax
movah,02h
int21h
movah,4ch
int21h
codeends
endstart
2. 预留字符串口令,输入口令串与预留密码串比较。若匹配则显示“MATCH!CONGRATULATION”,否则显示“NOMATCH!”,并让用户重新输入,程序能对口令进行测试,但测试次数最多3次,若3次输入密码皆错,给出相应的提示信息,程序退出。
jbenext
xchgax,array[si]
movarray[di],ax
jmpnext
exit:
adddi,2
cmpdi,16
jbagain
calloutput
movah,4ch
int21h
mainendp
outputprocnear
pushax
pushbx
pushcx
pushdx
movdi,0
s0:
movax,array[bx]
movcx,sp
s1:
movdx,0
movdi,10
divdi
pushdx
cmpax,0
jas1
s2:
popax
addax,30h
movdl,al
movah,02h
int21h
cmpsp,cx
jbs2
addbx,2
movdx,','
movah,02h
int21h
cmpbx,15
data segment
passworddb'123456'
inputdb20,?,20 dup(?)
countequ6
str1db0dh,0ah,'match!congratulation$'
str2db0dh,0ah,'no match!please input again:$'
str3db0dh,0ah,'please intout you password:$'