8086微机原理总结

8086微机原理总结
8086微机原理总结

题目:微机原理全书总结

姓名:吕祎

学号:12021027

第一部分

第一章首先介绍了计算机的发展,不同时期的计算机发展史。在计算机发展史中,最重要的就是冯诺依曼提出的存储程序概念。目前根据冯诺依曼给出的模型设计的计算机一直沿用至今。

冯诺依曼计算机的核心是:指令数据用二进制表示,程序预存在存储器中,在执行时根据指令逐条取出分析执行,计算机硬件由运算器控制器存储器输入输出设备组成。

对计算机发展有突出贡献的两个人是图灵和冯诺依曼。

(一)一些基本概念

位(bit)是我们计算机所能表示的最小数据单位。

8个bit组成一个字节(Byte)

指令:二进制代码组成,规定微处理器进行某种命令。即又0和1组成的编码。

程序:指令的有序集合。

存储器:用于存储数据和程序。

地址:存储单元I/O接口的编号。

IO引脚线:16根。可以控制的外设64K个。

(二)目前常用的二进制十进制十六进制的转换方式此处需要熟悉各个进制转换规则。例如05H转换为二进制为0000 1001B

另外本节还介绍了几种编码表示,例如BCD码,ASCLL码,汉字编码等等。BCD码:四位二进制表示十进制数

(1)非压缩型BCD,一个字节表示一位十进制数,高四位清零

(2)压缩型BCD:用一个字节表示两位十进制数。

(三)原码:最高位为符号位(0表示正,1表示负)

反码:正数反码与原码相同,负数的反码等于原码中符号位不变其他取反。

补码:正数补码与原码相同,负数的补码等于原码中符号位不变各位取反再加一。

(四)指令:告诉计算机从事某个特殊运算的代码。计算机执行指令的过程是:取指令→分析指令→执行指令。

第二部分

(一)第二章

8086/8088微处理器

工作过程:取指令、译码、执行指令、取指令、译码······

工作方式:并行流水处理方式。

功能分类:执行单元EU、总线接口单元BIU

内部包括:运算器,寄存器组,控制逻辑,指令队列,20位加法器。

(二)执行单元EU

运算器

16位内部数据总线

数据寄存器AX、BX、CX、DX

地址指针寄存器SP、

变址寄存器SI

标志寄存器FR

总线接口BIU

20位地址加法器

段寄存器:代码段寄存器CS、堆栈段寄存器SS、数据段寄存器DS、附加段寄存器ES

指针寄存器:IP

指令队列

(三)8086/8088异同

相同:均为16位数据总线,均可处理8位、16位数据。外部存储器寻址范围1M 空间,I/O寻址范围64K。

不同:8088内部数据总线16位,外部数据总线8位。

8086内部指令队列6字节,2字节是空时BIU取指令,8088内部指令队列4字节,1字节为空时取指令

28管脚8086为M/IO非是对存储器或者对I/O操作控制线8088为IO/M非

34管脚8086为BHE非,是高八位数据有效信号线,8088是SS0,是确定当前总线周期的读写操作线。

(四)1时钟周期

两个时候总脉冲的间隔,T表示。主频为8MHz时,一个T为125ns

2总线周期

完成一个基本操作所用的时间。由T1、T2、T3、T4组成。

3指令周期

执行一条指令需要的周期。一个指令周期可以由一个或者多个总线周期组成。

(五)读总线周期

M/IO非高电平为存储器读总线周期,反之为IO读总线周期。

T1根据指令给出M/IO非状态;地址数据总线AD15-AD0提供地址,A19/S6-A16/S3提供高4位地址星系,对IO读为高阻。地址锁存信号ALE置1,地址信息稳定到ALE变0.如果对高8位操作,BHE非给出低电平有效状态。DT/R 非为低电平表示执行读操作。

T2 A19/S6-A16/S3提供状态信息,持续到T4,AD15-AD0高阻。RD非变为有效。

T3 T4 外部数据将数据送上总线,报纸稳定。出出气或者接口比CPU慢则T3不能提供稳定数据,那么有硬件产生T3、T4之间的几个Tw等待状态

写总线周期

T1同读周期,只是DT/R非为高电平,T2-T4地址状态线提供状态信息。写信号WR非有效。T4状态结束,所有信号恢复到周期前。

第五章

(六)1对存储器分段管理模式

所有数据以字节形式存储在存储单元,每个单元均有唯一20位地址,称为物理地址。

每个存储单元一定处在某个段中,距离该段其实单位有一个偏移量,指令中描述为段基址:逻辑地址。

存储类型寄存

Cache 内存

储器

硬盘

存储

光盘

存储

移动

存储

访问速度Ns级Ns级几十

ns

Us级Us级Us级

容量几十小于

几十

MB 小于

1G

几百

GB

几百

MB

几十

K-几

十G

存储芯片容量=单元数*数据位数

(七)半导体存储器基本组成

(1)存储体内个基本存储电路存储一位二进制。8个作为一个整体

(2)地址寄存/译码器。CPU把地址码通过地址总线送至地址寄存器,由地址译码器对地址译码,即可确定存储单元。地址线根数决定译出的编码个数。

单译码:线性译码,是全部地址通过逻辑电路进行编码构成译码电路。随着译码线根数增加,电路复杂程度指数增加,只适用容量较小存储器。

双译码:复合译码,两个译码器分别译码。X译码器为行译码,Y译码器为列译码。输出线用来选择存储矩阵中一列所有的存储单元,行和列交叉点处X和Y 为一个状态,只有X向和Y向选择先同时选中存储器才能读写操作。减少了输出线。

(3)数据寄存器是存储信息流动的通道。读写操作作为从存储单元读出的信息,写操作作为把要存的信息写入存储单元。芯片未被选中为高阻。可以实现协调CPU和存储器之间的速度差异。

(4)控制电路控制整个芯片是否被宣统和控制存储信息流动的方向。只有当信号CS非,CE非有效存储器才能与外界交换信息。

(八)

(1)位扩充:存储器有1、4、6、16、32位,容量也各不相同。例如1K*1的芯片组成1K*8的存储器需要8片,用1K*4位芯片需要两片。

(2)字扩充:用容量较小存储器组成容量较大存储器,采用串联方法。若干芯片串联构成需要的存储器。高位地址输入到译码器,经过译码器输出对每个芯片片选。各个芯片数据线控制线低位地址并联。

(九)地址译码

1逻辑电路实现译码

译码器实现译码

2方案

全译码:将全部片选地址参加片选译码,可以对全部存储空间寻址,每个存储单元地址唯一。

