搜档网
当前位置:搜档网 › 微机原理实验讲义2015

微机原理实验讲义2015

微机原理实验讲义2015
微机原理实验讲义2015

微机原理实验讲义

实验一8255A并行口实验(一)

一、实验目的

⒈掌握8255A和微机接口方法。

⒉掌握8255A的工作方式和编程原理。

二、实验内容

用8255PA口控制PB口。

三、实验接线图

图6-3

四、编程指南

⒈8255A芯片简介: 8255A可编程外围接口芯片是INTEL公司生产的通用并行接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:

方式0:基本输入/ 输出方式

方式l:选通输入/ 输出方式

方式2:双向选通工作方式

⒉使8255A端口A工作在方式0并作为输入口,读取Kl-K8个开关量,PB 口工作在方式0作为输出口。

五、实验程序框图

六、实验步骤

⒈在系统显示监控提示符“P.”时,按SCAL键,传送EPROM中的实验程序到内存中。(注:必须先传送EPROM后,再往下操作)

⒉ 8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连。

⒊ 8255A芯片B口的PB0-PB7依次接Ll-L8。

⒋运行实验程序。

在系统显示监控提示符“P.”时,输入11B0,按EXEC键,系统显示执行提示符“┌”拨动K1-K8, LI-L8会跟着亮灭。

七、实验程序清单

CODE SEGMENT ;H8255-1.ASM

ASSUME CS:CODE

IOCONPT EQU 0FF2BH ;定义8255控制口

IOBPT EQU 0FF29H ;定义8255 PB口

IOAPT EQU 0FF28H ;定义8255 PA口

ORG 11B0H

START: MOV AL,90H ;定义PA输入,PB输出

MOV DX,IOCONPT ;控制口

OUT DX,AL ;写命令字

NOP ;延时

NOP

NOP

IOLED1: MOV DX,IOAPT ;PA口

IN AL,DX ;读PA口

MOV DX,IOBPT ;PB口

OUT DX,AL ;写PB口

MOV CX,0FFFFH ;延时

DELAY: LOOP DELAY

JMP IOLED1 ;循环

CODE ENDS

END START

实验二8255A并行口实验(二)

一、实验目的

掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。

二、实验内容

用8255做输出口,控制十二个发光管亮灭,模拟交通灯管理。

三、实验接线图

图6-4

四、编程指南

⑴通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯, 以模拟交通路灯的管理。

⑵要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口l、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延时一段时间后,l、3路口的绿灯熄灭,而l、3路口的黄灯开始闪烁,闪烁若干次以后,l、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到l、3路口方向,之后,重复上述过程。

⑶程序中设定好8255A的工作模式及三个端口均工作在方式0,并处于输出状态。

⑷各发光二极管共阳极,使其点亮应使8255A相应端口的位清0。

五、实验程序框图

六、实验步骤

⒈在系统显示监控提示符“P.”时,按SCAL键。

⒉按图6-4连好实验线路

8255A:PC0->L3,PC1->L6,PC2->L9,PC3->L12,PC4->L2,PC5->L5,PC6->L8,PC7->L11;

PB4->L1,PB5->L4,PB6->L7,PB7->L10

⒊在“P.”态时,输入11E0后,按EXEC键;系统显示执行符“┌”,同时Ll-Ll5发光二极管模拟交通灯显示。

七、实验程序清单

CODE SEGMENT ;H8255-2.ASM

ASSUME CS:CODE

IOCONPT EQU 0FF2BH ;8255控制口

IOAPT EQU 0FF28H ;PA口

IOBPT EQU 0FF29H ;PB口

IOCPT EQU 0FF2AH ;PC口

ORG 11e0H

START: MOV AL,82H ;PB输入,PA,PC输出

MOV DX,IOCONPT

OUT DX,AL ;写命令字

MOV DX,IOBPT ;读PB口

IN AL,DX

MOV BYTE PTR DS:[0601H],AL ;保存PB口数据

MOV DX,IOCONPT ;8255控制口

MOV AL,80H

OUT DX,AL ;写命令字, PA,PB,PC输出

MOV DX,IOBPT ;

MOV AL,DS:[0601H]

OR AL,0F0H

OUT DX,AL

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL ;四路口红灯全亮

CALL DELAY1 ;延时

IOLED0: MOV AL,10100101B

MOV DX,IOCPT

OUT DX,AL ;南北绿灯亮,东西红灯亮

CALL DELAY1 ;延时

CALL DELAY1 ;延时

OR AL,0F0H

OUT DX,AL ;南北绿灯灭

MOV CX,8H

IOLED1: MOV DX,IOBPT

MOV AL,DS:[0601H]

