不带进位的逻辑与或运算指令的实现

不带进位的逻辑与或运算指令的实现
不带进位的逻辑与或运算指令的实现

附件1:

学号:

课程设计

基本模型机的设计——不带

题目

进位的与或运算指令的实现

学院计算机科学技术学院

专业计算机科学与技术专业

班级

姓名

指导教师

2011 年 6 月25 日

课程设计任务书

学生姓名:专业班级:

指导教师:工作单位:计算机科学与技术学院

题目: 基本模型机的设计——不带进位的与或运算指令的实现

初始条件:

理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。

实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体

要求)

1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。

2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。

3、课程设计的书写报告应包括:

(1)课程设计的题目。

(2)设计的目的及设计原理。

(3)根据设计要求给出模型机的逻辑框图。

(4)设计指令系统,并分析指令格式。

(5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。

(6)模型机当中时序的设计安排。

(7)设计指令执行流程。

(8)给出编制的源程序,写出程序的指令代码及微程序。

(9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中与或运算指令的时序分析,累加器A和有关寄存器、存储器的数据

变化以及数据流程)。

(10)课程设计总结(设计的特点、不足、收获与体会)。

时间安排:

周一:熟悉相关资料。周二:系统分析,设计程序。

周三、四:编程并上实验平台调试周五:撰写课程设计报告。

指导教师签名:年月日

系主任(或责任教师)签名:年月日

基本模型机的设计

——不进位与或运算指令的实现

1.设计目的:

1.1掌握各个单元的工作原理,进一步将其组成完整的系统,构成一台基本的模型计

算机。

1.2通过使用软件KKCPT,了解程序编译、加载的过程。

1.3 通过微单步、单拍调试以及程序单步理解模型中的数据流向。

1.4 分析指令系统中需要使用的指令类型和指令的格式,并掌握其设计方法。

1.5 设计一个微程序实现不带进位的与或运算指令。

1.6 上机调试自己的程序,并通过计算机验证自己的设计的微程序的对错以及微程序

在模型机中的运行过程。

2.设计原理:

在各个模块试验中,各个模块的控制信号都是实验者手动模拟产生的。而在真实的实验系统中,模型机的运行时在微程序的控制下,实现特定指令的功能。在本实验平台中,模型机从内存中取出、解释、执行及其指令都将由伪指令和与之相配合的时序来完成,即一条及机器指令对应一个微程序。

2.1首先将HKZK-CPT板面上的连线按照实验教材的规定一一的连好线。

2.2打开HKCPT软件。

2.3新建一个文件,输入一段汇编代码,然后进行编译、加载。

MOV A,#7F

ANL A,#40

MOV R0,#22

ADD A,R0

ORL A,#33

MOV R2,#42

SUB A,R2

ANL A,#27

STA 30

HAL T

2.4打开查看中的结构视图和时序视图等视图,点击F7进行微单步执行程序。

2.4.1观察结构视图各逻辑部件中数据的变化。

2.4.2观察时序视图所监视的信号的时序变化。

ADDRESS BUS

DATA BUS

SB

SA WR RR MLD

MCK IR1CK

EIR1

WM

RM EMCK IR2-O

PC-O

IR2CK

EIR2 PCCK

ELP RA-C ALU-O

S0 S1 S2 S3 M RACK

EDR X1 X0 EDR1

EDR2 DR2CK DR1CK 微程序存储器

DR1 DR2

ALU

244(5)

244(3) 累加器 A

R0

R1

R2

R3

PC

244(15)

244(7)

IR2

RAM 程序

指令寄存器

指令译码

163*2

微地址寄存器

6264*3

CY

ZD

寄存器组

CN

计算机整机逻辑框图

2.5观察HKZK-CPT 面板上的指令寄存器的内容,微指令单元中的内容,并且做好

相应的记录工作。

2.6分析并且理解模型中的数据流向,并且撰写好实验报告。

3. 模型机的逻辑框图:

4. 运算的指令分析:

4.1 CPU 中寄存器数据逻辑或运算的指令:

ORL A,#data: 将累加器A 中的数与立即数data 进行或运算并且将数据传回到累加

器A 中

4.2 CPU 中寄存器数据逻辑与运算的指令:

ANL A,#data : 将累加器A 中的数与立即数data 进行与运算并且将数据传回到累加器

A 中。

4.3 CPU 中寄存器数据传送指令:

MOV A,Ri : 将寄存器Ri 中的数据传送到累加器A 中

MOV Ri,A: 将累加器A中的数据传送到寄存器Ri中

4.4 CPU中寄存器数据逻辑加法运算的指令:

ADD A,Ri :将A中的数据与Ri中的数据进行加法运算并将结果传到累加器A中。

4.5 CPU中寄存器数据逻辑减法运算的指令:

SUB A,Ri:将A中的数据与Ri中的数据进行减法运算并将结果传到累加器A中。

5.设计微程序及其使用微程序实现的方法:

在本实验平台的硬件设计中采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么至多可有24个微操作控制信号,可由微代码直接实现。如果采用多组编码译码,那么24位代码通过二进制译码可实现2的n次方个互斥的微操作控制信号。

由于模型机指令系统规模较小,功能也不大复杂,所以采用全水平不编码纯控制场的微指令格式。在模型机中,用指令操作码的高4位作指令操作码。

5.1微程序设计:有控制部件通过控制线向执行部件发出各种控制命令,执行部件接

受命令后,按一定次序执行一系列最基本操作。

5.2微程序设计的基本组成部分:a. 微指令b. 微程序c. 控制存储器

5.3微命令:控制部件通过控制线向执行部件发出的各种控制命令。

5.4微指令:在微程序控制的计算机中,在CPU周期中使计算机实现一定操作功能

的一组微命令的集合。其格式如下:

5.5

操作控制部分顺序控制部分

………………. 测试标志顺序地址

………………

控制信号W/R Si~S0 下一条指令地址

图5-1

5.6模型机指令系统规模小,功能不复杂,采用全水平不编码纯控制场的微指令格式,

因此在硬件设计中,用24位微指令至多需要24个微控制信号,可由微代码直接实现。并且用指令操作码的高4位作为核心扩展成8位的微程序入口地址MD0~MD7。每条指令由不超过4条的微指令构成,故可采用计数增量方法来产生后继微地址,每条指令执行后微地址自动加1,指向下一条微指令地址。

按操作码散转

指令操作码微程序首地址MD7,MD6 I7 I6 I5 I4 MD1,MD0 MD7 ~ MD0

0 0 0 0 0 1 003H

0 0 0 0 1 1 007H

0 0 0 1 0 1 00BH

0 0 0 1 1 1 00FH

0 0 1 0 0 1 013H

0 0 1 0 1 1 017H

0 0 1 1 0 1 01BH

0 0 1 1 1 1 01FH

0 1 0 0 0 1 023H

0 1 0 0 1 1 027H

0 1 0 1 0 1 02BH

0 1 0 1 1 1 02FH

0 1 1 0 0 1 033H

0 1 1 0 1 1 037H

0 1 1 1 0 1 03BH

0 1 1 1 1 1 03FH

图5-2

微程序首地址形成

MD7 MD6 MD5 MD4 MD3 MD2 MD1 MD0

0 0 I7 I6 I5 I4 1 1

图5-3

微指令形式表

位23 22 21 20 19 18 17 16 微指令MLD WM RM EIR1 EIR2 IR2-O PC-O ELP 位15 14 13 12 11 10 9 8 微指令RR WR HALT X0 X1 ERA RA-O EDR1 位7 6 5 4 3 2 1 0

微指令EDR2 ALU-O CN M S3 S2 S1 S0

图5-4

6.模型机时序分析

6.1 将数据从内存单元中送入累加器中的时序图:

6.1.1 取指指令

6.1.2 将数据送入累加器A中

6.2 将累加器A中的数据与数据40进行逻辑与运算,并且把结果送

回到累加器A中时序图如下:

6.2.1 取指指令

6.2.2将累加器A中的数据送入寄存器DR1中,将内存单元中的数据送入

寄存器DR2中:

6.2.3 将寄存器DR1和寄存器DR2中的数据进行逻辑与运算,并将运算结

果存入累加器A中:

6.3 将数据22从内存单元送入R0中

6.3.1 取指指令

6.3.2将数据22送入R0中:

6.4 将累加器A中的数据与R0中的数据进行加运算,并把运算结

果存入A中

6.4.1 取指指令

6.4.2 将累加器A中的数据送入寄存器DR1中

6.4.3 将R0中的数据送入寄存器DR2中

6.4.4 将数据进行加法运算,并将运算结果送入累加器A中

6.5 将立即数33与累加器A中的数据进行逻辑或运算

6.5.1 取指指令

6.5.2 将累加器A中的数据送入寄存器DR1中

6.5.3 将立即数33送入寄存器DR2中

6.5.4 寄存器DR1与DR2中的数据进行逻辑或运算,并将运算结

果送入累加器A中

6.6 将数据42送入R2中

6.6.1取指指令

6.6.2 将数据送入R2

6.7 将A中的数据减去R2中的数据,并将运算结果存入A中

6.7.1 取指指令

6.7.2 将A中的数据送入寄存器DR1中

6.7.3 将R2中的数据送入寄存器DR2 中

6.7.4 进行减法运算,并将运算结果送入A中

6.8 将累加器A中的数据与立即数27进行逻辑与运算,并且把结

果送回到累加器A中时序图如下:

6.8.1 取指指令

6.8.2将累加器A中的数据送入寄存器DR1中

6.8.3将内存单元中的数据送入寄存器DR2中:

6.8.4 将寄存器DR1和寄存器DR2中的数据进行逻辑与运算,并将运算结

果存入累加器A中:

6.9将计算结果存放在30号内存单元

6.9.1取指指令

6.9.2将内存中的30号单元送到指令寄存器IR2

6.9.3将数据送到存储器中

6.10结束程序

6.10.1取指指令

6.10.2结束程序

7.设计指令流程

7.1 IAB,IDB,OAB,ODB是传送信息的通路,指令代码和数据是通过总线传送的。

7.2 指令ANL A,#40的功能为(A)与运算(40)->A,需执行一下操作:

7.2.1 (PC)+1->PC ;PC加1,为取下一条指令做准备

7.2.2 (A)->DR1 ;累加器A内容送DR1

7.2.3 (40H)->DR2 ;寄存器40H内容送DR2

7.2.4 (A)与运算(40H)->IDB->A ;使ALU执行加法,结果经由IDB送回到A

7.2.5 (PC)->IAB->OAB ;PC寄存器内容作为访问内存地址

7.2.6 (RAM)->ODB->IDB->IR1 ;从内存该地址单元读出指令字节送指令寄存器

IR1

7.3 指令ANL A,#data由4个微指令周期完成指令执行:

7.3.1 pc+1为取下条指令字节准备,累加器A内容送ALU的DR1锁存器

7.3.2 将十六进制数(data)送入ALU的DR2锁存器

7.3.4 ALU将DR1和DR2中的数据进行与运算

7.3.5 ALU将计算结果送累加器A.

7.3.6 取指微指令,从内存读出指令送指令寄存器

7.4指令ORL A,#33的功能为(A)或运算(33H)->A,需执行一下操作:

7.4.1 (PC)+1->PC ;PC加1,为取下一条指令做准备

7.4.2 (A)->DR1 ;累加器A内容送DR1

7.4.3 (33H)->DR2 ;将立即数33H内容送DR2

7.4.4 (A)或运算(33H)->IDB->A ;使ALU执行与运算,结果经由IDB送回到A

7.4.5 (PC)->IAB->OAB ;PC寄存器内容作为访问内存地址

7.4.6 (RAM)->ODB->IDB->IR1 ;从内存该地址单元读出指令字节送指令寄存器

IR1

7.5 指令ORL A,#data由4个微指令周期完成指令执行:

7.5.1 pc+1为取下条指令字节准备,累加器A内容送ALU的DR1锁存器

7.5.2 将十六进制数(data)送ALU的DR2锁存器

7.5.3 ALU将DR1和DR2中的数据进行或运算

7.5.4 ALU将计算结果送累加器A.

7.5.5 取指微指令,从内存读出指令送指令寄存器

7.6 指令ADD A,R0 的功能为将(A)与(R0)相加,将结果送入A中,需要以下操作:

7.6.1 pc+1为取下条指令字节准备

7.6.2(A)->DR1 ;累加器A内容送DR1

7.6.3 (R0)->DR2;R0中的内容送到DR2中

7.6.4 (A)加运算(R0)->IDB->A ;使ALU执行加法运算,结果经由IDB送回到

A

7.6.5(PC)->IAB->OAB ;PC寄存器内容作为访问内存地址

7.6.6 (RAM)->ODB->IDB->IR1 ;从内存该地址单元读出指令字节送指令寄存

器IR1

7.7 指令ADD A,Ri由4个微指令周期完成指令执行:

7.7.1 pc+1为取下条指令字节准备,累加器A内容送ALU的DR1锁存器

7.7.2 将十六进制数(Ri)送ALU的DR2锁存器

7.7.3 ALU将DR1和DR2中的数据进行加法运算

7.7.4 ALU将计算结果送累加器A.

7.7.5 取指微指令,从内存读出指令送指令寄存器

7.8指令SUB A,R2 的功能为将(A)与(R0)相加,将结果送入A中,需要以下操作:

7.8.1pc+1为取下条指令字节准备

7.8.2(A)->DR1 ;累加器A内容送DR1

7.8.3(R2)->DR2;R2中的内容送到DR2中

7.8.4(A)减运算(R2)->IDB->A ;使ALU执行减法运算,结果经由IDB送回到A

7.8.5(PC)->IAB->OAB ;PC寄存器内容作为访问内存地址

7.8.6(RAM)->ODB->IDB->IR1 ;从内存该地址单元读出指令字节送指令寄存器

IR1

7.9指令SUB A,Ri由4个微指令周期完成指令执行:

7.9.1pc+1为取下条指令字节准备,累加器A内容送ALU的DR1锁存器

7.9.2将十六进制数(Ri)送ALU的DR2锁存器

7.9.3ALU将DR1和DR2中的数据进行减法运算

7.9.4ALU将计算结果送累加器A.

7.9.5取指微指令,从内存读出指令送指令寄存器

7.10指令ANL A,#27 的功能为将(A)与(R0)相加,将结果送入A中,需要以下操作:

7.10.1 pc+1为取下条指令字节准备

7.10.2 (A)->DR1 ;累加器A内容送DR1

7.10.3 (27H)->DR2;27H中的内容送到DR2中

7.10.4(A)或运算(27H)->IDB->A ;使ALU执行或运算,结果经由IDB送回到

A

7.10.5(PC)->IAB->OAB ;PC寄存器内容作为访问内存地址

7.10.6(RAM)->ODB->IDB->IR1 ;从内存该地址单元读出指令字节送指令寄

存器IR1

8.编制的源程序、指令代码和源程序的微程序

源程序指令代码微程序

MOV A, #7F 0101 1111 0100 1101 1111 1111 1111 1111

1101 1101 1111 1011 1111 1111 ANL A, #40 1101 1111 0100 1101 1111 1111 1111 1111

1111 1111 1111 1100 1111 1111

1101 1101 1111 1111 0111 1011

1111 1111 1111 1011 1011 1011 MOV R0, #20 0110 1100 0100 1101 1111 1111 1111 1111

1101 1101 1011 1111 1111 1111 ADD A ,R0 0000 1100 0100 1101 1111 1111 1111 1111

1111 1111 1111 1100 1111 1001

1111 1111 0111 1111 0111 1001

1111 1111 1111 1011 1010 1001

ORL A ,#33 1100 1111 0100 1101 1111 1111 1111 1111

1111 1111 1111 1100 1111 1110

1101 1101 1111 1111 0111 1110

1111 1111 1111 1011 1011 1110 MOV R2,#42 0110 1110 0100 1101 1111 1111 1111 1111

1101 1101 1011 1111 1111 1111 SUB A ,R2 0001 1110 0100 1101 1111 1111 1111 1111

1111 1111 1111 1100 1101 0110

1111 1111 0111 1111 0101 0110

1111 1111 1111 1011 1000 0110 ANL A,R2 1101 1111 0100 1101 1111 1111 1111 1111

1111 1111 1111 1100 1111 1011

1101 1101 1111 1111 0111 1011

1111 1111 1111 1011 1011 1011 STA 30 1000 1111 0100 1101 1111 1111 1111 1111

1101 0101 1111 1111 1111 1111

1011 1011 1111 1101 1111 1111 HALT 1111 1111 0100 1101 1111 1111 1111 1111

0100 1101 1111 1111 1111 1111

9. 使用HKCPT验证微程序

把PC和HKCPT平台向连接,启动软件HKCPT,输入编制的源程序,并且把源程序编辑成为指令代码,编译程序,加载程序。打开结构视图,通过微单步执行程序,观察数据和指令的流向,并且观察试验平台上面微指令序列的变化,并和自己的程序相对照,发现在自己设计的微

3算术运算指令实验

2.3 算术运算指令实验 一、实验目的 ·掌握单字节的加减法指令的使用。 ·掌握单字节的乘除法指令的使用。 ·掌握用Keil调试汇编源程序的方法。 ·掌握用Proteus调试汇编源程序的方法。 二、实验预备知识 算术运算指令对程序状态寄存器PSW中的相关位会产生不同的影响。具体如下:◇执行加法指令时,当和的第3位或第7位有进位时,分别将AC、CY标志位置1;否则为O。如果第6位向第7位有进位而第7位没有向前进位,或者如果第7位向前有进位而第6位没有向第7位进位,OV=1,否则OV-O。该操作也影响标志位P。 ◇执行减法指令时,如果第7位有借位,则CY置1,否则清O。若第3位有借位,则 AC置1;否则清O。两个带符号数相减,还要考查OV标志,若OV为1,表示差数溢出,即破坏了正确结果的符号位。该操作也影响标志位P。 ◇执行乘法指令时,若乘积大子OFFH,则OV置1,否则清o(此时B的内容为0)。 CY总是被清O。该操作也影响标志位p。 ◇执行除法指令时,若除数(B) -OOH.则结果无法确定,OV置l。CY总是被清O。该操作也影响标志位P。 三、实验内容 将算术运算指令分成两类,分别编写两个小程序,以完成数据的加减法、乘除法运算。 1.参考程序i-hn减法运算 (1)将立即数# B5H、#36H、#89H分别传送至内部RAM区40H、R2、A中。 (2)将内部RAM区40H中的内容与A中的内容相加,然后再与R2中的内容相加,结果存放至内部RAM区50H中。 (3)将A中的内容与内部RAM区40H中的内容相减,结果存放至内部RAM区60H中。 2.参考程序2——乘除法运算 (1>将立即数#75H、#31H分别传送至内部RAM区15H、33H中。 (2)将内部RAM区15H单元的内容与33H单元的内容相乘。 (3)将乘积的高8位和低8位分别传送至内部RAM区31H、30H中。 (4)将内部RAM区15H单元的内容除以33H单元的内容。 (5)将商和余数分别传送至内部RAM区41H、40H中。四、实验参考程序

逻辑运算类指令

逻辑运算类指令 1.对累加器A的逻辑操作: CLR A ;将A中的值清0,单周期单字节指令,与MOV A,#00H效果 相同。 CPL A ;将A中的值按位取反 RL A ;将A中的值逻辑左移 RLC A ;将A中的值加上进位位进行逻辑左移 RR A ;将A中的值进行逻辑右移 RRC A ;将A中的值加上进位位进行逻辑右移 SWAP A ;将A中的值高、低4位交换。 例:(A)=73H,则执行CPL A,这样进行: 73H化为二进制为01110011, 逐位取反即为10001100,也就是8CH。 RL A是将(A)中的值的第7位送到第0位,第0位送1位,依次类推。 例:A中的值为68H,执行RL A。68H化为二进制为01101000,按上图 进行移动。01101000化为11010000,即D0H。 RLC A,是将(A)中的值带上进位位(C)进行移位。

例:A中的值为68H,C中的值为1,则执行RLC A 1 01101000后,结果是0 11010001,也就是C进位位的值变成了0,而(A) 则变成了D1H。 RR A和RRC A就不多谈了,请大家参考上面两个例子自行练习吧。 SWAP A,是将A中的值的高、低4位进行交换。 例:(A)=39H,则执行SWAP A之后,A中的值就是93H。怎么正好 是这么前后交换呢?因为这是一个16进制数,每1个16进位数字代表4 个二进位。注意,如果是这样的:(A)=39,后面没H,执行SWAP A 之后,可不是(A)=93。要将它化成二进制再算:39化为二进制是10111,也就是0001,0111高4位是0001,低4位是0111,交换后是01110001,也 就是71H,即113。 练习,已知(A)=39H,执行下列指令后写出每步的结果 CPL A RL A CLR C RRC A SETB C

不带进位与或运算指令的实现

课程设计 题目不带进位与或运算指令的实现学院计算机科学与技术学院 专业计算机科学与技术 班级0706 班 姓名孙禹 指导教师唐建雄 2010 年01 月21 日

目录 课程设计任务书 (1) 一设计的目 (2) 二设计原理及设备 (2) 2.1原理一 (2) 2.2原理二 (2) 2.3设计设备 (2) 三模型机的逻辑框图 (3) 四设计指令系统 (4) 4.1指令类型 (4) 4.1.1 算术/逻辑运算类指令 (4) 4.1.2 移位操作类指令 (4) 4.1.3 数据传送指令 (4) 4.1.4 程序跳转指令 (4) 4.1.5存储器操作类指令 (4) 4.2指令系统 (4) 4.2.1实验中用到的指令 (5) 4.2.2指令系统 (5) 4.3指令格式 (6) 4.3.1 MOV指令采用双字节指令 (6) 4.3.2 MOV指令采用单字节指令 (6) 4.3.3 ADD加法运算 (6) 4.3.4 ORL逻辑或采用单字节指令 (6) 4.3.5 ANL逻辑与采用单字节指令 (6) 4.3.6 停机指令(HALT) (6) 4.3.7 STA取数据指令 (6) 五设计微程序及其实现的方法 (6) 5.1微指令格式的设计 (6) 5.2后续微地址的产生方法 (7) 5.3微程序入口地址的形成 (7)

六模型机当中时序的安排 (8) 七设计指令执行流程 (9) 八源程序、指令代码及微程序 (10) 8.1源程序 (10) 8.2 程序指令代码 (11) 8.3微单步运行过程 (11) 8.4微程序指令 (14) 九软件HKCPT的联机方式与脱机方式的实现过程 (14) 9.1进行或运算时的时序分析图 (14) 9.1.1取指指令 (14) 9.1.2执行A→Dbus→DR1 (14) 9.1.3 执行RAM→Dbus→DR2 (14) 9.1.4 执行ALU→A (14) 9.2进行或运算时的时序分析图 (14) 9.2.1取指指令 (14) 9.2.2执行A→Dbus→DR1 (14) 9.2.3 执行RAM→Dbus→DR2 (14) 9.2.4 执行ALU→A (14) 9.3调试窗口流向图 (15) 9.3.1 “与”和“或”运算流向图 (15) 9.3.2 SUB指令流向图 (15) 9.3.3 MOV指令流向图 (16) 9.3.4 ADD指令流向图 (16) 9.4累加器A、寄存器、存储器的数据变化以及数据流程 (17) 十课程设计总结 (18) 十一致谢 (19) 十二参考文献 (19) 本科生课程设计成绩评定表 (20)

加减法指令的实现

课程设计任务书 学生姓名:专业班级:计算机 指导教师:工作单位:计算机科学与技术学院 题目: 基本模型机的设计——加减法指令的实现 初始条件: 理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中加减法指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数 据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排: 周一:熟悉相关资料。周二:系统分析,设计程序。 周三、四:编程并上实验平台调试周五:撰写课程设计报告。 指导教师签名:年月日

系主任(或责任教师)签名:年月日 实现普通的加、减法指令 一、设计目的与原理 1、实验目的 本实验,通过掌握各个单元模块的工作原理,进一步将其组成完整的系统,构造成1台基本的模型计算机。并通过这台模型计算机,对计算机的基本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制等过程有更深的了解,加深对理论课程的理解。 在本试验中,我们将规划读写内存、寄存器、数值计算等功能,并且编写相应的微程序。具体上机调试各个模块单元以进一步掌握整机的概念。 2、实验原理 在本设计中,数据通路的控制将由微程序控制器来完成。在各个模块实验中,各模块的控制信号都是由实验者手动模拟产生的。而在真正的实验系统中,模型机的运行是在微程序的控制下,实现特定指令的功能。计算机从内存取出一条机器指令到指令执行结束的一个指令周期,全部由微指令和与之相匹配的序列来完成,即1条机器指令对应一个微程序。 二、总体设计 1.模型机逻辑框图 简单的模型计算机由算术逻辑运算单元、微程序单元、堆栈寄存器单元、累加器、启停、时序单元、总线和存储器单元组成。 下图为较典型的实验计算机整体逻辑框图:

带进位运算指令的实现

带进位运算指令的实现 1 实验题目 基本模型机的设计--------带进位运算指令的实现 2 实验目的及原理 2.1 实验目的 通过对一个简单计算机的设计,对计算机的基本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,加深对理论课程的理解。 熟悉HKCPT操作平台,并通过使用软件HKCPT,了解程序编译、加载的过程。同时,培养动手能力,独立解决问题的能力。 2.2 实验原理 在各个模块试验中,各模块的控制信号都由试验者手动模拟产生。而在真正的试验系统中,模型机的运行是在微程序的控制下进行的,可以实现特定指令的功能。在本试验平台中,模型机从内存中取出、解释、执行机器指令都将由微指令和与之相配合的时序来完成,即一条机器指令对应一个微程序。 3 模型机的逻辑框图 下图中包括运算器、存储器、微控器、输入设备、输出设备以及寄存器。这些部件的动作控制信号都有微控器根据微指令产生。需要特别说明的是由机器指令构成的程序存放在存储器中,而每条机器指令对应的微程序存储在微控器中的存储器中。

4设计指令系统,并分析指令格式 由于实验平台内采用的是8位数据总线和8位地址总线方式,在设计指令系统时,应考虑有哪几种类型的指令,哪几种寻址方式和编码方式。 4.1指令类型 ①算术/逻辑运算类指令:例如,加法、减法、取反、逻辑运算: ADD A, Ri , SUB A, Ri ②移位操作类指令:例如,带进位或不带进位的移位指令: RRC A, RR A ③数据传输类指令:例如,CPU内部寄存器之间数据传递: MOV A, Ri , MOV Ri,A ④程序跳转指令:跳转指令分为无条件跳转和有条件跳转指令。 JMP addr JZ addr ⑤存储器操作类指令:存储器读/写指令。例如, LDA addr

组成原理课设加减法指令的实现

附件1: 课程设计 题目加减法指令的实现 学院计算机科学与技术 专业计算机科学与技术 班级 姓名 指导教师 2011年 6 月30 日

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 基本模型机的设计——加减法指令的实现 初始条件: 理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体 要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中加减法指令的时序分析,累加器A和有关寄存器、存储器的数据变 化以及数据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排: 周一:熟悉相关资料。周二:系统分析,设计程序。 周三、四:编程并上实验平台调试周五:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

S7-1200 PLC的逻辑运算指令详解!

S7-1200 PLC的逻辑运算指令详解! 在S7-1200 PLC中的逻辑运算指令包括了逻辑与运算、逻辑或运算、逻辑异或运算、逻辑取反运算、编码与译码指令、选择指令、多路复用与多路分用指令。 下面我们分别对这些指令进行解释说明。 1、逻辑运算指令 逻辑与运算、逻辑或运算、逻辑异或运算、逻辑取反运算都是我们常见的逻辑运算指令,如果又用过S7-200/200 SMART PLC的同学会有了解,对于逻辑运算指令,其实基本PLC都是支持的,功能是也是一样的。 逻辑运算指令支持的数据类型是BYTE/WORD/DWORD这三种,这几个指令使用的还是比较多的,大家还是需要掌握一下。 逻辑与指令AND:当参与运算的所有数中对应的位是1时,那么结果就为1。逻辑或指令OR:当参与运算的所有数中对应的位有1时,那么结果为1。 逻辑异或指令XOR:当参与运算的所有数中对应的位相同时,那么结果为0;不同时则为1。 逻辑取反指令INV:对输入的数按二进制位进行取反,也就是0变成1,1变成0。

换成二进制去看。 2、编码指令ENCO和译码指令DECO 编码指令选择输入的最低有效位,并将该位号写入到输出中去。 (注意:输入变量的数据类型为字符串,输出变量的数据类型是INT类型。)

译码指令首先读取输入的值,并将输出值中的位号与读取值对应的那个位置,输出值的其它位以零进行填充 (注意:输入变量的数据类型是UINT,输出变量的数据类型可以是 BYTE/WORD/DWORD的数据类型。) 可能以这样的文字描述比较难理解,看一下下面的程序及对应的解释你就清楚了。 上图的程序中ENCO的输入 16#0B70,二进制数是 0000_1011_0111_0000,最低有效位也就是为1的最低位是bit4位,所以输出MW14存储的就是4。DECO的输入是6,就将输出的bit6位设置为1,其他位设置为0,所以输出MW18的二进制数是0000_0000_0100_0000。 3、选择SEL、多路复用MUX、和多路分用DEMUX

基本模型机的设计——带进位运算指令的实现

学号: 课程设计 题目基本模型机的设计 ——带进位运算指令的实现 学院计算机科学与技术学院 专业计算机科学与技术 班级 姓名 指导教师 2011 年月日

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 基本模型机的设计——带进位运算指令的实现 初始条件: 理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体 要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中带进位运算指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排: 周一:熟悉相关资料。周二:系统分析,设计程序。 周三、四:编程并上实验平台调试周五:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

课设必备之计算机组成原理课程设计--加减法指令的实现讲解

学号:0121010340301 课程设计 题目模型机的总体设计 学院计算机科学与技术 专业计算机科学与技术 班级计算机1003 姓名王俊哲 指导教师许毅 2011 年12 月30 日

课程设计任务书 学生姓名:王俊哲 _ 专业班级:计算机 指导教师:许毅 __ 工作单位:计算机科学与技术学院 题目: 基本模型机的设计——加减法指令的实现 初始条件: 理论:学完“电工电子学”、“数字逻辑”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体 要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中加减法指令的时序分析,累加器A和有关寄存器、存储器的数据变 化以及数据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排: 周一:熟悉相关资料。周二:系统分析,设计程序。 周三、四:编程并上实验平台调试周五:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

第4章 选择结构

第4章选择结构 1、以下选项中,当x为大于1的奇数时,值为0的表达式是 A) x%2==0 B) x/2 C) x%2!=0 D) x%2==1 参考答案:A 【解析】算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0?B选项的值为不定值,但绝对不是0?C选项的值为真,即1?D选项的值为真,即1? 2、当变量c的值不为2、4、6时,值为"真"的表达式是 A) (c>=2 && c<=6)&&(c%2!=1) B) (c==2)||(c==4)||(c==6) C) (c>=2 && c<=6)&& !(c%2) D) (c>=2 && c<=6) || (c!=3) || (c!=5) 参考答案:D 【解析】逻辑或表达式中有一个值不为0,结果即为真,逻辑与表达式中只有两个运算对象均非零,结果才为真?所以只有选项D满足要求? 3、以下叙述中正确的是 A) 在C语言中,逻辑真值和假值分别对应1和0 B) 关系运算符两边的运算对象可以是C语言中任意合法的表达式 C) 对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误 D) 分支结构是根据算术表达式的结果来判断流程走向的 参考答案:B 【解析】A选项中,在C语言中,逻辑真值对应非0; C选项中,表达式:x==y 是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。 4、下列关系表达式中,结果为"假"的是 A) 3 <= 4 B) (3 < 4) == 1 C) (3 + 4) > 6 D) (3 != 4) > 2 参考答案:D 【解析】B选项中,关系表达式(3<4)==1即1==1,结果为真; C选项中,(3+4)>6即7>6,结果为真;A选项中,3<=4结果为真。D选项中,(3!=4)>2即1>2,结果为假。因此D选项正确。 5、以下叙述中正确的是 A) 对于逻辑表达式:a++ || b++,设a的值为1,则求解表达式的值后,b的值会发生改变 B) 对于逻辑表达式:a++ && b++,设a的值为0,则求解表达式的值后,b的值会发生改变 C) else不是一条独立的语句,它只是if语句的一部分 D) 关系运算符的结果有三种:0,1,-1 参考答案:C 【解析】B选项和A选项中,对于逻辑表达式,其中b的值不会因为表达式的结果发生改变;D选项中,关系运算符的结果有"真"和"假"两种。因此C选项正确。