部分译码:地址总线中片选某些参与译码,产生信号作为存储芯片片选。

线译码:直接用某根片选地址作为选择存储芯片片选线。

区别:全译码不浪费地址空间,各芯片之间地址连续不重叠。便于系统扩展。部分译码电路简单,每个存储单元地址不唯一。线译码不能充分利用存储空间,只适用于存储芯片少的情况。

(十)存储器CPU连接

1地址线连接

片选地址:地址由地址译码电路译码后接到存储芯片片选地址上

片内地址:直接接到存储芯片地址线上;遇到地址线数据线复用的CPU,用锁存器将地址线分离。

2数据线连接

当存储器芯片数据线是双向三态,则可以直接与CPU数据线DB连接;当存储芯片数据线的输入线与输入线分开时,则需要外加三态门,才能与CPU连接。

3控制线连接

CPU对芯片进行读写操作,要先给出地址总线给出地址信息,然后需要发出相应的存储器读写控制信号,最后才能在数据线上进行数据交换。

接口设计步骤

1存储芯片的选择

2地址分配

3地址译码

4CPU与存储器信号连接

(十一)将硬件作为辅助存储器,在存储器管理部件和操作系统中的存储器管理软件的共同支持下,使得编程具有比实际主存储器容量大的空间。速度比主存储器慢,和主存储器没有区别。管理方式:段式管理,页式管理,段页式管理。段式管理:分配管理是以分段为基础

页式管理:划分成大小的块,来划分虚拟存储空间,主存储空间,辅助存储空间。

第三部分

第三章

(一)指令是处理器完成各种动作的命令,一个微处理器的全部指令构成该处理器的指令系统。

结构:操作码+操作数

操作码:指明操作动作和操作数存放位置的描述方法。处理器每一个操作均有操作码对应。(1字节)

操作数:提供指令要处理的操作数据或者操作数所在位置的信息。(长度不同)分为:无操作指令,单操作指令,双操作指令。

(二)指令的演化

操作码+来源地址码+处理结果存放地址码+后续指令

操作码+目的操作数+源操作数(5字节)

操作码+源操作数(3字节)

操作码+源操作数+操作数据来源地址码2 (1-2字节)

结果地址码

(三)寻址方式

1隐含寻址方式:指令中隐含规定操作数的位置如MUL BL中规定一个乘数在AL

2数据型寻址

立即数寻址——操作数在指令中

寄存器寻址——操作数在寄存器R

直接寻址

寄存器间寻址

基地址寻址,变址寻址

基址变址寻址

串操作寻址

I/o端口寻址——操作数在I/O中

目标地址寻址

相对程序寻址

直接寻址

间接寻址

(四)操作数在指令中(立即数寻址)

例MOV BL,47

2操作数在寄存器中

16位操作数AX BX CX DX SI DI SP BP

8位操作数AL AH BL BH CL CH DL DH

例MOV AL,BL ;复制BL到AL中

3操作数在存储器

16位操作数使用寄存器AX,BX,CX,DX,SI DI SP,BP

8位操作数使用寄存器AL,AH BL BH CL CH DL DH

注意1不允许段寄存器直接传输

2不允许混合尺寸

3不允许代码段寄存器作为目标操作数

3操作数在存储器中

(1)直接寻址指令直接给出操作数的有效地址例如MOV AX,[200H] MOV BX,DS:V AR

(2)寄存器间接寻址操作数的有效地址直接从BX BP SI DI 中获得

注意使用BP时,默认段寄存器为SS,不使用BP时,默认为DS

例如MOV AX,[BX] DS,BX寻址的存储单元的字内容复制到AX中

(五)操作数在I/O中

端口寻址范围65536(64K)数据只能由AX,AL通过数据总线传。8位时直接寻址,16位时间接寻址,并且只能用DX,另个操作数一定在AX,AL中

例如IN AL,N8

OUT N8,AL

(六)指令系统(133条)

3.3.1传送类指令

1传送MOV

●传输方向,通用寄存器立即数内存立即数通用寄存器之间,通用寄存器段寄存器之间

●不允许:内存之间传送,立即数传给段寄存器,段寄存器之间,CS做目标操作数,FR参加MOV操作

●MOV不影响FR

2交换XCHG

●可以通用寄存器之间,也可以通用寄存器和段寄存器之间

●不允许存储器之间,立即数和存储器或寄存器,段寄存器CS,IP,FR作为

操作数

●不影响FR

例如:XCHG AL,[BP] 将SS:[BP] AL交换内容。

3换码指令XLAT

●将内存表中数据传到AL 可以作为查表技术DS为表内段基值。BX内存内

存首地址和有效地址,AL为待查数据在表中位置(位移量)表首地址DS:[BX],换码指令是将AL指明位置的数据取出,并且赋值给AL。

●指令中隐含使用了DS,BX,AL 如果使用其他段寄存器,则不能省略

●不影响FR

4栈(PUSH POP)

PUSH

●SP-2后将源操作数压入栈,即SP SP-2,SS:[SP] SS:[SP+1] src POP

●将栈中SS,SP指定位置一个字的数据弹到目标操作数。SP+2

Dest SS:[SP] SS:[SP+1], SP=SP+2

注意没有POP CS,有PUSH CS。进栈操作SP-2,出栈操作SP+2

堆栈操作不影响FR

5标志位传送(LAHF,SAHF,PUSHF,POPF)

1)取标志位LAHF 把标志位寄存器低八位给AH即,把SF,ZF,AF,PF,

CF标志位分别传送到AH的76430位。

2)存储标志寄存器指令SAHF 把AH的76420位送入SF ZFAF PF CF并且SF

ZFAF PF CF不受影响。

3)标志位进栈PUSHF 首先SP-2,将FR全部内容压入SP只想的栈顶字单元

FR不受影响

4)标志寄存器出栈POPF 把堆栈顶部一个字的内容弹到标志寄存器FR,

SP+2

6地址传送(LEA,LDS,LES)

1.装入LEA 将某单元有效地址装入指定寄存器注意:传送的不是操作数,而是偏移量,目的操作数必须是通用寄存器,源操作必须是内存操作数

2.装入LDS 指定内存连续4个字节内容低16位送到通用寄存器,高16位送到DS LES 连续四个字节低16位送到指定通用寄存器,高16为送入ES 7 输入输出IN OUT

功能:实现CPU到I/O之间数据传送。

注意IN指令的目标操作OUT指令的源操作必须是AL或者AX

IN和OUT中对I/O允许直接寻址和寄存器寻址

当端口地址为16位时,对端口寻址只能用寄存器间接寻址,即I/O端口地址寄存器在DX中,而且只能是DX。如果是8位口地址,则高八位清零。