AND AL,10101111B

OUT DX,AL ;南北黄灯亮

CALL DELAY2 ;延时

OR AL,01010000B

OUT DX,AL ;南北黄灯灭

CALL DELAY2 ;延时

LOOP IOLED1 ;南北黄灯闪烁8次

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL ;四路口红灯全亮

CALL DELAY2 ;延时

MOV AL,01011010B

OUT DX,AL ;东西绿灯亮

CALL DELAY1 ;延时

CALL DELAY1

OR AL,0F0H

OUT DX,AL ;东西绿灯灭

MOV CX,8H

IOLED2: MOV DX,IOBPT

MOV AL,DS:[0601H]

AND AL,01011111B

OUT DX,AL ;东西黄灯亮

CALL DELAY2 ;延时

OR AL,10100000B

OUT DX,AL ;东西黄灯灭

CALL DELAY2 ;延时

LOOP IOLED2 ;东西黄灯闪烁8次

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL ;四路口红灯全亮

CALL DELAY2

JMP IOLED0 ;循环继续

DELAY1: PUSH AX

PUSH CX

MOV CX,0030H

DELY2: CALL DELAY2

LOOP DELY2

POP CX

POP AX

RET

DELAY2: PUSH CX

MOV CX,8000H

DELA1: LOOP DELA1

POP CX

RET

CODE ENDS

END START

实验三定时器 / 计数器

一、实验目的

⒈学会8253芯片和微机接口的原理和方法。

⒉. 掌握8253定时器/计数器的工作方式和编程原理。

二、实验内容

用8253的0通道工作在方式3,产生方波。

三、实验接线图

图6-5

四、编程指南

⒈8253芯片介绍

8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。

8253的功能用途:

⑴延时中断⑸实时时钟

⑵可编程频率发生器⑹数字单稳

⑶事件计数器⑺复杂的电机控制器

⑷二进制倍频器

2,8253的六种工作方式:

⑴方式0:计数结束中断⑷方式3:方波频率发生器

⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号

⑶方式2:频率发生器⑹方式5:硬件触发的选通信号

五、实验程序框图

六、实验步骤

⒈按图6-5连好实验线路⑴

8253的GATE0接+5V。⑵

8253的CLK0插孔接分频器74LS393(左下方)的T2插孔,分频器

的频率源为8.0MHZ,T→8.0MHZ。

⒉运行实验程序

在系统提示符“P.”状态下,按SCAL键,输入1290,按EXEC键。

用示波器测量8253的OUT0输出插孔有方波产生。

七、实验程序清单

CODE SEGMENT ;H8253.ASM

ASSUME CS: CODE

ORG 1290H

START: JMP TCONT

TCONTRO EQU 0043H

TCON0 EQU 0040H

TCONT: MOV DX,TCONTRO ;8253控制口

MOV AL,36H ;命令字,计数器0,先低后高,方式3,HEX

OUT DX,AL ;写命令字

MOV DX,TCON0 ;T0口

MOV AL,00H ;计数器低位值

OUT DX,AL

MOV AL,04H ;计数器高位值

OUT DX,AL

JMP $

CODE ENDS

END START

实验四8259单级中断控制器实验

一、实验目的

⒈掌握8259中断控制器的接口方法。⒉

掌握8259中断控制器的应用编程。

二、实验内容

利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。

三、实验接线图

图6-6

四、编程指南

⑴8259芯片介绍

中断控制器8259A是专为控制优先级中断而设计的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。

即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。

⑵本实验中使用3号中断源IR3,“”插孔和IR3相连,中断方式

为边沿触发方式,每拨二次AN开关产生一次中断,满5次中断,显示“8259——good”。如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。

五、实验程序框图

IR3中断服务程序:

IR7中断服务程序:

六、实验步骤

1、按图6-6连好实验线路图。

⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“”

插孔和8259的3号中断IR3插孔相连,“”端初始为低电平;⑷8259的CS端接FF80H孔。

2、运行实验程序,在系统处于命令提示符“P.”状态下,按SCAL键,输入12D0,按EXEC键,系统显示8259-1。

3、拨动AN开关按钮,按满l0次显示good。

七、实验程序清单

CODE SEGMENT ;H8259.ASM

ASSUME CS: CODE

INTPORT1 EQU 0FF80H

INTPORT2 EQU 0FF81H

INTQ3 EQU INTREEUP3

INTQ7 EQU INTREEUP7

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

ORG 12D0H

START: JMP START0

BUF DB ?,?,?,?,?,?

intcnt db ?

data1:

db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,

0c6h,0a1h

db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: CLD ;递加

CALL BUF1 ;写显示缓冲初值