实验一传送类和逻辑运算类指令练习

实验一 3.1 传送类和逻辑运算类指令练习 系别专业:电子系12级电信2班学号:3121003210 姓名:李书杰指导老师:刘志群老师 3.1.1 实验要求 1、参照第1章的介绍,观察TD-NMC+实验平台中各模块的位置及相应引脚的引出线。 2、复习传送类、逻辑类指令及程序的相关知识。 3、实验之前,请详细阅读第1、2章的内容,知道使用软件实验的步骤。 3.1.2 实验设备 PC 机一台,TD-NMC+教学实验系统 3.1.3 实验目的 1、了解TD-NMC+实验平台上各主要元器件及其插座的安装分布。 2、熟悉单片机仿真实验软件Keil C51的使用。 3、体会8051单片机传送和逻辑运算类指令的功能,掌握汇编语言设计和调试方法 3.1.4 实验内容 实验1程序: (1)实验前请分析程序,计算下表各寄存器和存储单元的理论值并填入下表的 (2)编辑、编译、运行调试该程序,通过数据窗口和寄存器窗口查看各寄存器和存储单元的值并填入下表的第二空栏处,比较实验值和理论值是否相同。 实验1表

(3)软件调试程序时尽量采用单步执行或断点执行的方法,能跟踪程序的执行,还比较容易发现程序的错误。 实验2 编写一个程序,把片外RAM 7000H、7001H的低位相拼后送入7002H单元。其实验参考流程图如图3.1.1所示。 观察窗口,若(7000H)=03H,(7001H)=04H,那么(7002H)=34H。 3.1.5 思考题 1.上机实验后,你认为使用Keil软件应注意什么问题? 解:在使用Keil时应将文件保存以.ASM的格式。 2.MOVX、ANL、ORL和XCHD的功能? 解: MOVX外部寻址指令。ANL将两个指令相加。ORL两个 指令的或运算。XCHD将两个指令互换。 3.若把片外RAM7000H的高位、7001H的低位相拼后送入 7002H单元,程序该如何编写? 解:MOV DPTR, #7000H MOVX A, @DPTR INC DPTR MOV B, A MOVX A, @DPTR INC DPTR

