文档库 最新最全的文档下载
当前位置:文档库 › 微机原理实验指导书

微机原理实验指导书

微机原理实验指导书
微机原理实验指导书

1 / 14

四. 实验任务

4.1 实验一按键检测和LED 显示

1.实验目的

(1) 掌握STM32的I/O 模块的使用;

(2) 理解独立按键检测和阵列按键检测原理,编程并实现按键检测功能;

(3) 理解八段数码管显示原理,编程并实现数码管的显示;

(4) 熟悉JTAG 调试工具和调试技术。

2.重点、难点

重点:按键检测及数码管显示的实现。

难点:按键去抖技术、在线调试技术。

3.作业及课外学习要求

课前预习,撰写预习报告,课后书写实验报告。

4.实验原理

单微处理器与外部芯片或设备最常见的交互,就是通过对I/O 口的操作实现的。无论MCU 对外界进行何种数字控制,或接受外部的何种数字控制,都可以通过I/O 口进行。键盘、LED 、等外设都是通过I/O 口的输入、输出来进行读取或控制的。LED 显示电路如下。

(1) 独立按键检测原理

图4.1 按键检测基础知识

本实验箱用的按键为弹性按键,存在按下和弹起的抖动问题,可通过延时去抖法实现按键检测。如图4.1中的流程图所示。实验例程参见“实验一_IAR_GPIO_独立按键测试”。 本实验箱独立按键和独立LED 的硬件定义如下:

#define LED0(x) GPIO_WriteBit(GPIOA, GPIO_Pin_8, x)

#define LED1(x) GPIO_WriteBit(GPIOC, GPIO_Pin_9, x)

#define LED2(x) GPIO_WriteBit(GPIOC, GPIO_Pin_8, x)

#define LED3(x) GPIO_WriteBit(GPIOC, GPIO_Pin_7, x)

#define LED4(x) GPIO_WriteBit(GPIOC, GPIO_Pin_6, x)

#define LED5(x) GPIO_WriteBit(GPIOG, GPIO_Pin_7, x)

#define LED6(x) GPIO_WriteBit(GPIOG, GPIO_Pin_6, x)

#define LED7(x) GPIO_WriteBit(GPIOB, GPIO_Pin_0, x)

#define KEY0 GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_8)//读取按键0

#define KEY1 GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_9)//读取按键1

#define KEY2 GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_10)//读取按键2

#define KEY3 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0)//读取按键3

F8

F9

F10

FC0

MCU

STM32

F103ZCT6

(2) 阵列按键检测原理

在MCU系统中键盘中按钮数量较多时,为了减少I/O口的占用,常常将按钮排列成矩阵形式,如下图4.2所示。

图4.2 阵列按键原理图与实物图对应关系

矩阵连接式键盘键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判断按键速度慢。多用于设置数字键,适用于键数多的场合。

按键识别方法:先把某一行置为低电平,其余各行置为高电平,检查各列线电平的变化,如果某列线电平为低电平,则可确定此行此列交叉点处的按键被按下。

实验例程参见“实验一_IAR_GPIO_阵列按键扫描_数码管显示”。

本实验箱阵列按键硬件定义如下:

static struct io_port key_output[4] = { //输出行线

{GPIOF, GPIO_Pin_6},

{GPIOC, GPIO_Pin_10},

{GPIOF, GPIO_Pin_7},

{GPIOC, GPIO_Pin_13}};

static struct io_port key_input[4] = { //输入列线

{GPIOC, GPIO_Pin_14},

{GPIOE, GPIO_Pin_5},

{GPIOC, GPIO_Pin_15},

{GPIOE, GPIO_Pin_6} };

本实验箱8段数码管硬件定义如下:

SEG_led0 --PE2

SEG led1 --PE3

SEG led2 --PB1

SEG led3 --PB8

SEG led4 --PG14

SEG led5 --PG13

SEG led6 --PD2

SEGled_DP --PG11

SEG led_s0 -- PD7

SEG led_s1 --PG9

SEG led_s2 --PD6

SEG led_s3 --PD3

注意:本实验箱的8段数码管为4位一体共阳数码管。数码管与STM32直接相连,用户可通过STM32直接输出信号至数码管。由于七段数码管LED公共端连接到VCC(共阳极),当STM32对应的I/O引脚输出低电平时,对应的七段数码管LED中的LED点亮;当STM32对应的I/O引脚输出高电平时,对应的七段数码管LED中的LED熄灭。通过控制led_s0--led_s3 4个管脚,分时控制4个数码管的亮面,通过视觉暂留效应,达到4个数码管同时显示的效果。

5 实验任务

实验任务1:按键检测和LED显示实验

1.1 实际运行例程1 “实验一_IAR_GPIO_独立按键测试”

1.1.1 学习、理解IO口初始化,掌握IO口操作的相关操作方法

1.1.2 说明程序用SW0点亮LED0,用SW1点亮LED1,两者的点亮方式有何不同。

1.2 编程,按下按键SW0后,8个LED灯从左向右依次发亮。

实验任务2: 阵列按键扫描与数码管显示

2.1 运行例程2“实验一_IAR_GPIO_阵列按键扫描_数码管显示”

学习,理解阵列按键扫描与数码管显示器的相关概念。

掌握阵列按键与数码管显示器的编程方法。

2.2 编程,扫描键盘,

若按下“1”,用7段LED显示你的学号后4位数。

若按下“2”,用7段LED显示你的学号前4位数。

6 实验报告要求

◆实验报告必须有下列内容:

●实验目的

●实验原理

●简要说明库函数作用

?GPIO_Init

?GPIO_SetBits

?GPIO_ResetBits

?GPIO_WriteBit

?GPIO_ReadInputDataBit

●实验任务1.2

?实验原理

?主要编程要点

?主要程序代码

●实验任务2.2

?实验原理

?主要编程要点

?主要程序代码

4.2实验二IO中断和定时器中断

1.实验目的

(1)理解I/O中断的概念,掌握采用I/O中断的按键识别技术;