3.3.2算术预算指令

1加法指令

(1)ADD ADC 目标和源操作相加,其和存放到目标操作数。源操作数内容不变。

注意源操作和目的操作可以来自通用存储器,或存储器,源操作还可以为立即数。

不允许存储器相加

影响标志位FR中的CF PF AF ZF SF OF

(2)加一指令INC

操作数可以是通用寄存器,存储器,不能是立即数。

影响标志寄存器FR SF ZF AF PF 但不影响CF

2减法指令(1)SUB SBB

功能:用目标操作数减去源操作数,差存入目标操作数。源操作数原有内容不变。注意存储器不能相减,目标操作数也不能是立即数。

SUB和SBB指令影响SF,ZF,CF,AF,PF,OF

(2)减一指令DEC

操作数可以是通用寄存器或者存储器,但不能是立即数

(3)求补NEG

功能:用零减去目标操作数,并送回目标操作数。也就是实现无符号求补

(4)比较CMP

功能:CMP和SUB一样执行减法操作,只是不保存差值,操作影响FR,后面跟着条件转移,根据比较结果选择不能程序分支。

3 乘法

无符号MUL,有符号IMUL

功能:一个乘数一定来自AL,AX,另一个乘数为src积一定在AX或DX和AX 中。两个八位相乘得16位,存放在AX。两个16位相乘得到32位,DX存在高位,AX存放在低位。

注意对CF,OF有影响,对PF,AF,SF,ZF为不确定

4除法类

(1)除法指令DIV,IDIV

无符号DIV,有符号IDIV

功能:执行除法运算,除数必须为被除数一半字长。即只能16位除以8位,或者32位除以16位。32位被除数一定放在DX和AX中,DX放高16,AX放低16.商在AX中,余数在DX中。

注意:有符号和无符号数除法操作相同,SRC为通用寄存器或者存储器,不能是立即数。

对有符号数,被除数与除数符号相同。商的符号为正。被除数与除数符号不同,商为负。余数符号和被除数一致。

(2)转换指令CBW CWD

CBW将AL中的符号位扩展到AH,使得8位有符号数转换成16为有符号数CWD将AX的符号位扩展到DX,使得16位有符号数转换成32位有符号数

5十进制调整

(1)加法十进制调整AAA对非压缩性BCD码进行BCD码调整

DAA 对压缩性BCD码加法操作进行BCD码调整。

注意AAA,DAA一般跟在ADD或者ADC后面使用

AAA要求入口AL AF 出口AH AL AF CF

DAA要求指令入口AL AF CF 出口AL AF CF

(2)减法十进制调整AAS DAS

AAS对非压缩性BCD码进行BCD码调整

DAS 对压缩性BCD码减法操作进行BCD码调整。

(3)乘法十进制调整

AAM 对AL调整,结果存在AH,AL中

本指令跟在两个一位非压缩BCD相乘操作后面,将存在AL中乘积调整,存在AX中

(4)除法十进制调整AAD

功能,AAD将AX中非压缩性BCD码调整成二进制,存入AL

3.3.3逻辑运算指令

1逻辑与AND

源操作与目标操作,有零为零,全1为1,结果存入目标操作数

2逻辑或OR

功能:有1为1,全0为0.结果存入目标操作数

3逻辑非NOT

各位是0为1,是1为0

4逻辑异或XOR

异或是将源操作数和目标操作数对应异或,若对应位相同,结果为0,不同为1

5测试指令TEST

同AND操作,不存结果,只ing想FR,与CMP和SUB相似。

3.3.4位移指令

逻辑左移SHL dest,1

SHL dest,CL

算术左移SAL dest,1

SAL dest,CL

逻辑右移SAR dest,1

SAR dest,CL

循环左移ROL dest,1

ROL dest,CL

循环右移ROR dest,1

ROR dest,CL

带CF循环左移RCL dest,1

RCL dest,CL

带CF循环右移RCR dest,1

RCR dest,CL

3.3.5转移类指令

功能:将给出的目标地址放入CS IP 使得程序发生转移

1 无条件转移指令(JMP)

2条件转移JXX

XX为条件当条件成立,转移到制定目标地址处,否则顺序执行程序。这个条件以FR中一个或几个状态位的状态为依据。

3循环指令(LOOP)

功能:两字节指令,dest通常为目标地址偏移量或者目标地址标号。

注意:这类指令隐含CX循环次数计数器。进入循环前先设好循环次数。执行循环指令时会使cx-1同时判断CX是否0,若CX=0,停止循环。

4调用指令。

CALL dest

说明:段内调用CS不变,调用时自动保护断电,将断电IP压栈。

5返回指令

RET

6中断指令

(1)中断指令INT n其中n为中断类型码。即可以到0000h段中4*n开始的四个单元中找到该程序入口地址。

(2)溢出中断INTO 检测OF 如果OF=1,启动中断过程(INT n;其中n=4)OF=0时无操作。

(3)中断返回(IRET)当执行中断返回指令时,会自动完成断点出栈(CS出栈,IP出栈)和FR出栈

3.3.6串操作类指令

串传送MOVS dest,src;ES:【DI】DS:【SI】将源串数据传送到目标串串比较CMPS dest,src;DS:【SI】-ES:【DI

串搜索SCAS dest,src;AL ES:【DI】或AX-ES:【DI】影响FR从而判断目标串中是否查找到AL或AX中字节。

串读取LODS src AL DS:【SI】或AX DS:【SI】将串中字节或字读到AL或AX中

串写入指令STOS dest ES【DI】AL或ES:【DI】AX,将AL 或AX传送到目标串

3.3.7处理器类指令

●标志位操作指令(STC,CLC,CMC,STD,CLD,STI,CLI)

●空操作指令(NOP)

●暂停指令(HLT)

●等待指令(WAIT)

●交权指令(ESC)

●总线锁定指令(LOCK)

1标志位操作指令

1)清CF CLC

2)置CF STC CF=1

3)清DF CLD

4)置DF STD

5)清IF CLI

6)置IF STI

7)CF求反CMC、

2空操作指令NOP 执行NOP不影响FR

3暂停指令HLT 当中断返回时将返回到HLT下一条指令处

4 等待指令WAIT

5交权指令ESC

将内存中操作数送上数据总线

6总线锁定LOCK

迫使嵩县锁定信号LOCK维持低电平,直到执行完下一条指令

第四章

4.1.1计算机语言分类

机器语言

高级语言

汇编语言:直接控制硬件,执行速度快,占用内存少。

4.1.2汇编语言

1宏汇编语言的语句和格式