CALL WRINTVER ;写中断向量

MOV AL,13H ;写ICW1

MOV DX,INTPORT1

OUT DX,AL

MOV AL,08H ;写ICW2

MOV DX,INTPORT2

OUT DX,AL

MOV AL,09H ;写ICW4

OUT DX,AL

MOV AL,0F7H ;写OCW1

OUT DX,AL

MOV intcnt,01H ;中断计数初值

STI ;开中断

WATING: CALL DISP ;DISP 8259-1

JMP WATING ;循环显示WRINTVER: MOV AX,0H ;写中断向量子程序

MOV ES,AX

MOV DI,002CH ;IR3中断向量地址

LEA AX,INTQ3 ;IR3中断服务地址

STOSW ;写中断服务地址偏移量

MOV AX,0000h ;写中断服务段地址

STOSW

MOV DI,003CH ;IR7中断向量地址

LEA AX,INTQ7 ;IR7中断服务地址

STOSW ;写中断服务地址偏移量

MOV AX,0000h ;写中断服务段地址

STOSW

RET

INTREEUP3: CLI ;IR3中断服务

push ax ;压栈保护现场

push bx

push cx

push dx

MOV AL,INTCNT ;

CALL CONVERS ;拆送缓冲区

MOV BX,OFFSET BUF ;077BH

MOV AL,10H

MOV CX,05H

INTRE0: MOV [BX],AL ;高五位缓冲区送熄灭码INC BX

LOOP INTRE0

MOV AL,20H ;中断返回码

MOV DX,INTPORT1

OUT DX,AL

ADD INTCNT,01H

CMP INTCNT,06H

JNA INTRE2 ;中断次数小于5次继续

CALL BUF2 ;中断次数结束DISP:good INTRE1: CALL DISP

JMP INTRE1

CONVERS: AND AL,0FH ;拆送缓冲区

MOV BX,offset buf ;077AH

MOV [BX+5],AL

RET

INTRE2: MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

pop dx

pop cx

pop bx

pop ax

STI

IRET ;中断返回

INTREEUP7: CLI ;IR7中断服务

MOV AL,20H ;中断返回码

MOV DX,INTPORT1

OUT DX,AL

call buf3 ;disp:err

INTRE3: CALL DISP ;循环显示:ERR

JMP INTRE3

DISP: MOV AL,0FFH ;显示子程序 ,5ms

MOV DX,PA

OUT DX,AL

MOV CL,0DFH ;20H

MOV BX,OFFSET BUF

DIS1: MOV AL,[BX]

MOV AH,00H

PUSH BX

MOV BX,OFFSET DATA1

ADD BX,AX

MOV AL,[BX]

POP BX

MOV DX,PB

OUT DX,AL

MOV AL,CL

MOV DX,PA

OUT DX,AL

PUSH CX

DIS2: MOV CX,00A0H

LOOP $

POP CX

CMP CL,0FEH ;01H

JZ LX1

INC BX

ROR CL,1 ;SHR CL,1

JMP DIS1

LX1: MOV AL,0FFH

MOV DX,PB

OUT DX,AL

RET

BUF1: MOV BUF,08H ;写”8259-1”

MOV BUF+1,02H

MOV BUF+2,05H

MOV BUF+3,09H

MOV BUF+4,17H

MOV BUF+5,01H

RET

BUF2: MOV BUF,09H ;写”good ”

MOV BUF+1,00H

MOV BUF+2,00H

MOV BUF+3,0dH

MOV BUF+4,10H

MOV BUF+5,10H

RET

BUF3: MOV BUF,0eH ;写”err ”

MOV BUF+1,18H

MOV BUF+2,18H

MOV BUF+3,10H

MOV BUF+4,10H

MOV BUF+5,10H

RET

CODE ENDS

END START

实验五简单I/O口扩展实验

一、实验目的

1、学习微机系统中扩展简单I/O口的方法。

2、学习数据输入输出程序的编制方法。

二、实验内容

利用74LS244作为输入口,读取开关状态,并将此状态通过74LS273再驱动发光二极管显示出来。

三、实验接线图

图6-12

四、实验程序框图

五、实验步骤

l、按图6-l2接线,Y0~Y7接K1~K8,Q0~Q7接L1~L8,CS1接FF80H 孔,CS2接FF90H孔。

2、运行实验程序,在系统处于命令提示符“P.”状态下,按SCAL键,输入19D0,按EXEC键。

3、按动K1~K8,观察Ll~L8是否对应点亮。

六、实验程序清单

CODE SEGMENT ;IO.ASM

ASSUME CS: CODE

ORG 19D0H

START: MOV DX,0FF80H ;244口地址