(2)理解定时器的工作原理,掌握定时器中断的工作方式;

(3)掌握采用定时器的独立按键扫描及阵列按键扫描功能。

2.重点、难点

重点:I/O中断及定时器的使用,采用定时器的独立按键扫描及阵列按键扫描功能。

难点:中断的概念及编程实现技巧。

3.作业及课外学习要求

课前预习,撰写预习报告,课后书写实验报告。

4.实验原理

一、IO中断

IO中断模式,可使得外部设备可以主动请求MCU与其传输状态或数据,提高MCU对事件的相应速度。

STM32的所有I/O端口可作为外部中断输入,同时可有16个中断输入源,其中PA0可作为从待机模式唤醒的管脚,PC13可作为侵入检测管脚。外部中断的库函数将表 4.1。I/0中断的使用请参考“STM32中文参考手册.pdf”中“通用和复用功能I/O(GPIO和AFIO)”的描述,库函数的详细描述见“STM32F10xxx_库函数_cn.pdf”相应章节。

表4.1 STM32外部中断的库函数

STM32的中断服务函数,均在Library->src->stm32f10x_it.c中。

本实验例程“实验二_IAR_IO中断”采用SW3做为IO中断,对应的管脚为PC0,中断线为EXTI0_IRQChannel,中断服务函数为void EXTI0_IRQHandler(void)。STM32所有模块在

使用前,必须先利用“RCC_APB2PeriphClockCmd”或者“RCC_APB1PeriphClockCmd”函数配

置时钟。在配置IO中断前,必须配置系统时钟及GPIOC和AFIO的时钟,见例程“实验二_IAR_IO

中断”的函数“NVIC_Configuration”中。

例程“实验二_IAR_IO中断”效果:每按下SW3按键,LED1灯闪烁几下。

定时器void TIM2_IRQHandler(void)

二、定时器

定时器主要用于计时、定时或产生PWM信号,广泛应用于工业检测、控制系统中。

本实验例程“实验二_IAR_定时器中断”使能STM32的定时器2(TIM2)和SysTick 两个定时器,其TIM2中断服务函数分别为Library->src->stm32f10x_it.c中的“void TIM2_IRQHandler(void)”,SysTick用于延时,工作于查询模式。TIM2为10ms中断,主要用于按键扫描。

采用延时函数去抖,占用了大量的CPU资源(Delay函数),而采用定时器实现按键扫描,可以大大提高CPU效率。图4.3给出了采用定时器中断实现扫描按键的流程图。

例程“实验二_IAR_定时器中断”利用定时器中断,

产生了一个50Hz的方波,通过“SPI测试点”区的TP19

测试点输出,同时实现了SW2独立按键的定时器扫描功

能。

例程“实验二_IAR_定时器中断”效果:

(1)、利用示波器可在TP19测试点测试得到50Hz

的方波;

(2)每按下SW2按键,LED2灯的状态就会翻转一

下。

5.实验任务

实验任务一:

利用IO中断和SysTich延时函数(在IO中断中延时去

抖),编写程序,实现每按下SW3按键,LED1状态翻转

一次。

实验任务二:图4.3定时器按键扫描流程图

利用TIM2中断扫描按键(不能有延时函数),实现按下SW0、SW1时,不同流水灯效果。

●按下SW0,按从左向右的顺序分别点亮LED0~LED7;

即,亮LED0,熄灭LED0;亮LED1,熄灭LED1;亮LED2,熄灭LED2; ……

LED0(ON);delay_ms(100);LED0(OFF);delay_ms(100);

LED1(ON);delay_ms(100);LED1(OFF);delay_ms(100);

LED2(ON);delay_ms(100);LED2(OFF);delay_ms(100);

……

●按下SW1,按从右向左的顺序分别点亮LED0~LED7。

实验任务三:

利用TIM2中断编写阵列按键扫描程序(不能有延时函数),要求实现2位数*2位数的计算器功能。利用*作为乘法,#号作为等于,C清零。要求八段数码管的显示也在定时器中断中完成(不能有延时函数)。

4.3RS232串口通信

1.基本要求

(1)理解RS232通信时序,掌握RS232模块的使用;

(2)理解RS232外围电平转换芯片的功能,利用示波器测试RS232通信时序;

(3)掌握串口调试技术。

2.重点、难点

重点:掌握RS232模块的使用。

难点:通信时序的概念。

3.作业及课外学习要求

课前预习,撰写预习报告,课后书写实验报告。

4实验原理

在微处理器众多的片上外设中,UART模块是最常用的模块之一。UART通过2根线(RXD、TXD)或4根线(RXD、TXD、RTS、CTS),可将微处理器与专用模块或者其他系统联系起来,实现更复杂的功能或通信,大大扩展了微处理器的应用领域,比如可通过微处理器的UART 控制GPRS模块,实现接打电话、收发短信和上网等等。

UART(Universal Asynchronous Receiver/Transmitter)通用异步收发器,是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。

UART首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是7~8个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶校验,UART就在数据位后面加上奇偶位。奇偶位可用来帮助校验错误。在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。

图 4.4 串口通信时序

7 / 14

本实验例程“实验三_IAR_串口通信”,利用串口1与计算机通信,利用PC 端的串口调试助手,实现PC发送给STM32的数据,STM32回传给PC的功能。

UART1的接收中断服务函数是Library->src->stm32f10x_it.c中的“void USART1_IRQHandler(void)”。注意,UART1的收发中断的服务函数均为这个函数,当前进入中断的具体中断源,需要在此函数中通过if语句查询确认,参见本例程。

5.实验任务

实验任务一:

编写一个流水灯程序,利用串口调试助手向MCU发送字符,发送不同的字符时,8个LED 灯轮流闪烁效果不同,至少做出两种及以上效果。同时利用示波器观察并画出PC机向STM32发送数据的波形(UART_TX、UART_RX,TX_+12、RX_+12),解析波形对应的字节。

实验任务二:

编写程序,利用TIM2中断扫描阵列键盘(不能有延时函数),并将扫描到的值通过串口打印到PC端,同时在八段数码管上显示扫描到的键值(不能有延时函数)。

实验任务三:

编写程序,在PC端利用串口调试助手发送不同的字符串,在串口接收中断中编写字符串接收程序,识别字符串,并根据收到的不同字符串,点亮相应的LED等。字符串为自己的学号和班级号两种。

4.4 IIC通信及LCD显示

1.基本要求

(1)理解IIC通信时序,利用示波器测试IIC通信时序;

(2)掌握I/O口模拟IIC的编程以及IIC模块的使用;

(3)掌握IIC接口的液晶显示编程。

2.重点、难点

重点:掌握IIC模块的使用以及LCD显示编程。

难点:通信时序的概念。

3.作业及课外学习要求

课前预习,撰写预习报告,课后书写实验报告。

4实验原理

IIC总线以其连线简单(2线传输)、可挂接多达128个设备的特点,在MCU 系统中,获得了广泛的应用。电视机内的MCU通过IIC总线来控制LED驱动器从而控制LED的输出,服务器中的系统温度传感器和风扇等器件都是连接在IIC 总线上的。利用IIC总线MCU可以与很多器件进行通信,如E2PROM、LCD、RTC日历时钟、系统外接DA等。

IIC即集成电路总线(Inter-Integrated Circuit),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路。IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源,这种方式简化了信号传输总线。

图4.5给出了IIC总线连接图,IIC总线特征如下:

●只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL。

●每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从

机关系软件设定地址,主机可以作为主机发送器或主机接收器。

●它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可

以通过冲突检测和仲裁防止数据被破坏。

●串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可

达400kbit/s,高速模式下可达3.4Mbit/s。

9 / 14