1)指令语句【标号】【前缀】助记符操作数【注释】

2)伪指令语句【名字】伪指令【操作数】【注释】

3)宏指令语句名字MACRO

....... ;宏体

ENDM

4.2伪指令

定义:为汇编程序服务,例如定义变量、分配存储空间以及实现某些其他程序的

处理功能等。

分类

处理器方式伪指令

模式定义伪指令

段定义伪指令

数据定义伪指令

符号定义伪指令

类型定义伪指令

过程定义伪指令

模块定义伪指令

宏处理伪指令

条件伪指令

列表伪指令

其他伪指令

4.2.1符号表达式的描述规范

1标识符

汇编中指令语句的标号和伪指令语句的符号名称统称标识符。标号和符号明的区别:标号后面有冒号,符号明后面没有冒号,标号与具体地址联系,可以作为跳转调用指令的目标操作数,符号名用于定义变量,过程名,段名;标号可以任选或者省略,标号明可以强制,任选,省略。

2操作数

可以是常数,二进制,十进制,十六进制,八进制,实数,字符串常数

4.2.3模式定义伪指令

.MODEL 存储模式

.MODEL SMALL

.MODEL MEDIUM

.MODEL COMPACT

4.2.4段定义伪指令

1完整段定义伪指令

段名SEGMET 【定义类型】【组合类型】【字长】【类别】

段名ENDS

ASSUME:用来同志汇编程序,每个段名代表的段是什么性质的段,处理器访问用哪个寄存器。

ASSUME 段寄存器名,段名,段寄存器名:段名

例如ASSUME CS:CODE,DS:DATA

2简化的段定义伪指令

4.2.5数据定义伪指令

变量名DB 表达式每个表达式1字节

变量名DW 表达式每个表达式2字节

变量名DD 表达式每个表达式4字节

变量名DQ 表达式每个表达式8字节

变量名DT 表达式每个表达式10字节

?表达式分配存储空间但不设初值

DUP表达式定义重复数据操作

例如DB 表达式1DUP(表达式2)定义空间每个1字节,重复表达式1次,内容为表达式2

4.2.6 符号定义伪指令

1等值语句EQU

2等号语句

3解除语句

4.2.7类型定义伪指令

1对标号的类型定义

2对变量的类型定义

4.2.8过程定义伪指令

过程名PROC 【NEAR】

【RET】

RET

过程名ENDP

4.2.9计数器与定位伪指令

1程序计数器$

2定位伪指令ORG

4.2.10 条件汇编伪指令

IFXX

【ELSE】

ENDIF

4.2.11记录与结构伪指令

1记录

(1)定义记录格式

(2)建立记录变量

(3)引用记录

2结构

(1)定义结构格式

(2)建立结构变量

(3)引用结构

4.2.12模块定义伪指令

1NAME

2END

3PUBLIC

4EXTRN

4.3宏指令

4.3.1宏指令定义

格式宏名MACRO 【形参,形参。。。。。】

ENDM

4.3.3宏和子程序区别

红操作没有缩短目标代码长度,内存空间没有减少。主程序可以多次调用一个子程序,能缩短目标代码长度。

宏操作不会增加额外时间开销,而子程序调用需要保护现场和断点,有额外时间开销。

4.4BIOS DOS调用

重点:INT 21H指令

汇编程序设计步骤

1分析问题

2建立数学模型,确定算法和解决方案

3绘制程序流程图

4规划内存空间

5编制程序静态检查

6调试程序

7整理文档

4.6设计基本方法

1顺序结构

2分支结构(1)比较测试结构(2)分支表结构

3循环结构

4子程序调用结构

第四部分

第六章

(一)接口的结构

(1)总线驱动:实现CPU数据总线和驱动能力的匹配

(2)地址译码:接受CPU发来的地址信息。实现对接口各个寄存器端口的读写

操作

(3)控制逻辑:接受CPU发来的读写信息

(4)数据端口:包括用于接受外设数据的输入寄存器和接受CPU发出数据的输出寄存器。

(5)控制端口:接受CPU发出的控制命令,确定各种工作方式和工作状态(6)状态端口:反应外设的某些状态,供CPU查询判断。

(二)接口功能

(1)完成速度匹配

(2)数据格式转换

(3)状态传递

(4)IO接口选择

独立编址:8086中IO端口与存储器具有不同地址,不同读写信号。有点是IO 访问与对存储器的访问完全独立,互不影响。

统一编址:IO与存储器在统一地址空间编址,具有相同的读写操作控制信号,相同的指令,指令丰富,操作灵活。

(三)传输方式

(1)直接传输

(2)查询传输:占用CPU时间

(3)中断传输

(4)DMA传输

(四)中断

(1)硬件中断,非屏蔽中断,外设通过NMI发出请求,CPU必须响应,可屏蔽中断,INTR向CPU发送请求,在没有DMA或者NMI请求时且中断允许标志位IF=1,将响应中断

(2)软件中断,软中断指令INT n类指令;CPU特定条件如除0,溢出引起的中断;调试debug设置的中断。

整个过程:中断请求,中断识别(通过中断向量表识别优先),中断响应(决定是否响应),中断处理,中断返回。

中断向量表:存放中断入口地址,4*n=1M

IPL

IPH

CSL

CSH

第七章

(一)锁存器

锁存器用来锁存由处理器发出的数据命令

(二)缓冲器

缓冲器的作用是隔离。常用缓冲器74LS125,缓冲器的基本结构是三态门。(三)行扫描法

行线接锁存器,列线接缓冲器并通过电阻接电源。行线输出0,若无键按下则相应列线为1,有键按下则相应列线与行线短路而为0.

第一步,全行扫描,判断是否有键按下

第二步,逐行扫描,判断哪个键按下

第八章

(一)8253

初始化编程(1)向控制寄存器写入控制字,设定计数通道工作方式和设置初值(2)再向相应计数通道写入计数初值

1、方式0——计数结束时中断

2、方式1——可编程单脉冲

3、方式2——速率发生器

4、方式3——方波发生器

5、方式4——软件触发选通

6、方式5——硬件触发选通

(二)8255并行通信接口

初始化

(1)确定每个端口工作方式

(2)写入方式控制字

(3)写入C端口位控控制字

1、方式0——基本输入输出

2、方式1——选通输入或选通输出

3、方式2——双向传输

(三)波特率

波特率是调制解调器中描述信号每秒改变次数。波特率=位数/单位时间=发收时钟/n(波特率因子)

单工方式:一端接A,另一端接B,只允许数据按照一个固定方式传送

半双工:系统中每个通信设备都由一个发送器和一个接收器组成,通信线路为单路双向。发送接收交替发生。