IN AL,DX ;读244输入

MOV DX,0FF90H ;273口地址

OUT DX,AL ;送273输出

JMP START ;循环继续

CODE ENDS

END START

实验六求最大值和最小值

一、实验目的

1、学习子程序的定义和调用方法。

2、掌握子程序设计、调试。

二、实验内容

对内存中给定的几个无符号字节数,求其最大值和最小值并在数码管上显示。

三、实验程序框图

四、实验步骤

联机模式:

(1)在内存4000H~4007H中写入任意八个字节的数,按下MON键,返回P状态。

(2)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S7.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(3)数码管显示为:“XX——XX”,最左两位为最大值,最右两位为最小值。

脱机模式:

1、在P.态下,按SCAL键,然后在内存4000H~4007H中写入任意八个字节的数,按下MON键,返回P状态。

2、在P.态下,输入2E70,按EXEC键。

3、数码管显示为:“XX——XX”,最左两位为最大值,最右两位为最小值。

五、实验程序清单

CODE SEGMENT ;S7.ASM,LOOK FOR MAX & MIN

ASSUME CS:CODE

ORG 2E70H ;INPUT DATA 4000H--4007H START: JMP START0

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

BUF DB ?,?,?,?,?,?

data1:

db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0

c6h,0a1h

db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV SI,4000H ;数据首址

MOV CX,0008H ;长度

CALL MAXMIN ;调用比较大小子程序

CALL BUF1 ;最大最小值送显示缓冲区

CON1: CALL DISP ;循环调用显示子程序

JMP CON1

MAXMIN: JCXZ EXIT ;比较结束子程序返回

PUSH SI ;压栈

PUSH CX

PUSH BX

MOV BH,[SI] ;取第一个数

MOV BL,BH ;保存数据到BL

CON2: LODSB ; 取数

CMP AL,BH ;比较两数

JNA X1 ;小于等于转

MOV BH,AL ;BH存大的数

JMP X2 ;转X2

X1: CMP AL,BL ;比较两数

JNB X2 ; 大于等于转

MOV BL,AL ;BL存小的数

X2: LOOP CON2 ;未完继续

MOV AX,BX ;

POP BX ;出栈

POP CX

POP SI

EXIT: RET ;返回

DISP: MOV AL,0FFH ;显示子程序5ms

MOV DX,PA

OUT DX,AL

MOV CL,0DFH ;注释略,见实验六显示程序

MOV BX,OFFSET BUF

DIS1: MOV AL,[BX]

MOV AH,00H

PUSH BX

MOV BX,OFFSET DATA1

ADD BX,AX

MOV AL,[BX]

POP BX

MOV DX,PB

OUT DX,AL

MOV AL,CL

MOV DX,PA

OUT DX,AL

PUSH CX

DIS2: MOV CX,00A0H

LOOP $

POP CX

CMP CL,0FEH ;01H

JZ LX1

MOV AL,0FFH ;00H

MOV DX,PA

OUT DX,AL

INC BX

ROR CL,1 ;SHR CL,1

JMP DIS1

LX1: MOV AL,0FFH

MOV DX,PB

OUT DX,AL

RET

BUF1: MOV BH,AH

CALL ZH

MOV BUF+5,AL

MOV BUF+4,AH

MOV AL,BH

CALL ZH

MOV BUF,AH

MOV BUF+1,AL

MOV BUF+2,17H

MOV BUF+3,17H

RET

;-------------------------------------------------------- ZH: MOV BL,AL ;数据拆送

MOV CL,4

ROL AL,CL

AND AL,0FH

MOV AH,AL

MOV AL,BL

AND AL,0FH

RET

;------------------------------------------------------- CODE ENDS

END START

微机原理学习心得

微机原理学习心得 本学期的微机原理课程即将要结束,以下是关于微机这门课程的心得体会: 初学《微机原理》时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。“麻雀虽小,五脏俱全”可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。 《微机原理》课程有许多的新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的有很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。 学习过程中,我发现许多概念很接近,为了更好的掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部

分,它与微型计算机、微型计算机系统是完全不同的概念。 在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要。在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这种方法是最有效,最可靠的。比如,最近闹得沸沸扬扬的珊瑚虫一案,其软件制作的核心人物就是使用汇编语言来创造闻名遐迩的QQ查IP软件-----珊瑚虫,并成立了有名的珊瑚虫工作室,其威力可见一斑。 然而,事物就是有两面性,有优点自然缺点也不少。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较复杂的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。 汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单的基础开始的。那么学习高级语言也当然应当从汇编开始。学习汇编语言实际上是培养了学习计算机语言的能力和素养。个人认为,学习汇编语言对学习其他语言很有促进作用。 汇编语言在本学期微机学习中有核心地位。本学期微机原理课程内容繁多,我认为在学习中要考虑到“学以致用”,不能过分强调课程的系统性和基本理论的完整性,而应该侧重于基本方法和应用实例。从微机应用系统的应用环境和特点来看,微机系统如何与千变万化的外部设备、外部世界相连,如何与它们交换信息,是微机系统应用中的关键所在,培养一定的微机应用系统的分析能力和初步设计能