数据线(SDA 时钟线(SCL 图4.5 IIC 总线连接图

图4.6 IIC 总线时序图 图4.6给出了IIC 总线时序图。在SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件;当SCL 是高电平时,SDA 线由低电平向高电平切换表示停止条件。起始和停止条件一般由主机产生,

总线在起始条件后被认为处于忙的状态在停止条件的某段时间后,总线被认为再次处于空闲状态。

发送到SDA 线上的数据每个字节必须是8位,每次可以传输的字节数目不受总线限制,但是每发送完成一个字节必须有一个响应位。如果从机要完成一些其他功能后才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。如果传输中有主机接收器,它必须通过在从机不产生时钟的最后一个字节不产生一个响应,向从机发送器通知数据结束,从机发送器必须释放数据线,允许主机产生一个停止或重复起始条件。

在起始条件S 后,第一个发送的数据是一个从机地址,这个地址共有7位(7位地址模式),紧随着的第8位是数据标志位R/W ,0表示发送写,1表示发送读。一般由主机发出停止位P 后通信终止,但是如果主机仍然希望在总线上传输数据,那么它可以发出重复起始条件Sr 和寻址另一个从机,而不是首先发出一个停止条件,在这种数据传输中,可能会出现不同的读写格式的组合。

实验例程“实验四_IAR_ IIC_EEPROM”分别利用STM32的IO口模拟IIC控制器和STM32片内硬件IIC控制器,对EEPROM进行读写,实现数据的掉电保存功能;实验例程“实验四_IAR_IIC_LCD”对液晶屏进行操作,实现液晶屏幕内部的字符串。可根据显示的内容,得到需要显示的字符串的液晶屏内部地址,实现字符串的显示。

5.实验任务

实验任务一:

编写一个程序,通过串口调试助手,在PC端发送过来自己的学号后,将此学号送入到EEPROM中,按下复位按键,自动读取EEPROM内的学号,并通过串口显示;在此期间,用示波器测试“I2C_LCD测试点”区的“I2C1_SDA”和“I2C1_SCL”信号,理解I2C的通信过程。

实验任务二:

编写一个程序,利用硬件IIC方式,控制液晶屏,显示自己的学号和班级。并用示波器测试“I2C_LCD测试点”区的“I2C1_SDA”和“I2C1_SCL”信号,理解I2C的通信过程。

4.5A D及并行总线

1.基本要求

(1)理解AD工作原理;

(2)掌握AD模块的使用,并利用AD模块实现直流电压的采集和串口显示;

(3)理解并行总线FSMC通信时序,利用示波器测试该通信时序;

(4)掌握利用FSMC接口实现SRAM操作的编程;

2.重点、难点

重点:掌握AD、FSMC模块的使用。

难点:AD模块的使用、通信时序的理解。

3.作业及课外学习要求

课前预习,撰写预习报告,课后书写实验报告。

4. 实验原理

在MCU应用中,经常需要测量温度、湿度、压力、电压等模拟量,而MCU 是一个数字系统,内部用“0”和“1”数字量进行运算,因此必须把模拟量转换为数字量MCU才能进行识别。模拟量通过输入接口,即模数转换器(ADC)转换成

数字量传送给MCU[6]。ADC主要性能指标:

(1)分辨率。ADC的分辨率是能够分辨的最小量化信号的能力,即输出的数字量变化1所需输入模拟电压的变化量,通常用位数来表示。对于一个实现n位转换的ADC来说,它能分辨的最小量化信号的能力为2n位,即分辨率为2n 位。例如,对一个10位的ADC分辨率为210=1024位。

(2)转换精度。因为数字量是离散值,模拟量是连续值,所以一般在某个范围中的模拟量都对应于同一个数字量。例如,有一个ADC,理论上5V电压对应数字量800H,但是实际上4.997V,4.998V,4.999V也对应数字量800H。这就意味着,在A/D转换时模拟量并不严格一一对应数字量。这样就有一个转换精度的问题,转换精度反映了ADC的实际输出接近理想输出的精确程度。A/D 转换的精度通常是用数字量的最低有效应(LSB)来表示的。设数字量的最低有效位对应于模拟量△,这时称△为数字量的最低有效位当量。

转换时间和转换率。完成1次A/D转换所需要的时间,称为ADC的转换时间。用ADC的转换时间的倒数表示ADC的转换速度,即转换率,例如,一个12位逐次逼近式ADC,完成一次A/D转换所需时间20μs,其转换率为50KHZ。ADC的转换时间约为几个μs至200μs。

STM32F103ZCT6内嵌3个12位的模拟/数字转换器(ADC),每个ADC共用多达21个外部通道,可以实现单次或扫描转换。在扫描模式下,自动进行在选定的一组模拟输入上的转换。

实验板上,PC1口连接了一个电位器,通过旋转电位器可以得到0~1.7V的模拟电压(“电压测试点”区的TP9测试点),同时本实验板上的并行总线连接了一个512KB的SRAM和一个TFT液晶显示屏。通过对SRAM或TFT的操作,可以理解FSMC总线的通信时序。

实验例程“实验例程五_AD_FSMC”提供了利用定时器Timer2驱动AD采样,并将采样得到的数据通过FSMC写入到SRAM的功能。

5. 实验任务

实验任务一:

编写一个程序,在实验例程“实验例程五_AD_FSMC”基础上,对采样得到的值,转换为电压值,并利用串口打印出电压的字符串,例如:”Voltage:1.7V”

实验任务二:

编写一个程序,以1KHz采样率,采集频率为100Hz,峰峰值为3V的正弦波,共采集50

个点,并在采集的同时将采集到的值写入SRAM中。在采集完成后,读取SRAM的内容,并通过串口显示所采样得到的50个点的数据的高8位。

4.6 DA及DDS

1.基本要求

(1)理解DA的工作原理;

(2)掌握DA模块的使用,并利用DA模块实现直流电压的输出;

(3)理解DDS的工作原理,并利用DA实现正弦波的产生;

2.重点、难点

重点:掌握AD模块的使用。

难点:DDS工作原理。

3.作业及课外学习要求

课前预习,撰写预习报告,课后书写实验报告。

4. 实验原理

数模转换器作为数字域与模拟域的桥梁,有很重要的应用,如CD播放器中的高分辨率DAC可将数字记录变为模拟音频输出,还可利用DAC进行AGC电路的增益设置、产生任意波形等。

STM32F103ZCT6包含两个12位带缓冲的DAC通道可以用于转换2路数字信号成为2路模拟电压信号并输出。这项功能内部是通过集成的电阻串和反向的放大器实现。

这个双数字接口支持下述功能:具有两个DAC转换器并各有一个输出通道,有8位或12位单调输出;具有同步更新功能,可以产生噪声波、三角波;双DAC 通道独立或同步转换,并且每个通道都可以使用DMA功能;由外部触发开始进行DAC转换。DAC通道可以由定时器的更新输出触发,更新输出也可连接到不同的DMA通道。利用STM32的DAC管脚和定时器,可以方便的实现数字信号的模拟化,DAC模拟信号可通过的第PA4和PA5管脚输出。

利用DA及低通滤波器可以实现直接数字信号合成器(DDS)。简易DDS工作原理:在保证DA输出频率(采样速率)不变的情况下,通过控制相位表的查表步长,即可实现输出一个完整正弦波的时间不同,从而实现不同正弦波频率的

输出。具体操作步骤为:

1、在MCU内部建立一个正弦波,一个周期10000个点。

2、以200kHz的定时器驱动DA转换,则DDS的采样速率即为200kHz,此时若逐点输出正弦波表的10000个点,则可产生20Hz的正弦波

3、在步骤2的基础上,若改变数据点的间隔,则可以得到不同的输出频率。

实验例程“综合实验_IAR_DDS”提供了一个利用DA产生100Hz正弦波的实例。

5. 实验任务

实验任务一:

编写一个程序,利用STM32的DA,实现正弦波的产生,且正弦波的频率可以被串口及按键控制(频率10Hz-1Khz,每10Hz步进),并能通过8段数码管或则LCD或者串口显示单前的频率。

微机原理实验指导书

微机原理及应用实验指导书 南京理工大学机械工程学院 2011年10月10日

实验1 基本操作实验 1. 实验目的 (1) 掌握TD-PITC 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 (2) 掌握使用运算类指令编程及调试方法; (3) 掌握运算类指令对各状态标志位的影响及其测试方法; (4) 学习使用软件监视变量的方法。 2. 实验设备 PC机一台,TD-PITC 实验装置一套。 3. 实验内容及步骤 通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会: ●如何设置断点; ●如何单步运行程序; ●如何连续运行程序; ●怎样查看寄存器的内容; ●怎样修改寄存器的内容; ●怎样查看存储器的内容; ●怎样修改存储器的内容。 3.1 实验内容1――――BCD码转换为二进制数 实验内容: 将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。 参考实验程序清单如下: SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: XOR AX, AX MOV CX, 0004H MOV SI, 3500H MOV DI, 3510H A1: MOV AL, [SI] ADD AL, AL MOV BL, AL

ADD AL, AL ADD AL, AL ADD AL, BL INC SI ADD AL, [SI] MOV [DI], AL INC SI INC DI LOOP A1 A2: JMP A2 CODE ENDS END START 实验步骤: 1)运行Wmd86 软件,进入Wmd86 集成开发环境。 2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1 语言环境选择界面 3)语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-2所示。默认文件名为Wmd861。 图1-2 新建文件界面 4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

微机原理及应用实验

实验报告1 实验项目名称:I/O地址译码;简单并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握I/O地址译码电路的工作原理,简单并行接口的工作原理及使用方法。 二、预备知识: 输入、输出接口的基本概念,接口芯片的(端口)地址分配原则,了解译码器工作原理及相应逻辑表达式,熟悉所用集成电路的引线位置及各引线用途;74LS245、74LS373的特性及作用。 三、实验内容245输入373输出 使用Protues仿真软件制作如下电路图,使用EMU8086编译软件编译源程序,生成可执行文件(nn . exe),在Protues仿真软件中加载程序并运行,分析结果。 编程实现:读8个开关的状态,根据输入信号控制8个发光二极管的亮灭。 图1-1 245输入373输出 四、程序清单