全双工:采用信道划分,通信线路双路,发送和接收通道独立,通信双方可以同时接收和发送。

通信协议:1位起始位,7位数据位,1位偶校验,2为停止位。

(四)可编程异步通信8250

初始编程

1、对线路控制寄存器编程,DLAB=1

2、对除数寄存器编程,送两个字节除数,设置波特率

3、对线路控制寄存器编程,设置Modem

4、对Modem控制寄存器编程设置Modem信号状态

5、对中断允许寄存器编程,设置允许禁止中断。

(五)可编程串行通信芯片8251

基本功能:(1)通过编程可以工作在同步方式或异步方式。全双工方式,如需按RS232传输必须增加驱动或者进行TTL,RS232电平转换

(2)同步方式时,波特率0-64Kbit/s,也可以用5、6、7、8标志字符用1位作为奇偶校验。

(3)异步方式波特率0-19.2Kbit/s,也可以用5、6、7、8代表字符,用1为作为奇偶校验。

(4)具有自动错误检测功能,可以检测奇偶错,溢出,帧错误。通过读入状态寄存器校验出错状态。

编程流程(1)异步方式,送模式控制字后,必须紧跟着进行操作字的设置,才可以度状态,测试状态,状态正确传送数字。

(2)同步方式:送模式控制字后,必须马上输出同步字符,在一个或两个同步字符之后再设置操作命令字,再读状态字,测试状态,状态正确传送数据。(3)在数据传送结束后,或不知8251A当前工作状态,而需要改变工作模式,必须用操作命令控制字将IR置1,使得8251内部复位,之后才可以重新设置模式控制字,改成其他传送方式。

(六)可编程中断控制器8259

特点:(1)1片8259管理八级中断,9片可以构成64级主从中断系统。

(2)每一级中断可以独立被屏蔽或允许,内部有中断优先判别电路,可以将优先级高的中断给CPU,能够在CPU相应中断请求

(3)由于8259可编程,所以使用起来非常灵活,可以通过编程实现各种工作方式。

(4)用NMOS工艺制作只需要一组5V

初始化

1、主初始化命令字ICW1:设置8259采用单片还是多片级联,外部设备中断请求时高电平有效还是上升沿有效,是否需要写入ICW4。ICW1地址A0=0,且D4=1,当向8259偶地址中写入一个D4=1的字节,则启动初始化。

2、中断矢量命令字ICW2:必须写到8259,A0=1。IR7-IR0有个字独立中断类型码。

3、级联命令字ICW3:当系统为单片8259,则不需要写入ICW3,当为多片8259,级联时,则需要分别对主片和从片写入不同ICW3,若为主片,则各位反映是否接入从片,接入置一,否则置0;若为从片,则高5位为0,第三位为从片INT 接到主片那个IRi的序号。

4、方式控制字ICW4:方式控制命令字ICW4,用来选择采用特殊嵌套还是一般嵌套。

特殊嵌套:当某个中断被响应,将只屏蔽比当前中断源优先级低的中断,本级和

优先级更高的中断源均可申请中断。本级和优先级更高的中断均可申请中断。一般嵌套方式:当某个中断被响应时,本级和比本级优先级别低的中断均被屏蔽。只有优先级更高的中断才能申请中断。

对这门课的评价

8086/8088虽然是现在已经淘汰的微机,但是我认为学习这门课还是很有必要的。首先8086/8088具有冯诺依曼提出的一个计算机应该具有的基本结构。其次,这两种微机内部结构简单清晰,便于学习。

老师多次强调课下看书的作用,这个在学习用也可以发现,上课所讲的知识仅仅是皮毛,每条汇编语句的使用,每个芯片的用法功能都是十分复杂的上课无法全部掌握。

另外老师布置的作业,还有每个部分的总结都是对学过知识的复习和强化,我认为是十分有必要的。这一学期微机原理课在老师认真的教导下,学到了很多。严谨的学习态度我想在其他知识的学习上也是十分必要的。

同济大学微机原理实验报告

《微机原理与接口技术》上机实验报告

《微机原理与接口技术》上机实验报告

实验报告:(包括目的、方法、原理、结果或实验小节等)。 一、实验目的 掌握简单并行接口的工作原理及使用方法。 二、实验内容 1、按下面图一简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。 2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。 3、按下面图二简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。 4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。 图一图二 三、实验中使用到的程序 对于简单并行输出接口: stack1 segment stack 'stack' dw 32 dup(0) stack1 ends data segment baseport equ 0ec00h-280h;实际基址 port equ baseport+2a8h;基址+偏移地址 data ends code segment assume ss:stack1,ds:data,cs:code start: mov ax,data mov ds,ax again: mov ah,1 int 21h

最新8086简易计算器的设计微机原理计硬报告整理

计算机硬件技术实践报告 题目简易计算器的设计 姓名 专业自动化(电站方向) 班级 学号 上海电力学院自动化工程学院

实践报告内容(目录) 一. 设计题目 二. 开发目的 三. 小组成员分工及成果 四. 设计方案以及论证 五. 硬件原理图(包括芯片的选型介绍) 六. 程序流程图(包括各个子系统和子过程的程序流程) 七. 程序清单,要有适当的注释 八. 程序运行结果分析与预测 九. 结果评述或总结(对实验结果进行分析,对实验过程进行总 结,系统改进升级建议或者提出新的方案等。)

一. 设计题目: 用8086设计一个能实现0~9整数加法运算的计算器,并用2位LED数码显示. 键盘包括0-9,+ ,-,*,/,=,ON/C;共16个按键.能实现简单的清零操作,减法运算,乘法运算. 二.开发目的: 通过课程设计,熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机 开发应用方面的初步训练。培养集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,做到理论联系实际,提高动手能力和分析问题、解决问题的能力, 实现由学习知识到应用知识的初步过渡。通过本次课程设计熟练运用程序对8255控制键盘和LED显示的控制,完成计算器加减法的应用,并熟练应用8086汇编语言编写应用程序 和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。 三.小组成员分工及成果: 本组的三个成员一起讨论研究简易计算器设计的主要方案。 粗略设计程序流程图以确定简易计算器设计的大概框架。 明确目的后各自查询资料了解设计原理、逐步清晰设计思路。 以下为大体分工:主要负责:1、设计主要程序,编写; 2、查找资料验证修改; 主要负责:1、选择需要用的各个芯片; 2、设计硬件原理图; 主要负责:1、各个芯片功能的资料查找; 2、设计程序流程图 四.设计方案以及论证: 利用程序不断扫描所设的按钮键盘是不是有输入,如果没有就一直扫描,如果有就调 用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程 序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从而实现部分十进制数 的加、减、乘、除的运算。运算完成后根据程序将运算的结果储存到锁存器中并显示到LED 显示器上。主要器件选择是采用8086CPU做主控制器,8255作为并行接口电路实现按键扫 描以及数码管的显示。通过8255A的C口和A口实现键盘的接入,通过键盘的不断扫描, 如果有键按下,通过查表法分别将输入的数据读到AL中并保存在第一个和第二个数里, 将8255A的B端口接上共阴极LED灯,将输入的数据通过查表法,将四段码送共阴极LED 灯显示,当按下‘=’时,通过判断字符,8086来实现不同的操作,并将结果在LED灯上显示,当按下“C”时,将数据先清零,同时LED灯上显示为“00”。

