微机原理实验7实验8
合辑
洪玉希2011012706
前言:本报告记录了实验7实验8的任务实现和知识理解,详细介绍了如何实现任务7任务8的各项任务。实验原理图在本实验报告最后附上,本文档跟源程序一起打包
上传,请过目。
实验7.中断技术
一、实验目的
1.了解中断原理,包括对中断源,中断向量,中断类型号,中断程序,以及中断
过程的理解。
2.掌握汇编语言中断程序设计方法。
3.掌握C语言项目上机过程和了解C语言程序结构。
4.(选作)掌握C语言中断程序设计方法。
二、实验任务
1.中断过程的理解
阅读下面汇编语言中断程序L7_P1_int.s43,说明程序执行的流程和实现功能。上机实践,回答下面问题。了解汇编语言编写中断程序的方法。
1)阅读程序L7_P1_int.s43,从程序中判断用的是哪个中断源?其中断类型号是多少?
答:程序中有如下句子
从以上两个图可以知道,此程序打开了p1.0~p1.7的中断源,中断类型号是4。在此基础上打开了p1.1的中断使能所以系统接受p1.1的中断请求。
2)在L7_P1_int.s43,无call调用语句,中断程序如何能被执行?何时会被执行?
答:因为系统打开了p1.1的中断使能,中断总控位,所以当CPU接收到有效的中
断请求后,将暂停正在运行的程序,并自动转去执行相应实现中断源(p1.1)请求功能的程序即,中断子程。当CPU执行完中断子程中的返回指令后,CPU又返回到被中断的程序继续运行。
3)在L7_P1_int.s43,如果中断子程中不清分中断标志P1IFG的后果会是什么?
答:如果中断子程不清分中断标志P1IFG系统将一直接受到中断请求,总控位是开的,所以CPU将一直执行中断子程。
4)如果L7_P1_int.s43中的port1_vector改为port2_vector,其他不变,程序执行的后果是什么?为什么?
答:按下key1无反应。因为程序只打开了port2的中断源,按下key1当然没有反应。并且即使此时port2上有高电平也不能发生中断,因为程序中port2的中断使能没有打开。
5)如果去掉L7_P1_int.s43程序最后的那条无限循环语句,程序执行的流程是怎样的?
为什么?
程序执行完所有语句后会从0x0000开始执行,俗称“跑飞”。如下
因为执行完所有语句后程序没有指定PC去哪儿执行指令,所以自动选择了0x0执行。
6)如果中断源采用的是p2.2按键用key7,请设计连线,修改L7_P1_int.s43程序完成以中断方式响应key7的操作。
答:将key7与p2.2的端口相连。由于p2端口本来是用于输出led灯的,所以为了避免混淆,如果条件允许可以将LED端口全部连接到PORT1端口。这时在程序上做如下修改
注意:
1)查看msp430x14x.h文件末尾处有关中断向量偏址的符号定义。
2)为了便于了解程序执行流程,可以在中断子程入口处(即标号intP1处)设置一个断电,然后运行程序F5,观察按下键和不按下键时程序执行的流程。
答:不按下键时,程序不经过断点,一直在跑,按下键后程序停在断点处,表示程序进入中断程序。
3)观察是否有按键抖动现象,思考有的话,如何消除?
答:有按键抖动现象。可以采用软件防抖来消除。具体做法是当p2.2
2.用汇编语言编写中断程序
在实验板上用跳线将按键key5,key6分别与单片机的p1.4,p1.5相连,编程以中断方式处理按键key5和key6的请求,当key5上有一个下降沿信号时,实验板上的蜂鸣器发出一警报声;当key6上有一个上升沿信号时,实验板上的发光二极管L1闪3次。
任务实现:
本题在L7_P1_int.s43上稍加修改即可。对主程序修改如下。程序名:asm.s43
将p2,p6的16个端口均设为输出,同时打开p1.4,p1.5的中断功能。
上两张截图为中断子程。可以看到,当程序进入中断子程先判断是哪一个键按下,利用P1IFG来判断,如果是key5进入key5,如果是key6进入key6。Key5的功能是LED灯L1闪三次,key6的功能是蜂鸣器发出一声警报。在程序执行的最后要清零相对应的IFG 标志信号,然后返回主程序。
思考:如果用长导线将按键key5,key6分别连接在p2.2和p2.3上,如何修改程序以实现上述中断响应?可否将按键key5,key6分别连接在p5.1和p5.2上,用中断方式来完成任务2?为什么?
答:可以将按键key5,key6分别连接在p2.2和p2.3上。用跳线将key5,key6分别连接在p2.2和p2.3。并修改程序如下:程序:asmxiugai.s43
至此就是可完成任务目标。
不能将按键key5,key6分别连接在p5.1和p5.2上。因为在中断向量表里没有安排p5.1和p5.2的中断向量,系统不支持,所以不能。
3.C语言项目上机过程和C语言程序的结构学习
1)建立C语言程序项目的方法:
2)读懂LC_testc.c,掌握C语言下对I/O口的寄存器进行操作。
如上图。对端口的赋值用“=”,for(;;)表示无限循环。
3)在debug状态下,用view/disassembly查看程序LC_TEST_C的反汇编代码,了解MCU的C程序语句与汇编语句的对应关系。
这是截图。可以看到C语言和汇编语言的对应关系。C语言中的赋值就是寄存器操作mov 指令等。
4)打开io430.h文件和io430x14x.h文件该文件由#include语句包含在LC_test_c.c 文件中,了解io430xlxx.h文件中与MCU有关的IO寄存器以及这些IO寄存器中各有效位的位域符号定义,以编程使用。Io430.h文件通常在EW430安装目录的子目录下。
如图。此为LC_test_c.c的io430xlxx.h文件。
由于关于IO口的定义的篇幅非常大。在此只截取一个完整的片段进行解读。
__no_init volatile union
{
unsigned char P1OUT; /* Port 1 Output */
struct
{
unsigned char P0 : 1; /* */
unsigned char P1 : 1; /* */
unsigned char P2 : 1; /* */
unsigned char P3 : 1; /* */
unsigned char P4 : 1; /* */
unsigned char P5 : 1; /* */
unsigned char P6 : 1; /* */
unsigned char P7 : 1; /* */
}P1OUT_bit;
C char),整
int
为方便操作MCU io430x14x.h等头文件中采用共同体,struct
可以按字节操作:
P1SEL=0;
P1OUT=0;
P1IFG=0;
2.也可以按位域操作:
P1SEL_BIT.P1=0;
P1OUT_BIT.P1=0;
P1IFG_BIT.P1=0;
(5) C语言中程序中断程序设计
参看“补充讲义C语言的中断程序设计”,阅读下面C语言中断程序L8_P1_int。1)如果程序中没有#pragma vector=port1_vector的后果?
这就相当于汇编语言中没有ORG 0FFE0h+PORT1_VECTOR 显然,没有给出中断向量,系统是不会执行中断程序的。
2)在C语言中操作符“==”和“=”有什么不同?
“==”是判断符号,如
if (P1IFG_bit.P4==1)
{
key5();
P1IFG_bit.P4=0;
}
If语句后面的括号内,就是一个判断语句,P1IFG_bit.P4是否等于1。如果是,执行接下来的语句。
而“=”是赋值的意思,如
for(;;) //无限循环
{ P2OUT=~P2OUT; //将端口2的值取反后输出
for (i=0;i<0xffff;i++); //延时
};
中,P2OUT=~P2OUT指将P2OUT取反赋值给P2OUT。
(6)完成本次实验任务2的同样功能。
对实验任务2 的汇编语言进行修改即可。下面给出程序和注释。
这里着重注意几点
1.所有子程序要在开头声明。
2.书写要按照C语言的方式书写。
#include "io430.h"
#include "intrinsics.h"
void key5();
void key6();
void delay();
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
__disable_interrupt(); //_DINT();
P2SEL=0; //置P2为基本I/O功能
P2OUT=0xFF; //置P2输出初值
P2DIR=0xFF; //置P2为输出
P6SEL=0; //置P2为基本I/O功能
P6OUT=0xFF; //置P2输出初值
P6DIR=0xFF; //置P2为输出
P1SEL_bit.P4=0; //设置p1.4为基本I/O功能
P1DIR_bit.P4=0; //设置P1.4为输入
P1IES_bit.P4=1; //设置p1.4为上升沿输入 P1IFG_bit.P4=0; //清零标志位
P1IE_bit.P4=1; //打开p1.4中断使能
P1SEL_bit.P5=0; //设置p1.5为基本I/O功能
P1DIR_bit.P5=0; //设置P1.5为输入
P1IES_bit.P5=1; //设置p1.5为下升沿输入 P1IFG_bit.P5=0; //清零标志位
P1IE_bit.P5=1; //打开p1.5中断使能
__enable_interrupt(); //_EINT();
while(1){ };
}
//#pragma vector=4*2
#pragma vector=PORT1_VECTOR
__interrupt void port_int(void)
{
if (P1IFG_bit.P4==1)
{
key5();
P1IFG_bit.P4=0;
}
if (P1IFG_bit.P5==1)
{
key6();
P1IFG_bit.P5=0;
}
}
void key5()
{P2OUT=0XF8;
delay();
P2OUT=0XFF;
delay();
P2OUT=0XF8;
delay();
P2OUT=0XFF;
delay();
P2OUT=0XF8;
delay();
P2OUT=0XFF;
delay();
}
void key6()
{P6OUT=0x10;
delay();
P6OUT=0XFF;
}
void delay()
{unsigned int i;
for (i=0;i<0xffff;i++);
}
实验8.基本时钟和定时器
一、实验目的
1.掌握数字示波器的使用方法
2.了解MSP430基本时钟模块的工作原理,掌握其控制方法。
3.了解MSP430定时器A工作原理,掌握MSP430定时器A的使用方法。
二、实验任务
1.数字示波器的使用
1)测量示波器自带的周期性方波信号,掌握其测量周期,频率峰峰值的使用方法。
测量方法:按下示波器上方measure按钮,调出测量窗口,调整光标cursory
即可测量峰峰值和频率。峰峰值用Y光标测,频率用X光标测。
2)用孔孔导线将实验板的地信号与示波器的地信号相连,测量实验板上的5v,
3.3v电源信号是否正常。
已测量,正常。但未截图。
2.掌握基本时钟模块的编程
参看附录D实验板原理图,从题中可以看到,在单片机引脚XIN和XOUT,XT2IN,XT2OUT上分别连着32.768KHZ,8MHZ的晶振,编程控制基本时钟模块,使ACLK=4096HZ并通过P5.6或P2.0输出该ACLK。利用示波器光差输出的ACLK时钟信号,测量其频率。
任务实现:
基本时钟模块主要与3个寄存器息息相关。
数字控制振荡器:DCOCTL
XT2OFF: 0:打开BCSCTL2
1:关闭BCSCTL2
DIVA: 分频控制
RSELx:粗调DC0数字控制振荡器
BCSCTL2
SELMx:选择MCLK:
00:DCOCLK
01: DCOCLK
10:XT2
11: LFXT1CLK
DIVAx:MCLK分频
00:1
01:2
10:4
11:8
SELS:选择SMCLK
0:DCOCLK
1:XT2
SMCLK分频控制
00:1
01:2
10:4
11:8
只要合理的赋予这三个寄存器值就能得到想要的ACLK,MCLK,SMCLK的值。上图用图解的方式给出上述三个寄存器的工作原理。
而时钟的输出,参考讲义可知
某些引脚只要设定它的SEL为1(模块功能)即能从这个端输出想要的时钟。
下面编程实现ACLK=4096HZ,通过p2.0输出。
上图为程序。因为复位以后ACLK的时钟是LFXT1CLK,是32.768KHZ,8分频以后正好是4096HZ,所以只要将BCSCTL1的DIVA置3,变成8分频即可。
然后通过P2.0输出ACLK。
下图是拍照所得。
图上显示频率为4.098KHZ,与4096HZ差不多。
思考:1)可否编程在引脚P5.2上输出ACLK,为什么?
答:理论上这是可以实现的,因为我们拥有XT2clk 8Mhz的时钟,我们可以得到任意比8MHZ 频率低的方波信号,然后通过P5.2输出,但这样已经是通过编程得到的信号了,已经不是一个时钟信号了。而本题的意义在于,ACLK能否直接在5.2上输出,这显然是不能的,因为P5.2的功能模块里没有输出ACLK这一项功能。
2)上电复位后,CPU工作的时钟信号MCLK的频率是多少?是8MHz吗?编程在P5.4
上输出MCLK并记录。
如上图记录的频率值为748.5KHZ约为750KHZ,故不是8Mhz。
3.定时器A的定时功能学习
采用定时器A 的计数方式(UP MODE ),每秒产生一次CCR0的TACCR0 CCIFG 中断,计数秒值,将计数值通过8个发光二极管显示出来,并控制蜂鸣器每5秒发出一次警报。
思考:采用定时器的计时,实验6中任务一延时方式的计时,这两种方法CPU 在执行流程上有什么不同? 任务实现:
首先开头添加如下两句,设置TACCR0的中断向量
ORG 0FFE0h+TIMERA0_VECTOR ;设置TACCR0中断向量
DC16 TACCR0_ISR ;entrance of interrupt 然后在主程序中设置TimerA
MOV #32767,&TACCR0 ;TACCR0
MOV #TASSEL_1+MC_1+TACLR,&TACTL ;ACLK,up mode MOV #CCIE,&TACCTL0 ;enable interrupt 这里TACL 采用ACLK , ACLK 是32.768khz 那么计算TACCRO
(01)
132768
TACCR +=
TACCR0=32767。
也就是说,大约每一秒进入一次中断子程,这就是timerA 所完成的任务,计时。
如上图所示。同时,把P2,P6端口调为输出端口,因为需要用到LED 和蜂鸣器。
上图是TACCR0中断子程,调用timer这个子程序。R11是LED灯的状态寄存器,由于LED低电平点亮,所以R11一开始置FF,取反后加1 再取反就是LED1亮,没进行一次循环R5加1,这是计数寄存器,R6中存的数是5如果R5R6相减出现0说明已经到了第五秒,继续调用buzz子程序,BUZZ就是让蜂鸣器发出警报声,注意,蜂鸣器也是低电平点亮。在这里需要用到延时子程,因为这是TACCR0中断子程序内部了,没有延时效应了,需要自己添加。
思考:采用定时器的计时,实验6中任务一延时方式的计时,这两种方法CPU在执行流程上有什么不同?
答:实验六任务1的延时是“暴力”延时,因为任何一条指令都会有完成时间,于是只要我指令足够多,那么会产生一定的时间延迟。实验六任务1的思想就是我给一个寄存器赋4000(FA0)并自减,如果寄存器到0了执行需要的指令。于是这中间产生了4000条指令,如果再加上一个循环嵌套那么会产生相当显著的延时。而定时器延时则是系统中设计好的一个计数器,它是系统给的。执行的时候系统会调用timerA。他们两个是不一样的。
但是从本质上来讲,这两个方式的延时,都是通过执行大量指令来完成延时。
4.定时器A的定时功能的应用
完成一个电子表的设计,其中电子表的分钟值通过数码管显示,秒值通过发光二极管显示。1秒的定时采用定时器A完成,分钟值采用16进制形式显示在数码管上,秒值采用2进制显示在LED上。例如:最大计时数是15分59秒,显示为F00111011,其中F显示在数码管上,00111011通过发光二极管显示。
任务实现:
1秒的实现在任务3 中已经实现,而计时的程序在实验6中也写过相应的代码,数码管显示在实验6中也写过相应的代码。
首先添加数组,
定义了LED需要显示的0~F。存放在DATA16_C。
以上为程序段和全部注释。各部分功能已经注释的非常清楚。5.(选做)掌握基本时钟模块及其相关控制寄存器
当三个寄存器全部是复位值时,三个时钟的波形如下图所示。
Figure 1ACLK 复位值32.68KHZ
Figure 2 MCLK和SMCLK的复位值748.5KHZ
当BCSCTL1赋87h时,下图为三个时钟的波形图。
一、基本知识 1、微机的三总线是什么? 答:它们是地址总线、数据总线、控制总线。 2、8086 CPU启动时对RESET要求?8086/8088 CPU复位时有何操作? 答:复位信号维高电平有效。8086/8088 要求复位信号至少维持 4 个时钟周期的高电平才有效。复位信号来到后,CPU 便结束当前操作,并对处理器标志寄存器,IP,DS,SS,ES 及指令队列清零,而将cs 设置为FFFFH, 当复位信号变成地电平时,CPU 从FFFF0H 开始执行程序 3、中断向量是是什么?堆栈指针的作用是是什么?什么是堆栈? 答:中断向量是中断处理子程序的入口地址,每个中断类型对应一个中断向量。堆栈指针的作用是指示栈顶指针的地址,堆栈指以先进后出方式工作的一块存储区域,用于保存断点地址、PSW 等重要信息。 4、累加器暂时的是什么?ALU 能完成什么运算? 答:累加器的同容是ALU 每次运行结果的暂存储器。在CPU 中起着存放中间结果的作用。ALU 称为算术逻辑部件,它能完成算术运算的加减法及逻辑运算的“与”、“或”、“比较”等运算功能。 5、8086 CPU EU、BIU的功能是什么? 答:EU(执行部件)的功能是负责指令的执行,将指令译码并利用内部的寄存器和ALU对数据进行所需的处理BIU(总线接口部件)的功能是负责与存储器、I/O 端口传送数据。 6、CPU响应可屏蔽中断的条件? 答:CPU 承认INTR 中断请求,必须满足以下 4 个条件: 1 )一条指令执行结束。CPU 在一条指令执行的最后一个时钟周期对请求进行检测, 当满足我们要叙述的4 个条件时,本指令结束,即可响应。 2 )CPU 处于开中断状态。只有在CPU 的IF=1 ,即处于开中断时,CPU 才有可能响应可屏蔽中断请求。 3 )没有发生复位(RESET ),保持(HOLD )和非屏蔽中断请求(NMI )。在复 位或保持时,CPU 不工作,不可能响应中断请求;而NMI 的优先级比INTR 高,CPU 响应NMI 而不响应INTR 。 4 )开中断指令(STI )、中断返回指令(IRET )执行完,还需要执行一条指令才 能响应INTR 请求。另外,一些前缀指令,如LOCK、REP 等,将它们后面的指令看作一个总体,直到这种指令执行完,方可响应INTR 请求。 7、8086 CPU的地址加法器的作用是什么? 答:8086 可用20 位地址寻址1M 字节的内存空间,但8086 内部所有的寄存器都是16 位的,所以需要由一个附加的机构来根据16 位寄存器提供的信息计算出20 位的物理地址,这个机构就是20 位的地址加法器。 8、如何选择8253、 8255A 控制字? 答:将地址总线中的A1、A0都置1 9、DAC精度是什么? 答:分辨率指最小输出电压(对应的输入数字量只有最低有效位为“1 ”)与最大输出电压(对应的输入数字量所有有效位全为“1 ”)之比。如N 位D/A 转换器,其分辨率为1/ (2--N —1 )。在实际使用中,表示分辨率大小的方法也用输入数字量的位数来表示。 10、DAC0830双缓冲方式是什么?
丽水学院《微机原理》考试试卷 班级:___________ 姓名:___________学号:____________ 题号一二三四五六总分得分 得分 一、判断题(每题1分,共10分) 1、十六位微型机的含义是:这种机器能同时处理十六位二进制数。(√) 2、微机的字长愈长,计算精度愈高,指令处理功能愈强。(√) 3、MOV指令要影响标志位。(×) 4、JMP SHORT NEXT称为近转移。(×) 5、8086与8088在软件上不一定完全兼容。(×) 6、端口是位于主机与外设之间的总称。() 7、DMA是一种不需要CPU介入的高速数据传送。() 8、8253中的计数可以通过初始化设置成加计数或减计数。() 9、内部中断的优先权总是高于外部中断。() 10、两片8259A级连后可管理16级中断。() 得分 二、选择题(每题1分,共20分) 1、属于数据寄存器组的寄存器是_____C___。 A.AX,BX,CX,DS B.SP,DX,BP,IP C. AX,BX,CX,DX D.AL,DI,SI,AH 2、在8086和8088汇编语言中,一个字能表示的有符号数的范围是_____B___。 A.-32768≤n≤32768 B.-32768≤n≤32767 C.-65535≤n≤65535 D.-65536≤N≤65535 3、某数存于内存数据段中,已知该数据段的段地址为2000H,而数据所在单元的偏移地址为0120H,该数的在内存的物理地址为__B______。 A.02120H B.20120H C.21200H D.03200H 4、在8086/8088微机系统中,将AL内容送到I/O接口中,使用的指令是 ___D_____。 A.IN AL,端口地址 B.MOV AL,端口地址 C.OUT AL,端口地址 D.OUT 端口地址,AL 5、与十进制数58.75等值的十六进制数是__B______。 A.A3.CH B.3A.CH C.3A.23H D.C.3AH 6、将十六进制数FF.1转换成十进制数是__C______。 A.255.625 B.2501625 C.255.0625 D.250.0625 7、十进制负数-38的八位二进制补码是____D____。
微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。二、实验内容 在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的 30H~7FH 单元清零。 三、实验设备 PC机一台。 四、实验步骤 用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。五、实验思考 1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单 文件名称:CLEAR.ASM ORG 0000H CLEAR: MOV R0,#30H ;30H 送R0寄存器 MOV R6,#50H ;50H 送R6寄存器(用作计数器) CLR1: MOV A,#00H ;00 送累加器A MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1 DJNZ R6,CLR1 ;不到50H个字节,继续 WAIT: LJMP WAIT END 实验二数据传送 一、实验目的 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备 PC机一台。
被嗅材尊机原理与旅用实验指导布实验 程禹够告 沽说:信息工程修陇班披, 电8 77-7班g生名:Eg 样号,2011202030 实验一编辑、汇编、 连接、调试程序的使用 程序设计A 设计要求 (1)将FFFFH 送到AX, SI, DI, BP, DS, ES 寄存器 (2)编程(利用DEBUG调试程序,每执行一次T命令后,记录相关寄存器
内容,并判断是否正确。)程序如下: CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,0FFFFH MOV SI,AX MOV DI,AX MOV BP,AX MOV DS,AX MOV ES,AX RET STARTENDP CODE ENDS END STT B、设计要求 ⑴将1,2,3,4,5分别送到数据段偏移地址为1000H, 1001H, 1002H, 1003H, 1004H,单元中。 ⑵编程 DATA SEGMENT ORG 1000H DATA ENDS CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX, DATA MOV DS,AX MOV AL,1 MOV DS:[1000H],AL
MOV AL,2 MOV DS:[1001H],AL MOV AL,3 MOV DS:[1002H],AL MOV AL,4 MOV DS:[1003H],AL MOV AL,5 MOV DS:[1004H],AL RET STARTENDP CODE ENDS END STT 实验二、加法程序设计 设计内容A、设计要求 (1)在数据段偏移地址1000H处开始,连续存放有3字节的数据(高位对应高地 址,低位对应低地址),1003H处开始连续存放有两字节的数据(高对高,低 对低),求这两数据之和,并将结果放在流量数据之后。(eg: 1234 56H+78 9AH=12 AC FOH) (2)编程 DATA SEGMENT ORG 1000H H1 DB56H J34H,12H,9AH,78H H2 DB 3DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOVSIJOOOH MOV DI,1003H MOV BX,1005H MOV CX,2 CLC LP:MOVAL,[SI] MOV DL,[DI[ ADCAL,DL MOV [BX],AL INC SI
微机原理期末考试试卷 (有答案) -CAL-FENGHAI.-(YICAI)-Company One1
《微机原理》考试试卷 一、判断题(每题1分,共10分) 1、十六位微型机的含义是:这种机器能同时处理十六位二进制数。(√) 2、微机的字长愈长,计算精度愈高,指令处理功能愈强。(√) 3、MOV指令要影响标志位。(×) 4、JMP SHORT NEXT称为近转移。(×) 5、8086与8088在软件上不一定完全兼容。(×) 6、端口是位于主机与外设之间的总称。() 7、DMA是一种不需要CPU介入的高速数据传送。() 8、8253中的计数可以通过初始化设置成加计数或减计数。() 9、内部中断的优先权总是高于外部中断。() 10、两片8259A级连后可管理16级中断。() 二、选择题(每题1分,共20分) 1、属于数据寄存器组的寄存器是_____C___。 A.AX,BX,CX,DS B.SP,DX,BP,IP C. AX,BX,CX,DX D.AL,DI,SI,AH 2、在8086和8088汇编语言中,一个字能表示的有符号数的范围是 _____B___。 A.-32768≤n≤32768 B.-32768≤n≤32767 C.-65535≤n≤65535 D.-65536≤N≤65535 3、某数存于内存数据段中,已知该数据段的段地址为2000H,而数据所在单元的偏移地址为0120H,该数的在内存的物理地址为__B______。 A.02120H B.20120H C.21200H D.03200H 4、在8086/8088微机系统中,将AL内容送到I/O接口中,使用的指令是 ___D_____。
实验报告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
的数据线为16位,地址线为20位,I/O口使用16位地址线。 2.在某进制的运算中7×3=33,则7×5=_55。 3.用8位二进制数表示整数时,十进制数(-128)的补码为__。原码为无,反码为无。3.8086内部寄存器长度为16位,通用寄存器有8个,段寄存器有4个。 4.8086偶存储体的选片信号是A0,奇存储体的选片信号是BHE 。 5.MOV AX,[BX+SI]的源操作数是基址变址寻址方式,目的操作数是寄存器寻址方式。6.8086可以指向堆栈的指针寄存器有bp和sp。 7.程序中段定义结束的伪指令是ENDS,子程序定义结束的伪指令是ENDP。 8.EEPROM的擦除方法为点擦除. 9.下列指令段经汇编后,DATA所代表的偏移地址为_100 CH__。 & ORG 1000H STROE DB 12 DUP() DATA DB 05H,06H,07H,08H 1. 8086/8088在不考虑段跨越情况下,DI寄存器给出的偏移地址位于_C__。 A. 仅DS段 B. DS或SS段 C. DS或ES段 D. DS或CS段 2. 下列指令中格式错误的是___A___。 A. SHL AL,CX B. XCHG AL,BL C. MOV BX,[SI] D. AND AX,BX 3. 设(20010H)=3FH,(20011H)=B2H,执行下列指令段后,BX=____B__。 MOV AX,2000H " MOV DS,AX MOV BX,[0010H] A. B2B2H B. B23FH C. 3F3FH D. 3FB2H 4. 若SP=0124H,SS=3300H,在执行INT 60H这条指令后,堆栈栈顶的物理地址为___D___。 A. 3311CH B. 33120H C. 33122H D. 3311EH 5. 下列指令中格式错误的是_C__。 A. MOV AX,357AH[BX][DI] B. OUT DX,AL C. LEA AX,50H[BX][BP] D. RCR BX,1 6. 下列指令中允许寻址范围最大的是_D__。 A. JNZ NEXT B. LOOP NEXT ¥ C. JMP SHORT PTR NEXT D. CALL NEAR PTR NEXT 7. 8086/8088不属于BIU部分的寄存器是__D____。 A. IP B. ES C. DS D. SP 8088最大模式比最小模式在结构上至少应增加___B_。 A. 中断优先级控制器 B. 总线控制器 C. 数据驱动器 D. 地址锁存器 9. 8086在存取存贮器中以偶地址为起始地址的字时,M/IO、BHE、A0的状态分别是____D__。 A. 0,0,1 B. 1,0,1 C. 1,1,0 D. 1,0,0 10. 一个半导体存贮芯片的引脚有 A13~A0,D3~D0,WE,OE,CS,VCC,GND等,该芯片存贮容量为____C__。 A. 8K×8 B. 8K×4 C. 16K×4 D. 16K×8 !
实 验 报 告 课 程 名 称 实 验 名 称 实 验 日 期 学 生 专 业 学 生 学 号 学 生 姓 名 教 师 姓 名 成 绩 南京理工大学机械工程学院 微机原理及应用 实验1 DEBUG 操作实验 实验2 汇编程序设计实验 实验3 8253定时/计数器实验 实验4 8255 并行接口实验 年 月 日 至 年 月 日
实验一DEBUG命令及其操作 一、实验目的 1.熟练掌握debug的常用命令,学会用debug来调试程序。 2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。 3.掌握各种寻址方法以及简单指令的执行过程。 二、实验要求 1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。 2.本实验要求在PC机上进行。 3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。三、实验内容 ●实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求: 1.写出运行结果; 2.小结debug常用命令及使用体会 答:1.原文已给出(略) 2.a 汇编 d显示内存单元内容 e修改单元内存内容 g执行命令 t单步(或多步)调试 n指定文件路径文件名(含扩展名) u反汇编 r查看寄存器值及修改 l加载程序 w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程 ●实验内容2 设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。 实验报告要求: 1.写出完成上述功能的程序段; 2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值 答: A100 Mov ax,3000 ;ax:3000 bx:0000 sp:ffee Mov bx,5000 ;ax:3000 bx:5000 sp:ffee Push ax ;ax:3000 bx:5000 sp:ffec
西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 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循环右移四位
微机原理期末考试试卷(有答案)
INC DI LOOP AGAIN 也可用指令___A____完成同样的功能。 A.REP MOVSB B.REP LODSB C.REP STOSB D.REPE SCASB 11、动态存贮器刷新,下面哪种说法正确________。 A.刷新可在CPU执行程序过程中进行 B.刷新在外电路控制下,定时刷新,但刷新时,信息不读出 C.在正常存贮器读操作时也会发生刷新,可防止刷新影响读出信息,故读操 作时,应关闭电路工作。 D.刷新过程一定伴随着信息输出,无法控制,故刷新时不要进行读出操作。 12、用4K×8的存贮芯片,构成64K×8的存贮器,需使用多少4K×8的存贮芯片,正确答案为________。 A.128片 B.16片 C.8片 D.32片 13、对内存单元进行写操作后,该单元的内容________。 A.变反 B.不变 C.随机 D.被修改 14、在DMA方式下,CPU与总线的关系是________。 A.只能控制地址总线 B.相互成隔离状态 C.只能控制数据线 D.相互成短接状态 15、在PC/XT机中键盘的中断类型码是09H,则键盘中断矢量存储在________。 A.36H~39H B.24H~27H C.18H~21H D.18H~1BH 16、已知某系统共带三台外设,即X、Y、Z,每台外设都能发出中断,它们的中 断优先级为X>Y>Z,当前在执行Z中断服务程序时,X,Y同时发出中断请求, 若此时IF=0,问CPU响应哪台外设请求________。 A.X设备 B.Y设备 C.无响应X,后响应Y D.都不响应 17、8255A芯片中各端口的位数是________。 A.8位 B.26位 C.12位 D.4位 18、8255A的________一般用作控制或状态信息传输。 A.端口A B.端口B C.端口C D.端口C的上半部分 19、若以8253某通道的CLK时钟脉冲信号为基础,对其实行N分频后输出,通 道工作方式应设置为________。 A.方式0 B.方式2 C.方式3 D.方式4 20、8253有________个独立的计数器。 A.2 B.3 C.4 D.6 得分 三、填空题(每空1分,共20分) 1、IBM-PC机中的内存是按段存放信息的,一个段最大存贮空间为___64K_____ 字节。 2、下列字符表示成相应的ASCII码是多少? 回车___0AH_____;数字’0’ ___36H_____。 3、假设(DS)=0B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH) =4000H,当执行指令“LES DS,[BX]”后,(DI)=____05AEH____,(ES)
1、8086的数据线为16位,地址线为20位,I/O口使用16位地址线。 2、在某进制的运算中7×3=33,则7×5=_55。 3、用8位二进制数表示整数时,十进制数(-128)的补码为__。原码为无,反码为无。 3.8086内部寄存器长度为16位,通用寄存器有8个,段寄存器有4个。 4.8086偶存储体的选片信号就是A0,奇存储体的选片信号就是BHE 。 5.MOV AX,[BX+SI]的源操作数就是基址变址寻址方式,目的操作数就是寄存器寻址方式。 6.8086可以指向堆栈的指针寄存器有bp与sp。 7.程序中段定义结束的伪指令就是ENDS,子程序定义结束的伪指令就是ENDP。 8.EEPROM的擦除方法为点擦除、 9、下列指令段经汇编后,DATA所代表的偏移地址为_100 CH__。 ORG 1000H STROE DB 12 DUP(?) DATA DB 05H,06H,07H,08H 1、8086/8088在不考虑段跨越情况下,DI寄存器给出的偏移地址位于_C__。 A、仅DS段 B、DS或SS段 C、DS或ES段 D、DS或CS段 2、下列指令中格式错误的就是___A___。 A、SHL AL,CX B、XCHG AL,BL C、MOV BX,[SI] D、AND AX,BX 3、设(20010H)=3FH,(20011H)=B2H,执行下列指令段后,BX=____B__。 MOV AX,2000H MOV DS,AX MOV BX,[0010H] A、B2B2H B、B23FH C、3F3FH D、3FB2H 4、若SP=0124H,SS=3300H,在执行INT 60H这条指令后,堆栈栈顶的物理地址为___D___。 A、3311CH B、33120H C、33122H D、3311EH 5、下列指令中格式错误的就是_C__。 A、MOV AX,357AH[BX][DI] B、OUT DX,AL C、LEA AX,50H[BX][BP] D、RCR BX,1 6、下列指令中允许寻址范围最大的就是_D__。 A、JNZ NEXT B、LOOP NEXT C、JMP SHORT PTR NEXT D、CALL NEAR PTR NEXT 7、8086/8088不属于BIU部分的寄存器就是__D____。 A、IP B、ES C、DS D、SP 8、8086/8088最大模式比最小模式在结构上至少应增加___B_。 A、中断优先级控制器 B、总线控制器 C、数据驱动器 D、地址锁存器 9、8086在存取存贮器中以偶地址为起始地址的字时,M/IO、BHE、A0的状态分别就是____D__。 A、0,0,1 B、1,0,1 C、1,1,0 D、1,0,0 10、一个半导体存贮芯片的引脚有A13~A0,D3~D0,WE,OE,CS,VCC,GND等,该芯片存贮容量为____C__。 A、8K×8 B、8K×4 C、16K×4 D、16K×8 1、写出8086CPU所含14个寄存器的英文标识及中文名称。CS16位代码段寄存器DS 16位数据段寄存器SS16位堆栈段寄存器ES16位附加段寄存器AX 累加寄存器BX基址寄存器
课程名称:_________微机原理及应用___________指导老师:_____钟崴_______成绩:__________________ 实验名称:_________数据传送___________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求(必填) 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容和原理(必填) 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、主要仪器设备(必填) PC机一台。 四、操作方法和实验步骤 逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、程序清单 1. ORG 0000H CLEAR MOV R0,#30H ;间接寻址 MOV A,#40H ;立即寻址 MOV @R0,A ;间接寻址 MOV A,30H ;直接寻址 MOV DPTR,#0100H ;间接寻址 MOV A,#36H MOVX @DPTR,A MOV R0,#50H ;立即寻址 MOV A,#10 MOVC A,@A+DPTR ;变址寻址 END
微机原理实验报告 学院: 专业班级: 姓名 学号
实验一汇编语言编程基础 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.题目:编程将(AX)=2387、(BX)=192FH、(CX)=9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 CODE SEGMENT ASSUME CS:CODE START: MOV AX,2387 MOV BX,192FH MOV CX,9256 CMP AX,BX JAE NEXT1 XCHG AX,BX NEXT1: CMP AX,CX JAE NEXT2 XCHG AX,CX NEXT2: CMP BX,CX JAE NEXT3 XCHG BX,CX NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 2.题目:编程将(BX)=8600H、(CX)=3489H、(DX)=9235按有符号数由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 ;CODE SEGMENT ASSUME CS:CODE START: MOV BX,8600h MOV CX,3489H MOV DX,9235 CMP BX,CX JGE NEXT1 XCHG BX,CX NEXT1: CMP BX,DX JGE NEXT2 XCHG BX,DX NEXT2: CMP CX,DX JGE NEXT3 XCHG CX,DX NEXT3:
MOV AH,4CH INT 21H CODE ENDS END START 3.题目:在数据段中定义如下数据:32,34,89H,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。 DATA SEGMENT NUM DB 32,34,89H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DAT START: MOV AX,DATA MOV DS,AX ;初始化DS LEA BX,NUM ;取有效地址到BX,以便访问要排序的数 MOV AL,[BX] CMP AL,[BX+1] JGE NEXT1 ;若第一个数大则跳转,否则将第一个与第二个数交换 XCHG AL,[BX+1] MOV [BX],AL NEXT1: CMP AL,[BX+2] JGE NEXT2;若第一个数大则跳转,否则将第一个与第三个数交换 XCHG AL,[BX+2] MOV [BX],AL NEXT2: MOV AL,[BX+1];将第二个和第三个数比较 CMP AL,[BX+2] JGE NEXT3;若第二个数大则跳转,否则将第二个与第三个数交换 XCHG AL,[BX+2] MOV [BX+1],AL NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 4.题目:在数据段中定义如下数据:99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。 data segment num db 99h,25h,86h data ends code segment assume cs:code,ds:data start:mov ax,data
微机原理及应用实验报告 班级:机械1301班 :黄佳清 学号:0801130117 座位号: 中南大学机电工程学院
实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,DPTR MOVX R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光
2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元容 3.
习题1 1.什么是汇编语言,汇编程序,和机器语言? 答:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。 汇编语言是面向及其的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这种用符号代替机器语言的二进制码,就把机器语言编程了汇编语言。 使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。 2.微型计算机系统有哪些特点?具有这些特点的根本原因是什么? 答:微型计算机的特点:功能强,可靠性高,价格低廉,适应性强、系统设计灵活,周期短、见效快,体积小、重量轻、耗电省,维护方便。 这些特点是由于微型计算机广泛采用了集成度相当高的器件和部件,建立在微细加工工艺基础之上。 3.微型计算机系统由哪些功能部件组成?试说明“存储程序控制”的概念。 答:微型计算机系统的硬件主要由运算器、控制器、存储器、输入设备和输出设备组成。 “存储程序控制”的概念可简要地概括为以下几点: ①计算机(指硬件)应由运算器、存储器、控制器和输入/输出设备五大基本部件组成。 ②在计算机内部采用二进制来表示程序和数据。 ③将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令加以执行,这就是存储程序的基本含义。 ④五大部件以运算器为中心进行组织。 4.请说明微型计算机系统的工作过程。 答:微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存
放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。 5.试说明微处理器字长的意义。 答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数。它决定着计算机内部寄存器、ALU和数据总线的位数,反映了一台计算机的计算精度,直接影响着机器的硬件规模和造价。计算机的字长越大,其性能越优越。在完成同样精度的运算时,字长较长的微处理器比字长较短的微处理器运算速度快。 6.微机系统中采用的总线结构有几种类型?各有什么特点? 答:微机主板常用总线有系统总线、I/O总线、ISA总线、IPCI总线、AGP总线、IEEE1394总线、USB总线等类型。 7.将下列十进制数转换成二进制数、八进制数、十六进制数。 ①(4.75)10=(0100.11)2=(4.6)8=(4.C)16 ②(2.25)10=(10.01)2=(2.2)8=(2.8)16 ③(1.875)10=(1.111)2=(1.7)8=(1.E)16 8.将下列二进制数转换成十进制数。 ①(1011.011)2=(11.6)10 ②(1101.01011)2=(13.58)10 ③(111.001)2=(7.2)10 9.将下列十进制数转换成8421BCD码。 ① 2006=(0010 0000 0000 0110)BCD ② 123.456=(0001 0010 0011.0100 0101 0110)BCD 10.求下列带符号十进制数的8位基2码补码。 ① [+127]补= 01111111