五、实验结果 六、结果分析 七、思考题: 1、如果用74LS373作输入接口,是否可行?说明原因;用74LS245作输出接口,是否可行?说明原因。

实验报告2 实验项目名称:可编程定时器/计数器;可编程并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握8253的基本工作原理和编程应用方法。掌握8255的工作原理及使用方法。 二、预备知识: 8253的结构、引脚、控制字,工作方式及各种方式的初始化编程及应用。 8255的内部结构、引脚、编程控制字,工作方式0、1、2的区别,各种方式的初始化编程及应用。 三、实验内容: ⑴8253输出方波 利用8253的通道0和通道1,设计产生频率为1Hz的方波。设通道0的输入时钟频率为2MHz,8253的端口地址为40H,42H,44H,46H。通道0的输入时钟周期0.5μs,其最大定时时间为:0.5μs×65536 = 32.768ms,要产生频率为1Hz(周期= 1s)的方波,利用;一个通道无法实现。可用多个通道级连的方法,将通道0的输出OUT0作通道1的输入时钟信号。设通道0工作在方式2(频率发生器),输出脉冲周期= 10 ms,则通道0的计数值为20000(16位二进制)。周期为4 ms的脉冲作通道1的输入时钟,要求输出端OUT1输出方波且周期为1s,则通道1工作在方式3(方波发生器),计数值为100(8位;二进制)。硬件连接如图2-1。

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

80x86微机原理与接口技术实验指导书

80x86微机原理与接口技术 实验指导书 长安大学信息工程学院电子信息与通信工程实验室

第1章 80X86 微机原理及其程序设计实验 本章主要介绍汇编语言程序设计,通过实验来学习80X86 的指令系统、寻址方式以及程序的设计方法,同时掌握联机软件的使用。 1.1 系统认识实验 1.1.1 实验目的 掌握TD-PITE 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 1.1.2 实验设备 PC机一台,TD-PITE 实验装置一套。 1.1.3 实验内容 编写实验程序,将00H~0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。 1.1.4 实验步骤 1. 运行Wmd86 软件,进入Wmd86 集成开发环境。 2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1-1 语言环境选择界面 3. 语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-1-2所示。默认文件名为Wmd861。 图1-1-2 新建文件界面 4. 编写实验程序,如图1-1-3所示,并保存,此时系统会提示输入新的文件名,输完后

点击保存。 图1-1-3 程序编辑界面 5. 点击,编译文件,若程序编译无误,则输出如图1-1-4所示的输出信息,然后再点击进行链接,链接无误输出如图1-1-5所示的输出信息。 图1-1-4 编译输出信息界面图1-1-5 链接输出信息界面 6. 连接PC与实验系统的通讯电缆,打开实验系统电源。 7. 编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。可以通过端口列表中的“端口测试”来检查通讯是否正常。点击下载程序。为编译、链 接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。起始运行语句下会有一条绿色的背景。如图1-1-6所示。

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

微机原理实验指导书

微机原理实验指导书汕头大学机电系摘录

实验一P1口实验及延时子程序设计 1.实验目的 利用单片机的P1口作为I/O口进行实验验证,掌握利用P1口作为输入口和输出口的编程方法,理解并掌握延时子程序的设计方法。 2.实验设备及器件 IBM PC机一台 DP-51PRO单片机综合仿真实验仪一台 3.实验内容 (1)编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。 (2)编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED 亮,不按时LED灭)。 图 1 4.实验要求 学会使用单片机的P1口作I/O口。如果时间充裕,也可以考虑利用P3口作I/O口来做该实验。 5.实验步骤 ①用导线把A2区的J61接口与D1区的J52接口相连。原理如图1所示。 ②先编写一个延时程序。 ③将LED轮流点亮的程序编写完整并调试运行。 ④使用导线把A2区J61接口的P1.0~P1.6与D1区J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区J53的KEY1相连。原理如图3.2(b)所示。 ⑤编写P1.7控制LED的程序,并调试运行(按下K1看是否全亮)。 ⑥A2区J61接口P1.7与D1区J54的SW1相连,然后再运行程序,拨动开关SW1查看结果。

6.实验预习要求 阅读附录内容,理解实验的硬件结构。可以先把程序编好,然后在Keil C51环境下进行软件仿真。 7.实验参考程序 程序1: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP M ain ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A ;把A的值输出到P1口 SJMP MainLoop Delay: MOV R7, #0 ;延时 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET ; END 程序2: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP Main ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main:JB P1.7,SETLED ;按键没有按下时,跳转到SETLED CLRLED: CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: SETB P1.0 SETB P1.1

微机原理与单片机实验报告

北京联合大学信息学院实验报告 课程名称:微型计算机原理学号: 姓名: 2012 年 6 月 9 日

目录 实验1 EMU8086模拟器的使用 (3) 实验2 数据传送指令的使用 (5) 实验3 多位十六进制加法运算实验 (9) 实验5 循环程序实验 (11) 实验6 由1 到100 求和实验 (13) 实验7 求表中正数_负数_0 的个数实验 (14) 实验8 数据排列实验(冒泡排序) (16) 实验9 系统功能调用(大小写转换) (18) 实验10 阶乘(递归运算) (20) 实验11 ProteusIO工程文件的建立 (21) 实验12 IO口读写实验(245、373) (22) 实验13 8255 接口实验 (24) 实验14 声光报警 (25) 实验总结 (28)

实验1 EMU8086模拟器的使用 一实验要求 利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的: 熟悉EMU8086实验环境 三EMU8086环境: 1 模拟器编辑窗口 2 模拟器调试窗口

四实验内容 实验内容1:新建文件。 运行emu8086 1. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码: MOV AX, 1020H MOV BX, 2030H MOV AX, BX ADD AX, BX MOV [BX], AX MOV [2032H], AX HLT 2. 编译:单击“编译”按钮,对程序段进行编译; 3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。 4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。 5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。 6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。 7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为400毫秒,单击“全速”按钮,运行程序, 8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容 9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序