微机系统实验报告

西安电子科技大学 实验报告

实验一汇编语言编程实验 一、实验目的 (1)掌握汇编语言的编程方法 (2)掌握 DOS 功能调用的使用方法 (3)掌握汇编语言程序的调试运行过程 二、实验设备 PC 机一台。 三、实验内容 1. 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS 功能调用完成必要提示信息的显示。 2. 在屏幕上显示自己的学号姓名信息。 3. 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。 4. 自主设计输入显示信息,完成编程与调试,演示实验结果。 四、实验源码 DATA SEGMENT DISCHA DB'WangHan 14030188004',0AH,0DH,'$' TAB DB' ',0AH,0DH,'$' BLANK DB' $' DATA ENDS STACK SEGMENT STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,SEG DISCHA

MOV DX,OFFSET DISCHA MOV AH,09H INT 21H NEXT: MOV AH,01H INT 21H CMP AL,'Q' JE ENDSS CMP AL,'q' JE ENDSS MOV BL,AL MOV AX,SEG BLANK MOV DS,AX MOV DX,OFFSET BLANK MOV AH,09H INT 21H MOV BH,0AH MOV DL,BL MOV CL,04H SHR DL,CL CMP DL,BH JNL Q3 JMP Q2 Q1: ADD DL,07H Q2: ADD DL,30H MOV AH,02H INT 21H MOV DL,BL MOV DH,0FH AND DL,DH CMP DL,BH JNL Q3 JMP Q4 Q3: ADD DL,07H Q4: ADD DL,30H

微机原理学习心得

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

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

微机原理与接口技术实验报告

微机原理与接口技术实验报告

2

3

实验一:数据传送 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 1.学习程序设计的基本方法和技能,掌握用汇编语言设计、编写、调试和运行程序的方法; 学习用全屏幕编辑软件QEDIT.EXE建立源程序(.ASM文件); 学习用汇编软件MASM.EXE对源文件汇编产生目标文件(.OBJ文件); 学习用连接程序LINK.EXE对目标文件产生可执行文件(.EXE文件); 学习用调试软件TD.EXE调试可执行文件; 2.掌握各种寻址方法以及简单指令的执行过程。 二.实验器材 PC机 三.实验组织运行要求 1.利用堆栈实现AX的内容与BX的内容进行交换。堆栈指针SP=2000H,AX=3000H,BX=5000H; 2.汇编、调试、观察、记录结果; ⑴用QEDIT.EXE软件输入汇编语言源程序,以.ASM格式文件存盘; ⑵用MASM对源程序进行汇编产生二进制目标文件(.OBJ文件),再用连接程序LINK产生可执行文件(.EXE文件); ⑶用调试软件TD调试、运行程序,观察、记录结果。 四.实验步骤 1.进入子目录E:>\SY86后,利用QEDIT.EXE(简称Q)送入以下汇编语言源程序,并以M1.ASM文件存盘 ⑴汇编语言程序的上机过程 ①进入\SY86子目录 E:>CD\SY86 E:\SY86> ②进入QEDIT.EXE 编辑界面 E:\SY86> Q ③输入文件名*.ASM(如M1.ASM)后,输入源程序 源程序 DATA SEGMENT PARA PUBLIC’DATA’ ;数据段定义 DB 512 DUP(0) DATA ENDS STACK SEGMENT PARA STACK’STACK’ ;堆栈段定义 DB 512 DUP( ?) 4

8086.8088微机原理课程设计

8086/8088微机原理课程设计 1、课程设计说明 “微机原理与接口技术课程设计”主要是测试学生的8086/8088系统输入输出技术应用能力、数字电路应用能力和程序设计能力。 设计题目中综合了《数字逻辑》、《微机原理与接口技术》和《程序设计基础》等课程中的相关知识点。特别是电气工程系各专业学习了《模拟电子》、《传感器技术》、《单片机技术》等课程,给题目的扩展和实际应用提供了基础。本课程的课程设计实际上是一个综合性应用的设计和制作。 这里只给出了部分课程设计的题目,主要和接口电路有关,每个题目的实现方式和扩展空间都很大,指导教师可根据学生的具体情况决定设计题目的内容和设计量。纯汇编语言软件的设计未在这里列出。 欢迎学生自拟题目,经指导教师审核其难易程度和确定所用器材,优先选用。 2、课程设计计分办法 课程设计的计分由课设题目(60)、课设报告(20)、考勤(20)三部分组成。 一、题目的选择 设计题目分为星级制(★),根据选择题目的难易程度确定成绩,以百分制计算,按比例计入总成绩。要根据个人情况合理选择题目,不可多组选择同一题目。 1、无星为最简题目,做完多个题目仅记分为及格(69分及以下)。 2、1星(★)为简单题目,做完1个题目记分为良(70~89分)。 3、2星(★★)为较难题目,做完1个题目记分优(90~100分)。 4、星级题目多做可提高分值。 5、课设一般为分组实施,主要设计者记原星级分值,辅助者减1星。 6.、未完成设计者视设计程度减星计分。 7、无星题目可单人完成,但不选题目者记0分。 二、报告要求 课设报告应按规定格式书写,并按时上交。报告原则上要求手工书写,如要打印必须是独立版本,遇雷同课设报告均不计入总成绩。 三、考勤 考勤。点名一次未到扣5分,5次以上记0分。

《大学计算机基础》上机实验报告

《大学计算机基础》 上机实验报告 班级: 姓名: 学号: 授课教师: 日期:年月日

目录 一、Windows操作系统基本操作......................................................... - 1 - 二、Word文字处理基本操作 .............................................................. - 4 - 三、Excel电子表格基本操作 ............................................................ - 6 - 四、PowerPoint幻灯片基本操作....................................................... - 8 - 五、网页设计基本操作 ...................................................................... - 9 - 六、Access数据库基本操作 ............................................................ - 10 - 上机实验作业要求: ○1在实验报告纸上手写并粘贴实验结果; ○2每人将所有作业装订在一起(要包封面); ○3全部上机实验结束后全班统一上交; ○4作业内容不得重复、输入的数据需要有差别。