逻辑运算指令--习题

逻辑运算指令--习题 课堂练习题目: 18.现有程序段如下: LEA SI,BUF1 LEA DI,BUF2 MOV CX,100 L:MOV AL,[SI+100] MOV [DI],AL INC DI L 4 MOV 10 4 ( 容相加,结果存入CX寄存器中. (4)清除AX寄存器地内容,同时清除CF标志位 (5)将字单元NUM与0B6H进行比较 5.按下列各小题地要求使用相应地几条指令完成其操作. (1)将偏移量为200H地存储单元中地数与300H相加,结果存入AX寄存器中 (2)比较AX寄存器中与BX寄存器中地16位有符号数,当AX中地内容不等于BX中地内容时转移到L. (3)将BUF1和BUF2中地16位数据交换

(4)测试BUF字缓冲区中第15位,如果为1则转移到P

答案===================================== 课堂练习题目: 18.现有程序段如下: LEA SI,BUF1 LEA DI,BUF2 MOV CX,100 L:MOV AL,[SI+100] MOV [DI],AL INC DI DEC SI L 4 MOV 10 MOV LEA BX, A L:INC WORD PTR [BX] ADD BX, 2 LOOP L 4.按下列各小题地要求写出相应地一条汇编语言指令. (1)把BX寄存器和DX寄存器地内容相加,结果存入DX寄存器中 (2)以BX和SI寄存器作基址变址寻址方式,把该单元中地一个字传送到AX. (3)以SI和位移量20H作寄存器相对寻址,将该单元中地内容与CX寄存器中地内容相加,结果存入CX寄存器中.

以下表达式中符合逻辑运算法则的是

练习2 一、选择题 1. 以下表达式中符合逻辑运算法则的是 。 A.C ·C =C 2 B.1+1=10 C.0<1 D.A +1=1 2. 逻辑变量的取值1和0可以表示: 。 A.开关的闭合、断开 B.电位的高、低 C.真与假 D.电流的有、无 3. 当逻辑函数有n 个变量时,共有 个变量取值组合? A. n B. 2n C. n 2 D. 2n 4. 逻辑函数的表示方法中具有唯一性的是 。 A .真值表 B.表达式 C.逻辑图 D.卡诺图 5.F=A B +BD+CDE+A D= 。 A.D B A + B.D B A )(+ C.))((D B D A ++ D.))((D B D A ++ 6.逻辑函数F=)(B A A ⊕⊕= 。 A.B B.A C.B A ⊕ D. B A ⊕ 7.求一个逻辑函数F 的对偶式,可将F 中的 。 A .“·”换成“+”,“+”换成“·” B.原变量换成反变量,反变量换成原变量 C.变量不变 D.常数中“0”换成“1”,“1”换成“0” E.常数不变 8.A+BC= 。 A .A + B B.A + C C.(A +B )(A +C ) D.B +C 9.在何种输入情况下,“与非”运算的结果是逻辑0。 A .全部输入是0 B.任一输入是0 C.仅一输入是0 D.全部输入是1 10.在何种输入情况下,“或非”运算的结果是逻辑0。 A .全部输入是0 B.全部输入是1 C.任一输入为0,其他输入为1 D.任一输入为1 二、判断题(正确打√,错误的打×) 1. 逻辑变量的取值,1比0大。( )。 2. 异或函数与同或函数在逻辑上互为反函数。( )。 3.若两个函数具有相同的真值表,则两个逻辑函数必然相等。( )。 4.因为逻辑表达式A+B+AB=A+B 成立,所以AB=0成立。( )

逻辑代数基础习题

第二章逻辑代数基础 [题] 选择题 以下表达式中符合逻辑运算法则的是。 ·C=C2+1=10 C.0<1 +1=1 2. 逻辑变量的取值1和0可以表示:。 A.开关的闭合、断开 B.电位的高、低 C.真与假 D.电流的有、无 3. 当逻辑函数有n个变量时,共有个变量取值组合。 A. n B. 2n C. n2 D. 2n 4. 逻辑函数的表示方法中具有唯一性的是。 A .真值表 B.表达式 C.逻辑图 D.卡诺图 5.在输入情况下,“与非”运算的结果是逻辑0。 A.全部输入是0 B.任一输入是0 C.仅一输入是0 D.全部输入是1 6.在输入情况下,“或非”运算的结果是逻辑0。 A.全部输入是0 B.全部输入是1 C.任一输入为0,其他输入为1 D.任一输入为1 7.求一个逻辑函数F的对偶式,可将F中的。 A .“·”换成“+”,“+”换成“·” B.原变量换成反变量,反变量换成原变量 C.变量不变 D.常数中“0”换成“1”,“1”换成“0” E.常数不变 8. 在同一逻辑函数式中,下标号相同的最小项和最大项是 关系。 A.互补 B.相等 C.没有关系 9. F=A +BD+CDE+ D= 。 A. A B. A+D C. D D. A+BD 10.A+BC= 。 A .A+ B + C C.(A+B)(A+C) +C 11.逻辑函数F== 。 C. D. [题]判断题(正确打√,错误的打×) 1.逻辑变量的取值,1比0大。() 2.异或函数与同或函数在逻辑上互为反函数。()3.若两个函数具有相同的真值表,则两个逻辑函数必然相等。()

4.因为逻辑表达式A+B+AB=A+B成立,所以AB=0成立。()5.若两个函数具有不同的真值表,则两个逻辑函数必然不相等。()6.若两个函数具有不同的逻辑函数式,则两个逻辑函数必然不相等。()7.逻辑函数两次求反则还原,逻辑函数的对偶式再作对偶变换也还原为它本 身。 ( )8.逻辑函数Y=A + B+ C+C 已是最简与或表达式。()9.对逻辑函数Y=A + B+ C+B 利用代入规则,令A=BC代入,得Y= BC + B+ C+B = C+B 成立。() [题] 填空题 1. 逻辑代数又称为代数。最基本的逻辑关系有、、三种。常用的几种导出的逻辑运算为、、、、。 2. 逻辑函数的常用表示方法有、、。 3. 逻辑代数中与普通代数相似的定律有、、。摩根定律又称为。 4. 逻辑代数的三个重要规则是、、。 5.逻辑函数化简的方法主要有化简法和化简法两种。 6.利用卡诺图化简法化简逻辑函数时,两个相邻项合并,消去一个变量,四个相邻项合并,消去个变量等。一般来说,2n 个相邻一方格合并时,可消去个变量。 7. 和统称为无关项。 8.逻辑函数F= B+ D的反函数 = 。 9.逻辑函数F=A(B+C)·1的对偶函数是。 10.添加项公式AB+ C+BC=AB+ C的对偶式为。 11.逻辑函数F=+A+B+C+D= 。 12.逻辑函数F== 。 13.已知函数的对偶式为+,则它的原函数为。 [题] 将下列各函数式化成最小项表达式。 (1) (2) (3) [题] 利用公式法化简下列逻辑函数。 (1)

基本逻辑函数及运算规律(与或非)

基本逻辑函数及运算规律(与或非) 基本的逻辑关系有与逻辑、或逻辑、非逻辑,与之对应的逻辑运算为与运算(逻辑乘)、或运算(逻辑加)、非运算(逻辑非)。 1.与运算 只有当决定一件事情的条件全部具备之后,这件事情才会发生。把这种因果关系称为与逻辑,其逻辑关系、真值表及逻辑符号如图6.7所示。 若用逻辑表达式来描述,则可写为:B A Y ?= (a)电路 (b)真值表 (c)逻辑符号 图6.7 与运算 下图6.8为实现与运算的二极管与门电路。A 、B 为输入端,F 为输出端。A 、B 输入端中只要有一个为低电平,则与该输入端相连的二极管会反相偏置导通,使输出端为低电平。只有输入端同时为高电平时,二极管会反向偏置截止,输出才是高电平。 图 6.8 与运算的二极管与门电路 2.或运算 当决定一件事情的几个条件中,只要有一个或一个以上条件具备,这件事情就发生。把这种因果关系称为或逻辑,其逻辑关系、真值表及逻辑符号如图6.9所示。 若用逻辑表达式来描述,则可写为:B A Y += (a)电路 (b)真值表 (c)逻辑符号

图6.9 或运算 下图6.10为实现与运算的二极管或门电路。A、B为输入端,F为输出端。A、B输入端中只要有一个为高电平,则输出端为高电平。只有当A、B同时为低电平,输出端才会输出低电平。 图 6.10或运算的二极管与门电路 3.非运算 某事情发生与否,仅取决于一个条件,而且是对该条件的否定,即条件具备时事情不发生;条件不具备时事情才发生,其逻辑关系、真值表及逻辑符号如图6.11所示。 (a)电路(b)真值表(c)逻辑符号 图6.11 或运算 Y 若用逻辑表达式来描述,则可写为:A 下图6.12为晶体管非门电路。当输入为高电平,晶体管饱和,输出为低电平;当输入为电平,晶体管截止,输出为高电平,实现了非门功能。 图 6.12 非运算的二极管与门电路 二、常用逻辑运算 1.与非运算 下图6.13为2输入与非运算的电路、逻辑符号及真值表。它由二极管与门和晶体管非门串接而成,当输入中至少有一个为低电平,P点输出为低电平,晶体管截止,F输出为高电平;当输入全为高电平时,P点输出为高电平,晶体管饱和,F输出为低电平,实现了与

51单片机汇编语言带进位加法指令

51单片机汇编语言带进位加法指令 带进位加法指令(4 条)这4 条指令除与[1]功能相同外,在进行加法运算时还需考虑进位问题。ADDC A,data ;(A)+(data)+(C)(A)累加器A 中的内容与直接地址单元的内容连同进位位相加,结果存在A 中ADDC A,#data ;(A)+#data +(C)(A)累加器A 中的内容与立即数连同进位位相加,结果存在A 中ADDC A,Rn ;(A)+Rn+(C)(A)累加器A 中的内容与工作寄存器Rn 中的内容、连同进位位相加,结果存在A 中ADDC A,@Ri ;(A)+((Ri))+(C)(A)累加器A 中的内容与工作寄存器Ri 指向地址单元中的内容、连同进位位相加,结果存在A 中用途:将A 中的值和其后面的值相加,并且加上进位位C 中的值。说明:由于51 单片机是一种8 位机,所以只能做8 位的数学运算,但8 位的运算范围只有0-255,这在实际工作中是不够的,因此就要进行扩展,一般是将2 个8 位的数学运算合起来,成为一个16 位的运算,这样,可以表达的数的范围就可以到达0-65535。如何合并呢?其实很简单,让我们看一个十进制数的例子吧:66+78 这两个数相加,我们根本不在意这个过程,但事实上我们是这样做的:先做6+8(低位),然后再做 6+7,这是高位。做了两次加法,只是我们做的时候并没有刻意分成两次加法 来做罢了,或者说我们并没有意识到我们做了两次加法。之所以要分成两次来做,是因为这两个数超过了一位数所能表达的范围(0-9)。在做低位时产生了进位,我们做的时候是在适当的位置点一下,然后在做高位加法时将这一点加进去。那么计算机中做16 位加法时同样如此,先做低8 位的,如果两数相加 后产生了进位,也要点一下做个标记,这个标记就职进位位C,在程序状态字PSW 中。在进行高位加法是将这个C 加进去。例如:1067H+10A0H,先做 67H+A0H=107H,而107H 显然超过了0FFH,因此,最终保存在A 中的数是

C语言实验三程序、总结 逻辑运算和选择结构程序设计

实验三逻辑运算和选择结构程序设计 一实验目的 1 掌握C语言表示逻辑量的方法(0代表“假”,1代表“真”); 2 学会正确使用逻辑运算符和逻辑表达式; 3 熟练掌握if语句和switch语句。 二实验内容 1 已知三个整数a,b,c,找出最大值放在max中。 #include main() { 定义整数变量a,b,c,max; 键盘输入3个整数a,b,c; 在a,b中间求出较大数max(如果a>=b,则max=a;否则max=b); c与max比较,如果c>max,则max=c; 输出最大数max; } 根据上面的算法,编写程序;若输入下列数据,分析程序的执行顺序并写出输出结果。 序号输入的3个整数a、b、c输出max 1 1,2,3 max=3 2 1,3,2 max=3 3 2,1,3 max=3 4 2,3,1 max=3 5 3,1,2 max=3 6 3,2,1 max=3 程序如下: #include main() { int a,b,c,max; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); if(a>=b) max=a; else max=b; if(c>max) max=c; printf("max=%d\n",max); } 输出如下:

2 输入某学生的成绩,经处理后给出学生的等级,等级如下: 90分以上(包括90):A 80~90分(包括80):B 70~80分(包括70):C 60~70分(包括60):D 60分以下:E 方法一:用嵌套的if语句 #include "stdio.h" main() { 定义整数变量:成绩score,字符型变量:等级grade; 输入学生成绩score; 如果score>100或score<0,则输出信息:“输入成绩错误!”; 否则 { 如果score>=90,则等级grade='A'; 否则如果score>=80,则等级grade='B'; 否则如果score>=70,则等级grade='C'; 否则如果score>=60,则grade='D'; 否则grade='E'; 输出成绩等级grade; } } 输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中100分,60分,0分以及小于0和大于100的数据。如果稍不注意就会出现小的程序缺陷。 程序如下: #include main() { int score; char grade; printf("请输入学生成绩:"); scanf("%d",&score); if(score>100||score<0) printf("\n输入成绩错误!\n"); else{ if(score>=90) grade='A'; else if(score>=80) grade='B'; else if(score>=70) grade='C'; else if(score>=60) grade='D'; else grade='E'; printf("\n成绩等级是%c\n",grade); } } 运行结果如下:

逻辑运算指令

逻辑运算指令 1.ANL类指令(6条) ANL类是逻辑与指令,其功能是将源操作数作数内容和目的操作数内容按位相“与”,结果存入目的操作数指定单元中,源操作数不变。 ANL A, Rn ;A∩Rn→A ANL A, direct ;A∩(direct) →A ANL A, @Ri ;A∩(Ri) →A ANL A, #data ;A∩data→A ANL direct, A ;(direct)∩A→(direct) ANL direct, #data ;(direct)∩data→(direct) 例设A=F6H,(30H)=0FH 执行 ANL A, 30H ;A∩ (30H) →A 操作如下: 11110110 (F6H) ∩ 00001111 (0FH)注意:按位相“与” 00000110 (06H) 结果:A=06H, 30H地址内容不变,即(30H)=0FH 若执行ANL 30H, A ;(30H)∩ A→(30H) 操作同上,结果放在30H地址中,A中内容不变,即(30H)=06H, A=F6H。 2.ORL类指令(6条) ORL类指令是逻辑或指令,其功能是将源操作数作数内容和目的操作数内容按位逻辑“或”,结果存入目的操作数指定单元中,源操作数不变。 ORL A, Rn ;A∪Rn→A ORL A,direct ;A∪(direct) →A ORL A, @Ri ;A∪(Ri) →A ORL A, #data ;A∪data→A ORL direct, A ;(direct)∪A→(direct) ORL direct, #data ;(direct)∪data→(direct) “或”运算和“与”运算过程类似,这里不再举例。 3.XRL类指令(6条) XRL类是异或指令,其功能是将两个操作数指定内容按位“异或”,结果存于目的操作数指定单元中。“异或”原则是相同为“0”,相异为“1”。 XRL A, Rn ;A⊕Rn→A XRL A, direct ;A⊕(direct) →A XRL A, @Ri ;A⊕(Ri) →A

实验二带进位控制8位算术逻辑运算实验

实验二带进位控制8位算术逻辑运算实验 一、实验目的 1、验证带进位控制的算术逻辑运算发生器的功能。 2、按指定数据完成几种指定的算术运算。 二、实验内容 1、实验原理 带进位控制运算器的实验原理如图所示,在实验(1)的基础上增加进位控制部分,其中高位74LS181(U31)的进位CN4通过门UN4E、UN2C、UN3B 进入UN5B的输入端D,其写入脉冲由T4和AR信号控制,T4是脉冲信号,在手动方式下进行实验时,只需将跳线器J23上T4与手动脉冲发生开关的输出端SD相连,按动手动脉冲开关,即可获得实验所需的单脉冲。AR是电平控制信号(低电平有效),可用于实现带进位控制实验。从图中可以看出,AR必须为“0’’电平,D型触发器74LS74(UN5B)的时钟端CLK才有脉冲信号输入。才可以将本次运算的进位结果CY锁存到进位锁存器74LS74(UN5B)中。 2、实验接线 实验连线(1)~(5)同实验~,洋细如下: (1)ALUBUS~连ExJ3; (2)ALUO1连BUSl; (3)SJ2连UJ2; (4)跳线器J23上T4连SD; (5)LDDRl、LDDR2、ALUB、SWB四个跳线器拨在左边(手动方式);(6)AR、299B跳线器拨在左边,同时开关AR拨在“0’’电平,开关299B拨在“1”电平; (7)J25跳线器拨在右边。 3、实验步骤 (1)仔细查线无误后,接通电源。 (2)用二进制数码开关KDO~KD7向DRl和DR2 寄存器置数,方法:关闭ALU输出三态门ALUB=1,开启输入三态门SWB=0,输入脉冲T4按手动脉冲

发生按钮产生。如果选择参与操作的两个数据分别为55H 、AAH ,将这两个数存入DR1和DR2的具体操作步骤如下: (3)开关ALUB=0,开启输出三态门,开关SWB=1,关闭输入三态门,同时让 LDDR1=0,LDDR2=0。 (4)如果原来有进位,CY=1,进位灯亮,但需要清零进位标志时,具体操作方 法如下: ◆ S3、S2、S1、S0、M 的状态置为0 0 0 0 0,AR 信号置为“0”电平 (清零操作时DRl 寄存器中的数应不等于FF )。 ◆ 按动手动脉冲发生开关,CY=0,即清进位标志。 注:进位标志指示灯CY 亮时表示进位标志为“1”,有进位;进位标志指示灯CY 灭时,表示进位位为“0”,无进位。 (5)验证带进位运算及进位锁存功能 这里有两种情况: ● 进位标志已清零,即CY=0,进位灯灭。 ? 使开关CN=0,再来进行带进位算术运算。例如步骤(2)参与运算的两 个数为55H 和AAH ,当S3、S2、S1、S0状态为10010,此时输出数据 总线显示灯上显示的数据为DRl 加DR2再加初始进位位“1” (因 CN=0),相加的结果应为ALU=00,并且产生进位,此时按动手动脉冲 开关,则进位标志灯亮,表示有进位。 ? 使开关CN=1,当S3、S2、S1、S0状态为10010,则相加的结累ALU=FF , 并且不产生进位。 数据开关置数 开输入三态门 数据存入寄存器DR2 ALUB=1 SWB=0 LDDR1= 0 LDDR2=1 T4= ∏ KD0~KD7 数据开关置数 开输入三态门 数据存入寄存 器DR1 ALUB=1 SWB=0 LDDR1=1 LDDR2=0 T4= ∏ KD0~KD7 01010101

相关文档
最新文档