中国石油大学微机原理期末考试微机编程题总结

1已知在数据段中定义变量VAL1,其中装入了100个字节的数据;VAL2为数据段中定义的可以存储100个字节的变量。要求将VAL1中的内容取负(即,正数变负数,负数变正数,零不变)后传送到VAL2中。画出程序流程图,并编写完整的8086汇编程序。数据段可采用以下定义形式: DATA SEGMENT VAL1 DB 100 DUP(?) VAL2 DB 100 DUP(?) DATA ENDS 答:流程图:(2分) 程序(4分):结构1分,初始化1分,循环体1分,DOS接口1分。每部分可按0.5分进行得扣分。 CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV ES,AX CLD MOV SI,OFFSET VAL1 ;LEA SI,VAL1 MOV DI,OFFSET VAL2 ;LEA DI,VAL2 MOV CX,100 LP:N EG [SI] MOVSB LOOP LP MOV AH,4CH INT 21H CODE ENDS END START 注:循环体内也可以使用减法指令、MOV指令、INC指令等。只要完成取负及数据传送即可。与DOS接口也可采用子程序结构。

2设在内存缓冲区中有一数据块STRDATA,存放着30 个字节型补码数据。要求画出程序流程框图,编写完整的汇编语言源程序,找出其中的最大数,存入RESULT 单元中,并在关键语句后加适当注释。 答: DSEG SEGMENT STRDATA DB 30 DUP(?) ;定义数据串 RESULT DB DUP(?) DSEG ENDS CSEG SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX, OFFSET STRDATA ;数据串首址→BX MOV AL, [BX] MOV CX, 29 ;数据长度→CX L1: INC BX ;地址指针加1 CMP AL, [BX] ;和当前数比较 JGE L2 ;当前数大 MOV AL, [BX] ;当前数为最大数 L2: DEC CX ;数据串长度减1 JNZ L1 ;串未完,继续 MOV RESULT, AL ;保存最大数在RESULT MOV AH,4CH INT 21H CSEG ENDS END START

内蒙古工业大学微机原理实验指导答案.doc

被嗅材尊机原理与旅用实验指导布实验 程禹够告 沽说:信息工程修陇班披, 电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

微机软件实验习题与答案(完整版)

微机原理软件实验 实验1 两个多位十进制数相加的实验 实验容:将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个存单元中(低位在前),结果送回DATA1处。完整代码如下: DATAS SEGMENT ;此处输入数据段代码 STRING1 DB'input the first number:','$' STRING2 DB 13,10,'input the second number:','$' STRING3 DB 13,10,'the output is:','$' DATA1 DB 6 DUP(00H),'$' DATA2 DB 6 DUP(00H),'$' DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 LEA SI,DATA1 LEA DI,DATA2 L0: LEA DX,STRING1;打印字符串STRING1 MOV AH,09 INT 21H INPUT1: ;输入第一个数 MOV AH,01;输入字符至AL中 INT 21H CMP AL,'/' JE L1 MOV [SI],AL INC SI

JMP INPUT1 L1: LEA DX,STRING2;打印字符串STRING2 MOV AH,09 INT 21H INPUT2: ;输入第二个数 MOV AH,01;输入字符至AL INT 21H CMP AL,'/' JE L2 MOV [DI],AL INC DI JMP INPUT2 L2: MOV SI,0 CLC;清空进位标志位CF MOV CX,6

微机原理与接口技术课程总结

微机原理与接口技术课程总结 篇一:《微机原理与接口技术》课程总结 《微机原理与接口技术》课程总结 班级:12电子专升本学号:1205061044姓名:陶翠玲 主要内容: 《微机原理与接口技术》是我们这学期开的比较难学的一门课,课程紧密结合通信工程专业的特点,围绕微型计算机原理和应用主题,以intel8086cPU为主线,系统介绍了微型计算机的基本知识、基本组成、体系结构、工作模式,介绍了8086cPU的指令系统、汇编语言及程序设计方法和技巧,存储器的组成和i/o接口扩展方法,微机的中断结构、工作过程,并系统介绍了微机中的常用接口原理和应用技术,包括七大接口芯片:并行接口8255a、串行接口8251a、计数器/定时器8253、中断控制器8259a、a/d(adc0809)、d/a(dac0832)、dma(8237)、人机接口(键盘与显示器接口)的结构原理与应用。在此基础上,对现代微机系统中涉及的总线技术、高速缓存技术、数据传输方法、高性能计算机的体系结构和主要技术作了简要介绍。 具体介绍: 第一章:主要了叙述微型计算机的发展构成和数的表示方法 (1)超、大、中、小型计算机阶段(1946年-1980年) 采用计算机来代替人的脑力劳动,提高了工作效率,能够解决较复杂