北邮微机原理与接口技术硬件实验报告

微原硬件实验报告 班级:07118 班 学号:070547 班内序号:26 姓名:杨帆

实验一熟悉实验环境及IO的使用 一,实验目的 1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。 3. 学会Debug 的使用及编写汇编程序 二,实验内容 1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用EDIT 编辑工具)实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度 等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) 三,实验步骤 1.实验板的IO 端口地址为EEE0H 在Debug 下, I 是读命令。(即读输入端口的状态---拨码开关的状态) O 是写命令。(即向端口输出数据---通过发光管来查看) 进入Debug 后, 读端口拨动实验台上八位拨码开关 输入I 端口地址回车 屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口 输入O 端口地址xx (xx 表示要向端口输出的内容)回车 查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在Debug 环境下,用a 命令录入程序,用g 命令运行 C>Debug -a mov dx, 端口地址 mov al,输出内容 out dx, al

mov ah, 0bh int 21h or al, al jz 0100 int 20h -g 运行查看结果,修改输出内容 再运行查看结果 分析 mov ah, 0bh int 21h or al, al jz 0100 int 20h 该段程序的作用 3.利用EDIT 工具编写汇编写跑马灯程序程序 实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm 录入程序 按Alt 键打开菜单进行存盘或退出 编译文件 C>MASM 文件名.asm 连接文件 C>LINK 文件名.obj 运行文件或用Debug 进行调试。 四,程序流程图

2013微机原理实验指导书

微机原理实验报指导书 实验一数据传送实验 1.实验名称实验一数据传送实验 2.实验目的 1、掌握微型计算机汇编软件调试汇编源程序的基本操作; 2、熟悉传送指令、简单运算类指令来编写汇编语言源程序; 3、掌握调试过程及实验结果分析; 3.实验仪器 微型计算机一台 4.实验原理或内容 1.数据段从3500H单元开始建立0---15共16个数据区,程序中见此段存入 数据00H,01H,02H---0AH---0FH,运行之,检查并记录结果。 2.将内存3500H开始的共10个单元内容传送到3600H单元开始的数据区中,运行之,记录结果。 5.实验步骤 1.启动Masm for Windows 集成实验环境2009.6。显示如下: 2.输入源程序 在模板处将程序完成,其中模板中段名可以自己修改定义,没有涉及的段可省略不写。 输入汇编语言源程序后,保存程序(规定扩展名为.asm)

3.汇编 编译/汇编成目标文件,单击运行菜单下“编译成目标文件(obj)”,等待系统汇编,若有错误,修改再编译,直至无错误为止。

4.连接 生成可执行文件。单击运行菜单下“生成可执行文件(exe)”,等待系统对汇编生成的.obj文件进行连接,生成相应的可执行文件。若有错误,修改错误重复3和4操作,直至无错误为止。

5.在DEBUG调试环境下进行程序的调试 1、反汇编。u回车 -u0000回车 2、单步运行。-T=0000回车 -T回车 3、连续运行。G=起始偏移地址结束偏移地址 4、内存单元内容显示。-Dds:3500回车 5、内存单元内容的修改。-EDS:3500回车.键入修改后内容再空格 完成后回车 6、查看修改寄存器。-R回车 -R跟寄存器名,显示寄存器内容:后可跟修改内容 -R IP 可查看修改IP值 7、退出debuf。Q命令 6.数据与结果 将运行结果记录于此处

微机原理实验报告软件实验1-4

微机原理实验报告 学院:算机科学与软件教育学院 1. 掌握存储器读写方法 2. 了解存储器的块操作方法 二、实验原理 存储器读写和块操作 三、实验设备仪器及材料 计算机,WA VE 6000软件 四、实验过程 S1.asm 代码流程图 data segment Block db 256 dup(55h) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov bx, offset Block ; 起始地址 mov cx, 256 ; 清256 字节Again: mov [bx], byte ptr 0 inc bx ; 地址+1 Loop Again ; 记数减一jmp $ ;死循环code ends end start

五、实验步骤 (1) 进入Wave6000,输入程序并检查,保存程序。 (2) “编译”程序。 (3) “全速执行”程序。 (4) “暂停”程序运行,在“数据窗口(MEMOREY)”查看0400H起始的单元内容,并记录。 (5) 在指令“jmp $”处设断点。“全速执行”程序。 (6) 在“数据窗口(MEMOREY)”查看0400H起始的单元内容,记录并分析实验结果。 六、实验结果及总结 运行前:运行后: 2、调试:如何将存储器块的内容置成某固定值(例全填充为0FFH)? 总结:通过本实验,我了解到单片机读写存储器的读写方法,同时也了解到单片机编程,调试方法。学会内存的移动方法,也加深对存储器读写的认识。

微机原理实验报告 学院:算机科学与软件教育学院 实验 课程 名 微机原理实验成绩实验 项目名称实验二、二进制到BCD码转换 指导老 师 1. 了解BCD值和ASCII值的区别。 2. 了解如何将BCD值转换成ASCII值。 3. 了解如何查表进行数值转换及快速计算。 二、实验原理 ASCII码表 三、实验设备仪器及材料 计算机,WA VE 6000软件 data segment Result db 3 dup(?) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov ax, 123 mov cl, 100 div cl mov Result, al ; 除以 100, 得百位数 mov al, ah mov ah, 0 mov cl, 10 div cl mov Result+1, al ; 余数除以 10, 得十位数 mov Result+2, ah ; 余数为个位 数 jmp $ code ends end start 代码流程图

微机原理实验报告

微 机 原 理 实 验 报 告 班级: 指导老师:学号: 姓名:

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 图3-1

四、参考程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL

四川大学微机原理实验报告..

微机原理实验报告 学院: 专业班级: 姓名 学号