实验名称一、Windows操作系统基本操作 实验目的1、掌握Windows的基本操作方法。 2、学会使用“画图”和PrntScr快捷键。 3、学会使用“计算器”和Word基本操作。 实验内容1、日历标注 利用“画图”和Word软件,截取计算机上日历的图片并用文字、颜色、图框等标注出近期的节假日及其名称,并将结果显示保存在下面(参考下面样图)。 运行结果是: 主要操作步骤是: 2、科学计算 利用“计算器”和Word软件,计算下列题目,并将结果截图保存在下面(参考样图)。 ○1使用科学型计算器,求8!、sin(8)、90、74、20、67、39、400、50.23、ln(785)的平均值、和值,并用科学计数法显示。 运行结果是: ②将以下十、八、十六进制数转换为二进制数:(894.8125)10、(37.5)8、(2C.4B)16 运行结果是:(需要下载使用“唯美计算器”) ○3计算下列二进制数的加法与乘法:101.1+11.11;1101*1011 运行结果是:(参考样图) 写出主要操作步骤: 3、实验心得体会

微机实验心得体会

微机实验心得体会 【篇一:微机原理实验报告】 一、实验目的 1.掌握qtspim的调试技术 2.了解mips汇编语言与机器语言之间的对应关系 3.掌握mips汇编程序设计 4.了解c语言语句与汇编指令之间的关系 5.熟悉常见的mips汇编指令 6.掌握程序的内存映像 二、实验任务 用汇编程序实现以下伪代码:要求采用移位指令实现乘除法运算。 int main() { int k, y ; int z[50] ; y = 56; for(k=0;k50;k++) z[k] = y - 16 * ( k / 4 + 210) ; } 三、实验要求 1.完成汇编语言程序设计、调试、测试全过程 2.指出用户程序的内存映像,包括代码段和数据段 3.完成软件实验报告 四、实验过程 程序源代码: .data #定义用户数据段 z:.space 200 .text main: la $s0,z #$s0=addrz li $t0,0 #$s1=k=0 li $t1,56 #$s2=y=56 loop: slti $t2,$t0,50 #判断k是否小于50 beq $t2,$0,done #当k大于等于50时跳转 srl $t3,$t0,2 #k/4 addi $t3,$t3,210 #k/4+210

sll $t3,$t3,4 #16*(k/4+210) sub $t3,$t1,$t3 #y-16*(k/4+210) sw $t3,0($s0) #写进z[k] addi $s0,$s0,4 #地址移一位 addi $t0,$t0,1 #k加1 j loop #循环 done: li $v0 10 syscall 五、实验总结 通过这次实验,加深了我对理论学习的代码书写规范的理解,练习 了qtspim软件的使用,对以后的学习有很大的帮助。这次实验的内 容相对比较简单,原理容易理解,编译的过程中遇到了一点困难, 不过在同学的帮助下顺利解决了。 【篇二:微机原理与接口技术实验总结】 微机原理与接口技术实验总结 11107108徐寒黎 一、实验内容以及设计思路 1、①试编写一程序,比较两个字符串string1、 string2 所含字符 是否相同,若相同输出“match”,若不相同输出“no match”。 设计思路:定义一个数据段,在数据段中定义两个字符串作为 string1、 string2以及几个用于输入提示的和输出所需内容的字符串,定义一个堆栈段用于存放,定义代码段。关键步骤以及少量语句:第一步将string1和string2都实现用键盘输入,方法是 mov dx,offset string2 mov ah,0ah 并且显示在显示器上,显示方法将0ah改成09h,语句与上面类似。然后进行比较第一个单元, mov al,[string1+1] cmp al,[string2+1] jnz nomatch 若字符串长度不等,则直接跳转,输出输出“no match”; 若长度相等再逐个比较 lea si,[string1+2] lea di,[string2+2] mov cl,[string1+1]

微机原理及应用实验报告

微机原理及其应用上机实验报告 实验一 程序调试实验(顺序结构程序设计) 一、实验目的: 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 segment x db 8 y db data ends stack segment para'stack' db 100 dup(0) stack ends code segment assume 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、认真调试程序,对程序可能存在的所有分支都要进行运行,只有这样才能证明程序的正确性。 二、实验内容

8086软硬件实验报告(微机原理与接口技术上机实验)

实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。

程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START

实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2

微机实验报告(1)

《微机实验》报告 实验名称 KeilC的使用与汇编语言上机操作 指导教师刘小英 专业班级中法1201 姓名肖洋学号 U3 联系电话 一、任务要求 1.掌握KeilC环境的使用 1)字节拆分、合并:调试程序,观察相关寄存器和单元的内容。 2)数据块填充:调试程序,观察相关寄存器和单元的内容。 2. 编写两个十六位数的加法程序。 有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八 位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。 二、设计思路 1.字节拆分、合并程序:利用汇编语言中的 XCHD 和 SWAP 两个语句来实现将八位二进制 数拆分为两个四位二进制数并分别存储于不同的存储空间的功能,BCD 码与 30H 相或(加 上 30H)得到 ASCII 码。将两个 ASCII 码和 0FH 相与(高四位清零)得到 BCD 码,利 用 SWAP 语句将高位数放至高四位,将高位数和低位数相或可实现字节的合并。 2.数据块填充程序:将 R0 用作计数器,DPTR 用作片外数据指针,A 作为原始数据来源, 依顺序在片外的存储单元内容填充数据。利用循环语句来减少程序长度,并控制填充单 元个数为片外 100H 个。(通过 R0 的进位控制) 3.两个十六位数加法程序:把第一个十六位无符号数的地八位和高八位分别存于 20H 和 21H 中,把第二个十六位无符号数的地八位和高八位分别存于 30H 和 31H 中,对 20H 和 30H 中的两个低八位进行 ADD 加法操作,结果存于 R4 中;然后对 21H 和 31H 中的两 个高八位进行 ADDC 带进位的加法操作,结果存于 R3 中.然后将累加器 A 清零,并和#00H

微机原理实验报告

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

微机原理实验报告

微机原理 实验报告 学校:湖北文理学院、班级:电子1413 姓名:杨仕浩 学号:2014111347 指导老师:吉向东

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验程序清单 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 A DDA 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: M OV AL,[SI] MOV BL,[DI] ADC AL,BL AAA MOV [SI],AL DEC SI DEC DI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05H AD3: ADD BYTE PTR [SI],30H ADD BYTE PTR [DI],30H DEC SI