的数学计算和数据处理 (2)微型计算机阶段(1981年-1990年) 微型计算机大量普及,几乎应用于所有领域,对世界科技和经济的发展起到了重要的推动作用。 (3)计算机网络阶段(1991年至今)。 计算机的数值表示方法:二进制,八进制,十进制,十六进制。要会各个进制之间的数制转换。计算机网络为人类实现资源共享提供了有力的帮助,从而促进了信息化社会的到来,实现了遍及全球的信息资源共享。 第二章:介绍了8086微型机算计系统的组成原理和体系结构 (1)BiU与EU的动作协调原则: 总线接口部件(BiU)和执行部件(EU)按以下流水线技术原则协调工作,共同完成所要求的信息处理任务: ①每当8086的 指令队列中有两个空字节,或8088的指令队列中有一个空字节时,BiU就会自动把指令取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序。 ②每当EU准备执行一条指令时,它会从BiU部件的指令队列前部取出指令的代码,然后用几个 时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者i/o端口,那么EU就会请求BiU,进入总线周期,完成访问内存或者i/o端口的操作;如果此时BiU正好处于空闲状态,会立即响

微机原理实验报告

汇编语言程序设计实验 一、实验内容 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

微机原理实验讲义

微机原理实验讲义 程曙艳编 厦门大学自动化系 2016年10月

汇编语言的上机过程 1、建立汇编语言的工作环境 至少有以下程序文件: 编辑程序,文件名https://www.sodocs.net/doc/195570980.html,,使用https://www.sodocs.net/doc/195570980.html,编辑程序代码生成*.asm。 汇编程序,文件名MASM.EXE,使用masm.exe对*.asm文件进行汇编,生成*.obj 文件 连接程序,文件名LINK.EXE,使用link.exe对目标文件*.obj进行连接生成*.exe 文件 调试程序,文件名DEBUG.EXE,使用debug.exe对可执行文件*.exe进行调试运行 (1)编辑 可以用记事本或DOS下的EDIT编辑器来编写源程序。但程序保存时文件必须取名为*.asm 。或EDIT 文件名.asm 打开已经存在的文件。 (2)汇编 在DOS状态执行masm 文件名,则屏幕显示与操作如下: (3)连接 汇编后产生的目标文件必须经过连接,才能成为可执行文件.exe。在DOS 状态执行link 文件名,则屏幕显示与操作如下: (4)运行、调试

>DEBUG 文件名.exe Debug运行后,出现状态提示符短划线- 常用debug命令: D,显示内存单元内容 R,显示与修改寄存器内容 T、P,单步执行命令 G,连续执行指令 U,反汇编 Q,退出DEBUG程序 2. 汇编语言程序格式 汇编语言由若干个段组成: 堆栈段(保存数据、断点等信息) 代码段(存放指令)必需 数据段(定义数据,分配存储单元) 附加段(定义数据,分配存储单元) 每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束后需以END收尾 STACK SEGMENT ...... STACK ENDS DATA SEGMENT ...... DATA ENDS ESEG SEGMENT ...... ESEG ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA,SS:STACK,ES:ESEG START:mov ax, data mov ds, ax mov ax, eseg mov es, ax mov ax, stack mov ss, ax ………. CODE ENDS END START

学微机原理课程设计心得体会范文

学微机原理课程设计心得体会范文 "微机原理与系统设计"作为电子信息类本科生教学的主要基础课之一,课程紧密结合电子信息类的专业特点。接下来就跟着小编的脚步一起去看一下关于吧。 篇1 这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。 其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。 通过这次课程设计使我懂得了理论与实际相结合是很

重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在赵老师的辛勤指导下,终于游逆而解。同时,在赵老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 篇2 以前从没有学过关于汇编语言的知识,起初学起来感觉很有难度。当知道要做课程设计的时候心里面感觉有些害怕和担心,担心自己不会或者做不好。但是当真的要做的时候也只好进自己作大的努力去做,做到自己最好的。 我们在这个过程中有很多自己的感受,我想很多同学都会和我有一样的感受,那就是感觉汇编语言真的是很神奇,很有意思。我们从开始的担心和害怕渐渐变成了享受,享受着汇编带给我们的快乐。看着自己做出来的东西,心里面的感觉真的很好。虽然我们做的东西都还很简单,但是毕竟是我们自己亲手,呵呵,应该是自己亲闹做出来的。很有成就

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 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循环右移四位