实验一汇编语言编程基础 1.3汇编语言程序上机操作和调试训练 一.功能说明 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 运用MASM﹒EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。 运用LINK.EXE文件进行连接,形成*.EXE文件。 仔细阅读和体会DEBUG调试方法,掌握各种命令的使用方法。 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。 二.程序流程图 设置被除数、商的地址指针 设置单位除法次数计数器 取被除数一位作十进制调整 作字节除法、存商 N 被除数各位已除完? Y 显示运算结果 结束 三.程序代码 修改后的程序代码如下: DATA SEGMENT A D B 9,6,8,7,5 B DB 5 C DB 5 DUP (0) N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX

MOV ES,AX CLD LEA SI,A LEA DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2: MOV DL,[DI] ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四.实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用DEBUG调试程序,收获很大。 在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开MASM.EXE,计算机提示是由于版本不兼容。我这才想起来我的操作系统是64位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验1.3中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用DEBUG调试时发现得出的结果也很正确。 尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇编语言和C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

微机原理与接口技术实验指导书1_[1]...

微机原理与接口技术实验指导书 编者:王亭岭 华北水利水电学院 电气学院自动化教研室 二零一二年三月

目录 实验一标志寄存器应用 (1) 实验二指令寻址方式练习 (4) 实验三分支结构程序设计 (6) 实验四循环结构程序设计 (7) 实验五子程序结构程序设计 (8) 实验六DOS系统功能调用程序设计 (10) 实验七BIOS中断调用程序设计 (12) 实验八定时器中断程序设计 (14)

实验一标志寄存器应用 一、实验目的与要求 1.掌握汇编程序的编译过程; 2.掌握8086的标志寄存器的特点。 二、实验内容 微型计算机(80x86系列)。 四、实验参考程序 DATA SEGMENT A DW 123 B DW 456 SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA START: MOV AX , DATA MOV DS , AX MOV AX , A SUB AX , B MOV SUM , AX MOV AH,4CH INT 21H CODE ENDS END START 五、实验步骤 步骤一、用鼠标单击开始菜单,单击运行。如下图所示:

步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示: 步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:1.C:\>D: 回车 2.D:\ >CD MASM 回车 3.D:\MASM>MASM SY1.ASM 回车 4.D:\MASM>LINK SY1.OBJ 回车

步骤四、在命令提示行中运行并调试汇编程序。如下图所示:1.D:\MASM>SY1.EXE 回车 2.D:\MASM>DEBUG SY1.EXE 回车 六、实验结论 1.程序运行后变量SUM的值是多少? 2.程序运行前后标志寄存器的各标志位有何变化? 3.分析实验结果及所遇到的问题,并说明解决的方法。

微机原理实验四实验报告

实验报告

实验四 8251可编程串行口与PC机通信实验一、实验要求 利用实验箱内的8251A芯片,实现与PC机的通信。 二、实验目的 1.掌握8251A芯片结构和编程方法; 2.了解实现串行通信的硬件环境,数据格式和数据交换协议; 3.了解PC机通信的基本要求。 三、实验原理 (一)8251A芯片工作方式配置: 1. 8个数据位; 2.无奇偶校验位; 3.1个停止位; 4.波特率因子设为16; 5. 波特率设为9600。 (二)8251A主要寄存器说明 图4-1 模式字 图4-2 命令字

CO MMAN D I NSTR UCT ION FO RMA T 图4-3 状态字 (三)8251编程 对8251 的编程就是对8251 的寄存器的操作,下面分别给出8251 的几个寄存器的格式。(1)方式控制字 方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图4-4所示。 图4-4 方式控制字说明 (2)命令控制字 命令控制字用于指定8251 进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。图4-5 所示的是8251 命令控制字各位的定义。 图4-5命令控制字说明 (3)状态字 CPU 通过状态字来了解8251 当前的工作状态,以决定下一步的操作,8251 的状态字如 图4-6所示。 图4-6 状态字说明 四、实验电路连接: 1.CS8251接228H,CS8279已固定接至238H; 2.扩展通信口18中的232RXD连8251RXD ,232TXD连8251TXD;

3.计算机的两个RS232通信口,一个连至仿真机通信口,一个连至扩展通信口18(所有通信口均为DB9)。注意:RS232通信口必须在设备断电状态下插拔! 图4-7 连线图 五、实验内容及要求 1. 将例程从PDF文档中导入到WMD86软件编辑环境中,调试通过。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 2.剔除例程中冗余部分,实现对例程的精简和优化。将精简内容与相应理由写入实验报告。 3.将自己学号的后三位数字通过RS232端口的Txd管脚输出。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 4.通过读状态寄存器的方法,获得发送移位寄存器是否为空的信息,实现学号后三位数字的循环发送。将结果截图保存,贴入实验报告。 5.给每帧数据间添加固定的时间间隔,时间间隔为10000个指令周期。将结果截图保存,

微机原理实验报告

微机原理实验报告 计算机网络的设计是一个要求动手能力很强的一门实践课程,在课程设计期间我努力将自己以前所学的理论知识向实践方面转化,尽量做到理论与实践相结合,在课程设计期间能够遵守纪律规章,不迟到、早退,认真完成老师布置的任务,同时也发现了自己的许多不足之处。 在课程设计过程中,我一共完成了11个实验,分别是1.制作直通电缆和交叉UTP、2.交换机Console口和Telnet配置、3.交换机端口和常规配置、4.虚拟局域网VLAN配置、5.路由器Console口Telnet 配置方法和接口配置、6.路由器静态路由配置、7单臂路由配置、8.动态路由协议配置、9.PPP协议配置、10路由器访问控制表(ACL)、11.网络地址转换(NAT)。 在制作直通电缆和交换UTP的实验中,我起初不能完全按照要求来剪切电缆,导致连接不通,后来在同学的帮助下,终于将实验完成。 在做到单臂路由配置和动态路由协议配置的实验,由于自身的基础知识掌握不牢,忘掉了一些理论知识,在重新翻阅课本和老师的指导之下,也成功的完成了试验。 从抽象的理论回到了丰富的实践创造,细致的了解了计算机网络连接的的全过程,认真学习了各种配置方法,并掌握了利用虚拟环境配置