微机原理课程设计心得体会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为主线,系统介绍微型计算机的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解微机的结构与工作流程,建立起系统的概念。 这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必

微机原理及应用实验报告

微机原理及应用实验报告标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

微机原理及应用实验报告 班级: 姓名: 学号: 中南大学 机电工程学院精密测控实验室

实验二软件程序设计 1.实验目的: 1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。 2.实验内容: 1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 2.、编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结 果存入以20H为起始地址的区域中(低字节在前)。 3.实验设备名称、型号: 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 程序1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次 后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如 果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列 了。则可以退出循环,结束程序。 程序结构框图和程序代码如下:

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

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

微机原理实验报告

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

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

微机原理与接口技术 实验报告

微机原理与接口技术 实验报告 学院:计算机与通信工程学院 专业:计算机科学与技术 班级: 学号: 姓名:

实验一8259中断控制器应用实验 一、实验目的 1.掌握PC机中断处理系统的基本原理。 2. 掌握可编程中断控制器8259的应用编程方法。 二、实验内容 1.PC机内中断实验。使用单次脉冲模拟中断产生。验证中断处理程序,在显示器屏幕上显示一行预设定的字符串。 2.PC机内中断嵌套实验。使用单次脉冲模拟两个中断源的中断产生,填写中断处理程序,体会中断嵌套的过程。 3.扩展多中断源查询方式应用实验。利用实验平台上8259控制器作为中断扩展源,编写程序对8259控制器的中断请求进行处理。 三、实验步骤 1.实验1-1:PC机内中断应用实验 (1)按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象,屏幕显示结果截图如下: (2)自设计实验。改变接线方式,将单次脉冲连到USB核心板上的IRQ10插孔上,参考本实验代码,编程实现IRQ10中断。(注意:考虑PC机内中断级联的方式,参看前面的原理说明),代码如下: DA TA SEGMENT MESS DB 'IRQ10 ',0DH,0AH, '$' DA TA ENDS

CODE SEGMENT ASSUME CS:CODE, DS:DA TA START: MOV AX, CS MOV DS, AX MOV DX,OFFSET INT10 MOV AX,2572H ;设置IRQ10对应的中断向量 INT 21H IN AL,21H ;读取中断屏蔽寄存器 AND AL,0F3H ;开放IRQ3中断和从片 OUT 21H,AL IN AL,0A1H ;从片的中断屏蔽寄存器 AND AL,0FBH ;开放IRQ10中断 OUT 0A1H,AL MOV CX,10 STI WAIT: JMP W AIT INT10: MOV AX, DATA ;中断服务程序 MOV DS, AX MOV DX, OFFSET MESS MOV AH, 09 ;在屏幕上显示每次中断的提示信息 INT 21H MOV AL, 20H ; 发出EOI结束中断到PC内主片的地址20H OUT 20H, AL LOOP NEXT IN AL, 21H ;读中断屏蔽寄存器,获取中断屏蔽字 OR AL, 08H ;关闭IRQ3中断 OUT 21H, AL ;将中断屏蔽字送到中断屏蔽寄存器 STI ;置中断标志位 MOV AH, 4CH ;返回DOS INT 21H NEXT: IRET ;中断返回 CODE ENDS END START 调用程序代码,观察实验现象,屏幕显示截图如下:

(完整版)微机原理课后单元习题-单元2-8086cpu

习题二 8086微处理器 答案 主要内容:主要介绍8086/8088CPU内部结构。了解80X86CPU的特点。 2.1 8086 CPU在内部结构上由哪几部分组成?其功能是什么? 【答】8086的内部结构分成两部分。总线接口部件BIU,负责控制存储器与I/O端口的信息读写,包括指令获取与排队、操作数存取等。执行部件EU负责从指令队列中取出指令,完成指令译码与指令的执行行。 2.2 8086的总线接口部件有那几部分组成? 其功能是什么? 【答】8086的总线接口部件主要由下面几部分组成:4个段寄存器CS/DS/ES/SS,用于保存各段地址;一个16位的指令指针寄存器IP,用于保存当前指令的偏移地址;一个20位地址加法器,用于形成20位物理地址;指令流字节队列,用于保存指令;存储器接口,用于内总线与外总线的连接。 2.3 8086的执行单元(部件)由那几部分组成?有什么功能? 【答】8086的执行单元部件主要由下面几部分组成:控制器、算数逻辑单元、标志寄存器、通用寄存器组。 (1)控制器,从指令流顺序取指令、进行指令译码,完成指令的执行等。 (2)算数逻辑单元ALU,根据控制器完成8/16位二进制算数与逻辑运算。 (3)标志寄存器,使用9位,标志分两类。其中状态标志6位,存放算数逻辑单元ALU 运算结果特征;控制标志3位,控制8086的3种特定操作。 (4)通用寄存器组,用于暂存数据或指针的寄存器阵列。 2.4 8086内部有哪些通用寄存器? 【答】四个16位数据寄存器AX、BX、CX、DX,二个指针寄存器SP、BP, 二个变址寄存器SI、DI。这些寄存器使用上一般没有限制,但对某些特定指令操作,必须使用指定寄存器,可参考后面指令系统章节。 2.5 8086内部有哪些段寄存器?各有什么用途? 【答】四个16位段寄存器:CS、DS、SS、ES,分别保存代码段、数据段、堆栈段与扩展段的段地址。 2.6 8086CPU状态标志和控制标志又何不同?程序中是怎样利用这两类标志的? 8086的状态 标志和控制标志分别有哪些? 【答】(1)标志分两类:状态标志(6位),反映刚刚完成的操作结果情况。控制标志(3位),在8086特定指令操作中起控制作用。 (2)利用状态标志可以掌握当前程序操作的结果,例如了解是否产生进位,是否溢出等。例如利用控制标志可以控制程序的单步调试。 (3)状态标志包括:包括零标志ZF、符号标志SF、奇偶标志PF、进位标志CF、辅助进位标志AF、溢出标志OF。控制标志包括:单步运行标志TF、方向标志DF与中断允许标志IF。 2.7 8086/8088和传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什么 优点? 8086CPU执行转移指令时,指令队列寄存器内容如何变化? 【答】(1)传统的计算机一般按照取指令、指令译码与执行指令的串行步骤工作。 (2)在8086CPU中,指令的提取与执行分别由总线接口部件BIU与执行部件EU完成,两个单元重叠并行工作,这种机制称为流水线,这种工作方式有力的提高了CPU的工作效率。

相关文档
最新文档