微机原理与接口技术实验讲义

实验一熟悉汇编语言环境及建立汇编的过程 一、实验目的 1.熟悉汇编语言环境。 2.掌握汇编语言的上机过程。 3.了解汇编语言程序的编程格式。 二、实验要求 通过一个小程序的编写达到以上的实验目的。 三、实验原理 1.汇编语言程序的上机过程 用汇编语言编写的程序称为源程序,源程序也不能由机器直接执行,而必须翻译成机器代码组成的目标程序,这个翻译过程称为汇编。在微型机中,当前绝大多数情况下,汇编过程是通过软件自动完成的,用来把汇编语言编写的程序自动翻译成目标的软件叫汇编程序,汇编过程如下: 四、实验步骤 1、打开编辑环境 2、输入程序 CODE SEGMENT ASSUME CS:CODE START: MOV AL,01H MOV BL,40H ADD AL,BL MOV DL,AL MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 3、保存源程序,以.ASM为扩展名。C:\MASM\1.ASM 4、建立汇编过程 (1)用宏汇编程序汇编源程序C:\MASM>MASM 1.ASM 汇编程序有3个输出文件【.obj】文件,【.LST】文件,【.CRF】文件,.OBJ文件是我们所需 要的文件。汇编程序还有另外一个重要功能:可以给出源程序中的错误信息。 (2)用连接程序将OBJ文件转换为可执行的EXE文件C:\MASM>LINK 1.OBJ 5、执行程序:C:\MASM>1.EXE

实验二两个多位十进制数相加的实验 一、实验目的: 1.学习数据传送和算术运算指令的用法。 2.熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程。 二、实验内容: 将两个多位十进制数相加。要求加数和被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验原理 1.ADC 带进位相加指令的功能和指令格式 2.AAA 、DAA、 AAS、 DAS指令的功能和指令格式 3.伪指令SEGMENT 、ENDS、 ASSUME、MACRO、ENDM的使用 4.子程序的定义(PROC NEAR/FAR ENDP),以及子程序调用和返回指令:CALL、RET的使用

微机原理课程设计心得体会3篇

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

从抽象的理论回到了丰富的实践创造,细致的了解了计算机网络连接的的全过程,认真学习了各种配置方法,并掌握了利用虚拟环境配置的方法,我利用此次难得的机会,努力完成实验,严格要求自己,认真学习计算机网络的基础理论,学习网络电缆的制作等知识,利用空余时间认真学习一些课本内容以外的相关知识,掌握了一些基本的实践技能。 课程设计是培养我们综合运用所学知识,发现、提出、分析、解决问题的一个过程,是对我们所学知识及综合能力的一次考察。随着科学技术日新月异的不断发展,计算机网络也在不断的变化发展当中,这就要求我们用相应的知识来武装自己,夯实基础,为将来走向工作岗位,贡献社会做好充分的准备。 微机原理课程设计心得体会范文2: "微机原理与系统设计" 作为电子信息类本科生教学的主要基础课之一,课程紧密结合电子信息类的专业特点,围绕微型计算机原理和应用主题,以Intelx86CPU为主线,系统介绍微型计算机的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解微机的结构与工作流程,建立起系统的概念。 这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必

微机原理复习资料1答案

一、单选题(30) 1C 2B 3C 4A 5C 6C 7A 8D 9A 10D 11B 12D 13C 14A 15B 16C 17D 18A 19B 20A 21C 22D 23A 24D 25C 26A 27B 28C 29D 30C 二、判断题(20) 1√2 X 3 X4√5 X6 X7√8 X9√10 X 11X12 X13√14√15√16√17 X18 X19 X20 X 三、简答题(10) 1 课本P368。 2 WR# RD# M/IO# BHE# DT/R# mov ah, DS:[1001] : 1 0 1 0 0 mov ah, DS:[1000] : 1 0 1 1 0 mov ax, DS:[1000] : 1 0 1 0 0 3 答案要点: INTR信号有效, 中断允许标志位1; CPU执行完当前指令。 4 答案要点: 采用先进的超标量流水线机制,以并行方式在U、V两条流水线上同时执行两条指令。在U 流水线上可以执行任意指令,但是在V流水线上只能执行和当前U流水线上执行的指令符合配对规则的指令。 5 答案要点: 逻辑地址、线性地址、物理地址; 逻辑地址=段选择子:偏移量,通过逻辑地址可得到段描述,之后将得到线性地址。 线性地址=段基址+偏移量,线性地址通过相应的页面映射规则(如果有)就可以得到实际的物理地址。 物理地址=页基址+页内偏移量,通过线性地址相应的页面映射规则得到。 6 答案要点: GDT/IDT为所有任务共享;