的方法,我利用此次难得的机会,努力完成实验,严格要求自己,认真学习计算机网络的基础理论,学习网络电缆的制作等知识,利用空余时间认真学习一些课本内容以外的相关知识,掌握了一些基本的实践技能。 课程设计是培养我们综合运用所学知识,发现、提出、分析、解决问题的一个过程,是对我们所学知识及综合能力的一次考察。随着科学技术日新月异的不断发展,计算机网络也在不断的变化发展当中,这就要求我们用相应的知识来武装自己,夯实基础,为将来走向工作岗位,贡献社会做好充分的准备。

微机原理实验指导书(学生)

昆明理工大学微机原理及程序设计 实验指导书 段绍米编 昆明理工大学信息工程与自动化学院 自动化系 2013年10月

微机原理实验实验要求及运行环境 1、实验要求与注意事项: 交纸质版实验报告,实验要求: 2、实验运行环境 在电脑中装ASM Masm for windows 集成实验环境2008。双击图标打开ASM MasM for windows 集成实验环境运行工作界面,输入实验程序代码,调试、改错、保存、运行、查看结果,进行记录。

运行结果显示:

实验一两个多位十进制数相加的实验 一、实验目的 1、学习数据传送和算术运算指令的用法。 2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图

四、程序清单 CRLF MACRO ;宏定义,宏名:CRLF MOV DL, 0DH ;把0DH给DL MOV AH, 02H ; 把02H给AH INT 21H ;系统功能调用——实现回车功能 MOV DL, 0AH ;把0AH给DL MOV AH, 02H ; 把02H给AH INT 21H ;系统功能调用——实现换行功能ENDM ;宏定义结束——本段实现回车换行功能 DATA SEGMENT;数据段定义,段名DATA DATA1 DB 33H, 39H, 31H, 37H, 34H;变量DATA1中装入加数 DATA2 DB 36H, 35H, 30H, 38H, 32H;变量DATA2中装入被加数 DATA ENDS;数据段定义结束——本段实现了两个数据的定义 STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATA START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV AX, TOP MOV SP, AX MOV SI, OFFSET DA TA2 MOV BX, 05 CALL DISPL CRLF MOV SI, OFFSET DA TA1 MOV BX, 05 CALL DISPL CRLF MOV DI, OFFSET DATA2 CALL ADDA MOV SI, OFFSET DA TA1 MOV BX, 05 CALL DISPL CRLF MOV AX, 4C00H INT 21H DISPL PROC NEAR

微机原理实验报告

大学 科技学院 实 验 报 告 课程名称:微机原理实验

实验一数据转换实验 一、实验目的 (1)初步掌握在PC机上建立、汇编、链接和运行8086/88汇编语言程序的过程。 (2)通过对两个验证性试验的阅读、调试、掌握不同进制数及编码相互转换的程序设计方法。 (3)完成程序设计题,加深对数码转换的理解,了解简单程序设计方法。 二、实验内容 1.十六进制数转换为ASCII码 设二字节十六进制数存放于其实地址为3500H的内存单元中,把他们转换成ASCII码后,再分别存入起始地址为350A的四个内存单元中。从书上ASCII码表中可知十六进制数加30H即可得到0H~9H的ASCII码,而要得到AH~FH 的ASCII码,则需再加7H。 请根据所给流程图理清思路,总结出对应的若干要点。将流程图与参考程序相互。根据分析的结果将运行时内存的变化列写出来。 学习并使用MASM或WAVE仿真软件分析程序运行过程中相关寄存器及相应内存的变化情况来验证自己的猜想,以巩固命令的学习,提高编程能力。

图1-1-1

DATAS SEGMENT ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV CX,0004H;根据转换个数设定循环次数 ;(两字节十六进制数如6B2C对应有四个用十六进制表示的ASCII码表示,即四个字节) MOV DI,3500H;指向该两字节十六进制数起始地址,此时在调试窗口修改内存字节 MOV DX,[DI];将地址3500H中的内容(6B2C)给DX A1: MOV AX,DX;第一次时DX=6B2C, ;因为想顺序取C、2、6、B,所以需要一个中间变量AND AX,000FH;取低四位,第一次取到C, CMP AL,0AH;判断AL属于0~9,还是A~F JB A2;如果是0~9,则跳转到A2 ADD AL,07H;若属于A~F,再加上07H后也是再加上30H即得到转换。 A2: ADD AL,30H;0~9的ASCII码对应的十六进制比其 ;本身(注意:亦是十六进制)大30H MOV [DI+0AH],AL;将转码后的C,即43H给350A INC DI;将DI指向下一字节,用于存储转码后的值,第一次自增后要存‘2’ PUSH CX;功能是接下来要用到CX作为一个中间变量, ;而刚才已经使用并且接下来还会用到CX的值, ;也可以不用CX,用其他不用的寄存器或者直接立即数形式的。 MOV CL,04H;若直接用立即数,可能不稳定,(原因不详)用一个中间变量。

微机原理 实验报告

微机原理与接口技术 实验指导书 班级 学号099074 姓名 安徽工业大学计算机学院

实验一存贮器读写实验 一、实验内容 对指定地址区间的RAM(4000H~4FFH)先进行写数据55AAH,然后将其内容读出再写到5000H~5FFH中。 二、实验步骤 l、将实验系统与PC机连接; 2、在PC机上启功DJ-8086k软件,实验系统进入联机状态; 3、在DJ-8086k软件环境下编辑、调试程序,将程序调试、编译通过; 4、运行程序。 5、稍后按RST键退出,用存贮器读方法检查4000H~43FFH中的内容和5000~53FFH中的内容应都是55AA。 三、实验程序清单 CODE SEGMENT ; ASSUME CS:CODE PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 ORG 1850h START: JMP START0 BUF DB ,,,,, data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1 h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV AX,0H MOV DS,AX MOV BX,4000H MOV AX,55AAH MOV CX,0200H RAMW1: MOV DS:[BX],AX ADD BX,0002H LOOP RAMW1 MOV AX,4000H MOV SI,AX MOV AX,5000H MOV DI,AX

相关文档