LDT为每个任务私有。 7 答案要点: 需要16Kx8/8Kx4=4,一共需要4片 1#和2#芯片构成bank0,3#和4#芯片构成bank1 bank0:8Kx8,2^13,A0=0 bank1:8Kx8,2^13,BHE#=0 8 答案要点: 2个总线周期。 第一个总线周期:8086触发一个INTA脉冲,告诉中断控制器,它的INTR予以确认。 第二个总线周期:CPU出发一个INTA脉冲,让中断控制器将中断类型号放在数据总线上,并在T4拍开始的下降沿采集中断类型号。 9 答案要点: 包含两个方面:(1)初始化数据缓冲区的起始地址(2)初始化传输的字节数 10 答案要点: 在设置特殊屏蔽方式后,在用OCW1对屏蔽寄存器的的某一位置1时,会同时使当前中断

微机原理与接口技术试验学习总结

微机原理与接口技术试验学习总结 本学期微机原理的实验课程即将结束,关于微机原理课程实验的心得体会颇多。 初学《微机原理》时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。“麻雀虽小,五脏俱全”,可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。 《微机原理》课程有许多新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的并不是很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。 学习过程中,我发现许多概念很相近,为了更好地掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部分,它与微型计算机、微型计算机系统是完全不同的概念。 在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要,在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这种方法是最有效,最可靠的。然而,事物总有两面性,有优点自然缺点也不少。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较烦琐的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。 汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单基础的开始。那么学习高级语言也当然应当从汇编开始。学习汇编语言实际上是培养了学习计算机语言的能力和素养。个人认为,学习汇编语言对学习其他语言很有促进作用。 汇编语言在本学期微机学习中有核心地位。本学期微机原理课程内容繁多,还学习了可编程的计数/定时的8253,可编程的外围接口芯片8255A等。学的都是芯片逻辑器件,而在名字前都标有“可编程”,其核心作用不可低估。 我想微机原理课程试验不仅加深和巩固了我们的课本知识,而且增强了我们自己动脑,自己动手的能力。但是我想他也有它的独特之处,那就是让我们进入一个神奇的世界,那就是编程。对我们来说汇编真的很新奇,很有趣,也使我有更多的兴趣学习微机原理和其

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

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

实验一汇编语言编程基础 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

微机原理实验讲义2015

微机原理实验讲义 实验一8255A并行口实验(一) 一、实验目的 ⒈掌握8255A和微机接口方法。 ⒉掌握8255A的工作方式和编程原理。 二、实验内容 用8255PA口控制PB口。 三、实验接线图 图6-3 四、编程指南 ⒈8255A芯片简介: 8255A可编程外围接口芯片是INTEL公司生产的通用并行接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作: 方式0:基本输入/ 输出方式 方式l:选通输入/ 输出方式 方式2:双向选通工作方式 ⒉使8255A端口A工作在方式0并作为输入口,读取Kl-K8个开关量,PB 口工作在方式0作为输出口。

五、实验程序框图 六、实验步骤 ⒈在系统显示监控提示符“P.”时,按SCAL键,传送EPROM中的实验程序到内存中。(注:必须先传送EPROM后,再往下操作) ⒉ 8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连。 ⒊ 8255A芯片B口的PB0-PB7依次接Ll-L8。 ⒋运行实验程序。 在系统显示监控提示符“P.”时,输入11B0,按EXEC键,系统显示执行提示符“┌”拨动K1-K8, LI-L8会跟着亮灭。 七、实验程序清单 CODE SEGMENT ;H8255-1.ASM ASSUME CS:CODE IOCONPT EQU 0FF2BH ;定义8255控制口 IOBPT EQU 0FF29H ;定义8255 PB口 IOAPT EQU 0FF28H ;定义8255 PA口 ORG 11B0H START: MOV AL,90H ;定义PA输入,PB输出 MOV DX,IOCONPT ;控制口 OUT DX,AL ;写命令字 NOP ;延时 NOP NOP IOLED1: MOV DX,IOAPT ;PA口 IN AL,DX ;读PA口 MOV DX,IOBPT ;PB口 OUT DX,AL ;写PB口 MOV CX,0FFFFH ;延时 DELAY: LOOP DELAY JMP IOLED1 ;循环

微机原理实验报告

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

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在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

相关主题