当前位置:文档之家› 实验二 算术运算

实验二 算术运算

实验二  算术运算
实验二  算术运算

汇编语言实验报告

(二)

班级:01540802班

姓名:南征

学号: 20080705

信息与电子学院

实验二算术运算

一、实验目的

熟悉利用汇编语言对多精度十六进制和十进制的编程方法,弄清带符号数及不带符号数的运算区别,理解各状态标志位的含义,以及运算结果对各状态标志的影响,掌握无符号数的乘除法运算并保证运算结果不溢出。

二、实验要点

对汇编语言的算术运算要分清是有符号的运算还是无符号的运算,当对无符号数进行加减时,要考虑进位CF,对于有符号数进行加减时,要考虑运算结果是否溢出。为防止溢出,常将操作数利用CBW或CWD指令进行符号扩展后再进行加减运算。对于多精度的加减运算时,对高位字节或字的加减法要分别采用ADC和DBB;对低位字节或字采用不带进位的加减指令ADD和SUB;在利用循环计算多字节的加减法时,可以用CLC指令将CF初始化为0,然后在循环体内统一使用带进位(或借位)的加减法指令。

在汇编语言进行十进制的加减运算时,首先需将操作数用BCD码示,并且要考虑操作数是用组合的BCD码还是用一个字节表示一个十进制数。对于组合的BCD码加减法,其结果应放在AL寄存器中,再用DAA和DAS指令进行二——十进制调整。二对于未组合的BCD码加减法,用AAA和AAS对结果进行二——十进制调整。此外在进行十进制数减法时,要考虑用大数减小数,因为十进制数运算不能用补码表示。

对于有符号数惩罚要用IMUL指令,对无符号数乘法要用MUL指令。字乘时AX为约定的一个乘数,其积在DX:AX中;字节相乘时AL为约定的一个乘数,其积在AX中。

乘法指令中的操作数,不得为立即数,可以为通用寄存器或存储器操作数。

对于除法要用IDIV、DIV分别对有符号数和无符号数进行除法运算。字除法时被除数约定在DX:AX中;字节相除时,被除数约定在AX中,除法指令中的操作数可以为通用寄存器或者存储器操作数,但不得是立即数。在进行除法运算时要考虑除数是否为零,以及其商是否溢出,在出现除零溢出时,将产生类型号为0的内部中断。

三、实验任务及步骤

1.在数据段中一缓冲区内存放有无符号数0ABH和78H,64H和54H;试编程求这两组数的和、差,并将结果填入表格:

代码如下:

DATA SEGMENT

DATA1 DB 0ABH, 64H

DATA2 DB 78H, 5AH

COUNT EQU $-DATA2

DATA3 DW 6 DUP(0)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

MAIN PROC FAR

START:

MOV AX, DATA

MOV DS, AX

MOV ES, AX

LEA SI, DATA1

LEA DI, DATA2

LEA BX, DATA3

MOV CX, COUNT

AGAIN1:

XOR AH, AH

MOV AL, [SI]

ADC AL, [DI]

ADC AH, 0

MOV [BX], A X

INC SI

INC DI

INC BX

INC BX

DEC CX

JNZ AGAIN1

LEA SI, data1

LEA DI, data2

MOV CX, COUNT

CLC

AGAIN2:

MOV AL, [SI]

SBB AL, [DI]

MOV [BX], A L

INC SI

INC DI

INC BX

DEC CX

JNZ AGAIN2

MOV AH, 4CH

INT 21H

MAIN ENDP

CODE ENDS

END START

运行结果如下:

0B3E:0000 AB 64 78 5A 23 01 BE 00-33 0A 00 00 00 00 00 00 0B3E:0010 B8 3E 0B 8E D8 8E C0 8D-36 00 00 8D 3E 02 00 8D

0B3E:0020 1E 04 00 B9 02 00 32 E4-8A 04 12 05 80 D4 00 89

0B3E:0030 07 46 47 43 43 49 75 EE-8D 36 00 00 8D 3E 02 00

0B3E:0040 B9 02 00 F8 8A 04 1A 05-88 07 46 47 43 49 75 F3

0B3E:0050 B4 4C CD 21 06 4E 91 00-00 2E C7 06 1A 92 5B 5D

0B3E:0060 2E C7 06 1C 92 7C 3C 2E-C7 06 1E 92 3E 2B 2E C7

0B3E:0070 06 20 92 3D 3B E8 83 09-73 13 B8 FF FF 53 26 8B

2.在数据缓冲区BUF内存放有10个学生的数学成绩,78、86、95、67、

56、80、92、68、77、88,试编程求总分和平均分,并分别存入SUM

字单元和AVERAGE字节单元。

代码如下:

DATA SEGMENT

BUF1 DB 78H,86H,95H,67H,56H,80H,92H,68H,77H,88H

SUM DW 0

AVERAGE DW 0

DATA ENDS

STACK SEGMENT

DB 256 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK

MAIN PROC FAR

PUSH DS

MOV AX, 0

PUSH AX

MOV AX, DATA

MOV DS, AX

MOV ES, AX

MOV SI, OFFSET BUF1

MOV DI, OFFSET SUM

MOV CX, 9H

MOV AX, 0078H

INC SI

NEXT: MOV BL, [SI]

ADD AL, BL

DAA

ADC AH, 0

INC SI

DEC CX

MOV [DI], AX

JNZ NEXT

MOV [DI], AX

MOV BX, 10H

DIV BX

MOV [DI+2], AX

MOV [DI+4], DX

MOV AH, 4CH

INT 21H

RET

MAIN ENDP

CODE ENDS

END MAIN

运行结果如下:

0B3E:0000 78 86 95 67 56 80 92 68-77 88 87 07 78 00 07 00

0B3E:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

3.多字加减法

在数据段中有两个缓冲区,存放数据如下:

BUF1 DB 12H 98H 45H 64H 78H

BUF2 DB 33H 46H 17H 45H 52H

编写一源程序,将BUF1和BUF2中的十六进制数,按下列要求计算,并将结果填入下表:

代码如下:

DATA SEGMENT

BUF1 DB 82H,98H,45H,64H,78H

BUF2 DB 33H,46H,17H,45H,52H

COUNT EQU $-BUF2

SUM DB 38 DUP(0)

DATA ENDS

STACK SEGMENT

DB 100 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FAR

MOV AX,DATA

MOV DS,AX

MOV ES,AX

LEA SI,BUF1

LEA BX,BUF2

LEA DI,SUM

MOV CX,COUNT

ADD SI,COUNT-1

ADD BX,COUNT-1

ADD DI,37

CLC

STD

A1: LODSB

ADC AL,[BX]

DAA

STOSB

DEC BX

LOOP A1

ADC BYTE PTR[DI],0

DEC DI

LEA SI,BUF1+COUNT-1

LEA BX,BUF2+COUNT-1

MOV CX,COUNT

CLC

STD

A2: LODSB

ADC AL,[BX]

STOSB

DEC BX

LOOP A2

ADC BYTE PTR[DI],0

DEC DI

LEA SI,BUF1+COUNT-1

LEA BX,BUF2+COUNT-1

MOV CX,COUNT-1

CLC

STD

A3: LODSB

ADC AL,[BX]

STOSB

DEC BX

LOOP A3

MOV AL,[SI]

CBW

MOV CL,[BX]

CBW

ADD AX,CX

MOV [DI],AL

MOV[DI-1],AH

DEC DI

DEC DI

LEA SI,BUF1+COUNT-1

LEA BX,BUF2+COUNT-1

MOV CX,COUNT

CLC

STD

S1: LODSB

SBB AL,[BX]

DAS

STOSB

DEC BX

LOOP S1

DEC DI

LEA SI,BUF1+COUNT-1

LEA BX,BUF2+COUNT-1

MOV CX,COUNT

CLC

STD

S2: LODSB

SBB AL,[BX]

STOSB

DEC BX

LOOP S2

DEC DI

LEA SI,BUF1+COUNT-1

LEA BX,BUF2+COUNT-1

MOV CX,COUNT-1

CLC

STD

S3: LODSB

SBB AL,[BX]

STOSB

DEC BX

LOOP S3

MOV AL,[SI]

MOV CL,[BX]

CBW

SUB AX,CX

MOV [DI],AL

MOV[DI-1],AH

MOV AH,4CH

INT 21H

MAIN ENDP

CODE ENDS

END MAIN

运行结果如下:

0B3E:0000 82 98 45 64 78 33 46 17-45 52 00 00 FF 4F 52 2E

0B3E:0010 1F 26 00 4F 52 2E 1F 26-00 49 52 28 19 26 FF B5

0B3E:0020 DE 5C A9 CA 00 B5 DE 5C-A9 CA 01 16 44 63 10 30

0B3E:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

0B3E:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

4.计算280H*584H/190H,运算的结果用十六进制表示。

RESULT = 08D3 + 0050

代码如下:

DATA SEGMENT

DATA1 DW 280H, 584H, 190H

DATA2 DW 1 DUP(0)

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA, ES: DATA

MAIN PROC FAR

START: MOV AX, DATA

MOV DS, AX

MOV ES, AX

LEA BX, DATA1

MOV DX, 0000H

MOV AX, [BX]

INC BX

MUL WORD PTR [BX]

INC BX

INC BX

DIV WORD PTR [BX]

LEA BX, DATA2

MOV [BX], A X

INC BX

INC BX

MOV [BX], DX

MOV AH, 4CH

INT 21H

MAIN ENDP

CODE ENDS

END START

运行结果如下:

0B3E:0000 80 02 84 05 90 01 D3 08-50 00 00 00 00 00 00 00

0B3E:0010 B8 3E 0B 8E D8 8E C0 8D-1E 00 00 BA 00 00 8B 07

0B3E:0020 43 43 F7 27 43 43 F7 37-8D 1E 06 00 89 07 43 43

0B3E:0030 89 17 B4 4C CD 21 26 E1-91 2E 89 36 E3 91 FC 2E

0B3E:0040 89 0E 48 91 2E C7 06 4A-91 00 00 2E C7 06 5D 91

0B3E:0050 00 00 2E C7 06 4E 91 00-00 2E C7 06 1A 92 5B 5D

0B3E:0060 2E C7 06 1C 92 7C 3C 2E-C7 06 1E 92 3E 2B 2E C7

0B3E:0070 06 20 92 3D 3B E8 83 09-73 13 B8 FF FF 53 26 8B

四、实验心得

通过本次实验基本掌握了运用汇编语言进行加、减、乘、除算术运算的方法,在实验过程中遇到了关于进位标志和辅助进位标志等状态标志的一些问题,解决这些问题使笔者加深了对状态标的理解。实验中还进行了十进制转换以及类型转换等操作,对这些操作也有了全新的理解和认识。本次实验还涉及到了一些循环结构,这也是今后在运用汇编语言进行程序编写过程中最为常用的一种结构。

实验二图像的代数运算

昆明理工大学信息工程与自动化学院学生实验报告 ( 2012 —2013 学年第二学期) 一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验原理 图像的代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。如果输入图像为A(x,y)和B(x,y),输出图像为C(x,y),则图像的代数运算有如下四种形式: C(x,y) = A(x,y) + B(x,y) C(x,y) = A(x,y) - B(x,y) C(x,y) = A(x,y) * B(x,y) C(x,y) = A(x,y) / B(x,y) 图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。例如,图像减法就可以用来检测同一场景或物体生产的两幅或多幅图像的误差。 使用MATLAB的基本算术符(+、-、*、/ 等)可以执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。为了更方便地对图像进行操作,MATLAB图像处理工具箱包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合。下表列举了所有图像处理工具箱中的图像代数运算函数。

表2-1 图像处理工具箱中的代数运算函数 能够接受uint8和uint16数据,并返回相同格式的图像结果。虽然在函数执行过程中元素是以双精度进行计算的,但是MATLAB工作平台并不会将图像转换为双精度类型。 代数运算的结果很容易超出数据类型允许的范围。例如,uint8数据能够存储的最大数值是255,各种代数运算尤其是乘法运算的结果很容易超过这个数值,有时代数操作(主要是除法运算)也会产生不能用整数描述的分数结果。图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整型数据将被截取为数据范围的极值,分数结果将被四舍五入。例如,如果数据类型是uint8,那么大于255的结果(包括无穷大inf)将被设置为255。 注意:无论进行哪一种代数运算都要保证两幅输入图像的大小相等,且类型相同。三、实验步骤 1.图像的加法运算 图像相加一般用于对同一场景的多幅图像求平均效果,以便有效地降低具有叠加性质的随机噪声。直接采集的图像品质一般都较好,不需要进行加法运算处理,但是对于那些经过长距离模拟通讯方式传送的图像(如卫星图像),这种处理是必不可少的。 在MATLAB中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输出图像。imadd函数的调用格式如下:Z = imadd(X,Y) 其中,X和Y表示需要相加的两幅图像,返回值Z表示得到的加法操作结果。 图像加法在图像处理中应用非常广泛。例如,以下代码使用加法操作将图2.1中的(a)、(b)两幅图像叠加在一起: I = imread(‘rice.tif’); J = imread(‘cameraman.tif’); K = imadd(I,J); imshow(K); 叠加结果如图2.2所示。

计算机组成原理运算器实验—算术逻辑运算实验

实验报告 、实验名称 运算器实验—算术逻辑运算实验 、实验目的 1、了解运算器的组成原理。 2、掌握运算器的工作原理。 3、掌握简单运算器的数据传送通路。 4、验证运算功能发生器( 74LS181)的组合功能 三、实验设备 TDN-CM++ 计算机组成原理教学实验系统一套,导线若干四、实验原理 实验中所用的运算器数据通路如图1-1 所示。其中两片74LSl81以串行方式构成8 位字长的ALU,ALU 的输出经过一个三态门(74LS245)和数据总线相连。三态门由ALU-R 控制,控制运算器运算的结果能否送往总线,低电平有效。为实现双操作数的运算,ALU 的两个数据输入端分别由二个锁存器DR1、DR2 (由74LS273实现)锁存数据。要将数据总线上的数据锁存到DRl、DR2 中,锁存器的控制端LDDR1 和DDR2必须为高电平,同时由T4 脉冲到来。 数据开关“( INPUT DEVICE")用来给出参与运算的数据,经过三态 (74LS245) 后送入数据总线,三态门由SW—B控制,低电平有效。数据显示灯“( BUS UNIT") 已和数据总线相连,用来显示数据总线上的内容。 图中已将用户需要连接的控制信号用圆圈标明(其他实验相同,不再说明),其中除T4 为脉冲信号外,其它均为电平信号。由于实验电路中的时序信号均已连至“W/R UNIT ”的相应时序信号引出端,因此,在进行实验时,只需将“W /R UNIT"的T4接至“ STATE UNIT ”的微动开关KK2 的输入端,按动微动开关,即可获得实验所需的单脉冲。 ALU 运算所需的电平控制信号S3、S2、S1、S0 、Cn、M、LDDRl、 LDDR2 、ALU-B 、SW-B均由“ SWITCH UNIT ”中的二进制数据开关来模拟,其中Cn、ALU —B、SW 一 B 为低电平有效LDDR1 、LDDR2 为高电平有效。 对单总线数据通路,需要分时共享总线,每一时刻只能由一组数据送往总线。

组成原理实验1 8位算术逻辑运算

淮海工学院计算机工程学院实验报告书 课程名:《计算机组成原理》 题目:实验一8位算术逻辑运算 实验 班级: 学号: 姓名:

1、目的与要求 1)掌握算术逻辑运算器单元ALU(74LS181)的工作原理。 2)掌握简单运算器的数据传送通路组成原理。 3)验证算术逻辑运算功能发生器74LSl8l的组合功能。 4)按给定数据,完成实验指导书中的算术/逻辑运算。 2、实验设备 ZYE1601B计算机组成原理教学实验箱一台,排线若干。 3、实验步骤与源程序 l) 按下列步骤连接实验线路,仔细检查无误后,接通电源。 ⑴ ALUBUS连EXJ3; ⑵ ALUO1连BUS1; ⑶ SJ2连UJ2; ⑷跳线器J23上T4连SD; ⑸ LDDR1、LDDR2、ALUB、SWB四个跳线器拨在左边(手动方式); ⑹ AR跳线器拨在左边,同时开关AR拨在“1”电平。 2) 用二进制数码开关KD0~KD7向DR1和DR2寄存器置数。方法:关闭ALU输出三态门(ALUB`=1),开启输入三态门(SWB`=0),输入脉冲T4按手动脉冲发生按钮产生。设置数据开关具体操作步骤图示如下: LDDR1=1 LDDR1=0 说明:LDDR1、LDDR2、ALUB`、SWB`四个信号电平由对应的开关LDDR1、LDDR2、ALUB、SWB 给出,拨在上面为“1”,拨在下面为“0”,电平值由对应的显示灯显示,T4由手动脉冲开关给出。 ⑶检验DR1和DR2中存入的数据是否正确,利用算术逻辑运算功能发生器 74LS181的逻辑功能,即M=1。具体操作为:关闭数据输入三态门SWB`=1,打开ALU输出三态门ALUB`=0,当置S3、S2、S1、S0、M为1 1 1 1 1时,总线指示灯显示DR1中的数,而置成1 0 1 0 1时总线指示灯显示DR2中的数。 ⑷验证74LS181的算术运算和逻辑运算功能(采用正逻辑) 在给定DR1=35、DR2=48的情况下,改变算术逻辑运算功能发生器的功能设置,观察运算器的输出,填入表2.1.1中,并和理论分析进行比较、验证。。 4、测试数据与实验结果 实验数据记录

实验二 算术运算实验

实验二算术运算实验 一、实验目的 1、掌握MASM for Windows 环境下的汇编语言编程环境使用; 2、掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式; 3、掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志 位的影响及测试方法; 4、掌握无符号数和有符号数运算区别及编程方法; 5、掌握BCD 码调整指令的使用方法 二、软硬件实验环境 1、硬件环境:惠普64 位一体化计算机及局域网; 2、软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。 三、实验基本原理 算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。 1) 标志位 在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。 表1标志名和状态符号的对照表参照表 2) 加减法指令 ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。 3) 乘除法指令

MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV 表示带符号数除法指令。 4) 符号位扩展指令 CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。 5) BCD码的调整指令 在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。 组合的BCD码加法调整指令DAA; 组合的BCD码减法调整指令DAS; 非组合的BCD码加法调整指令AAA; 非组合的BCD码减法调整指令AAS; 乘法的非组合BCD码调整指令AAM; 除法的非组合BCD码调整指令AAD。 8088/8086指令系统提供了实现加、减、乘、除运算指令,可参照表2所示内容。 表2数据类型的数据运算表 四、实验步骤与内容 1)对于表格中三组无符号数,试编程求这三组数的指定运算结果,并考虑计算结果对标志寄存器中状态标志位的影响: ①实验分析 本实验要求简单,仅对指定三组数进行基本运算。只需使用ADD、SUB、MUL、DIV四个运算命令,并以MOV命令作为数值转移的手段即可。运算结果和状态标志的情况可以通过debug调试中的T命令进行逐步查看。 需要注意的主要有以下几点: 1.在进行加法和乘法运算时,会出现对高位的进位扩展。因此,在记录结

《8位算术逻辑运算实验》

3.2 算术逻辑运算部件 1位全加器 n 位并行加法器 ALU 单元 乘、除 法器 运算器 3.2.1 加法单元 若:+1101,+1111 两数相加,且分别放入A 、B 两个寄存器。 0 0 1 1 0 1 (补码、双符号位表示) +) 0 0 1 1 1 1 0 1 1 1 0 0 第3位:输入量: Ai(1),Bi(1), C i-1(1) 本位进位 C i ∑i C i-1 A i B i 低位进位 本位操作数 输入、输出量之间的关系式: Σi =(A B i C i-1 (1) C i = A i B i A B i )C i-1 (2) 根据上式,得出一位全加器的逻辑电路图: 根据(1)式得: 如果三个输人中1的个数为奇数,则本位和为1,否则为0。 根据(2)式得: 当本位的两个输入A i 、B i 均为1时,不管低位有无进位C i-1传来,都必然产生进位C i ;若C i-1为1,只要A i 、B i 中有一个为1,也必然产生进位。 i-1 i-1 i i i i (a ) (b ) 进位链 选择逻 辑控制 移位器 寄存器组 选择器

3.3.1 2并行加法器与进位逻辑结构 一、串行加法器 1.定义:如果每步只求一位和,将n 位加分成n 步实现,这样的加法器称为串行 加法器。 2.组成: 1 个一位全加器 1个移位寄存器:从低到高串行提供操作数相加; 1个寄存器 1个触发器 3.特点:结构简单,速度极慢。 二、并行加法器 1.定义:如果用n 位全加器一步实现n 位相加,即n 位同步相加,这样的加法器称为并行加法器。 2.组成: n 位加法器 并行加法器 串行进位链 进位链 并行进位链 根据(指C i-1 )输入量提供时间的不同,将进位链分为带串行进位链的并行加法器,带并行进位链的并行加法器。 加法器的运算速度不仅与全加器的运算速度有关,更主要的因素是取决于进位传递速度。 3.进位信号的基本逻辑: C i = A i B i +(A i )C i-1 令Gi= A i B i 进位产生函数 Pi = A i ,进位传递函数 4.串行进位链 (1)定义:各级进位信号直接依赖于低一级的进位信号 (2)关系式: C 1 = G 1 + P 1C 0 C 2 = G 2 + P 2C 1 C 3 = G 3 + P 3C 2 。。。。。。。。。 C n = G n + P n C n-1 (3)结构图:

实验二 算术运算类操作实验 (基础与设计)

实验二算术运算类操作实验 (基础与设计) 一、实验要求和目的 1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式; 2、掌握各类运算类指令对各状态标志位的影响及测试方法; 3、熟悉汇编语言二进制多字节加减法基本指令的使用方法; 4、熟悉无符号数和有符号数乘法和除法指令的使用; 5、掌握符号位扩展指令的使用。 6、掌握BCD 码调整指令的使用方法 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 本实验主要进行算术运算程序设计和调试,涉及到的知识点包括: 1.加减法处理指令 主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。 2.乘除法指令和符号位扩展指令 主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW 和从字扩展到双字的指令CWD。3.BCD 码的调整指令 主要有非压缩的BCD 码加法调整指令DAA,压缩的BCD 码减法调整指令DAS,非压缩的BCD 码加法调整指令AAA,非压缩的BCD 码减法调整指令AAS,乘法的非压缩BCD码调整指令AAM,除法的非压缩BCD 码调整指令AAD。 8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对下表所示的数据类型进行数据运算。 四、实验内容与步骤 1、对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响。 设计流程:

dsp实验1-基本算数运算

电子科技大学通信与信息工程学院标准实验报告 (实验)课程名称DSP设计与实现 电子科技大学教务处制表

电 子 科 技 大 学 实 验 报 告 一、实验室名称:DSP 实验室 二、实验项目名称:基本算术运算 三、实验学时:4 四、实验原理: (1) 定点DSP 中数据表示方法 C54X 是16位的定点DSP 。一个16位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示02,D1位表示12,次高位(D14)表示142。如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。例如,07FFFH 表示最大的正数32767(十进制),而0FFFFH 表示最大的负数-1(负数用2的补码方式显示)。当需要表示小数时,小数点的位置始终在最高位后,而最高位(D15)表示符号位。这样次高位(D14)表示12-,然后是22-,最低位(D0)表示152 -。所以04000H 表示小数0.5,01000H 表示小数125.02 3=-,而0001H 表示16位定点DSP 能表示的最小的小数(有符号)152-=0.8125。在后面的实验中,除非有特别说明,我们指的都是有符号数。 在C54X 中,将一个小数用16位定点格式来表示的方法是用152乘以该小数,然后取整。 从上面的分析可以看出,在DSP 中一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。 (2) 实现16定点加法 C54X 中提供了多条用于加法的指令,如ADD ,ADDC ,ADDM 和ADDS 。其中ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如32位扩展精度加法),而ADDM

16位算术逻辑运算实验

16 位算术逻辑运算实验 一、实验内容 1、实验原理 实验中所用16位运算器数据通路如图3-3所示。其中运算器由四片74LS181以并/串形成16位字长的ALU构成。低8位运算器的输出经过一个三态门74LS245(U33)到ALUO1插座,实验时用8芯排线和内部数据总线BUSD0~D7插座BUS1~6中的任一个相连,低8位数据总线通过LZD0~LZD7显示灯显示;高8位运算器的输出经过一个三态门74LS245(U33`)到ALUO1`插座,实验时用8芯排线和高8位数据总线BUSD8~D15插座KBUS1或KBUS2相连,高8位数据总线通过LZD8~LZD15显示灯显示;参与运算的四个数据输入端分别由四个锁存器74LS273(U29、U30、U29`、U30、)锁存,实验时四个锁存器的输入并联后用8芯排线连至外部数据总线EXD0~D7插座EXJ1~EXJ3中的任一个;参与运算的数据源来自于8位数据开并KD0~KD7,并经过一三态门74LS245(U51)直接连至外部数据总线EXD0~EXD7,输入的数据通过LD0~LD7显示。

本实验用到6个主要模块:⑴低8位运算器模块,⑵数据输入并显示模块,⑶数据总线显示模块,⑷功能开关模块(借用微地址输入模块),⑸高8位运算器模块,⑹高8位(扩展)数据总线显示模块。根据实验原理详细接线如下(接线⑴~⑸同实验一): ⑴ALUBUS连EXJ3; ⑵ALUO1连BUS1; ⑶SJ2连UJ2; ⑷跳线器J23上T4连SD; ⑸LDDR1、LDDR2、ALUB、SWB四个跳线器拨在左边(手动方式); ⑹AR跳线器拨在左边,同时开关AR拨在"1"电平; ⑺ALUBUS`连EXJ2;

实验二算术逻辑运算及移位操作

实验二算术逻辑运算及移位操作 一、实验目的 1.熟悉算术逻辑运算指令和移位指令的功能。 2.了解标志寄存器各标志位的意义和指令执行对它的影响。 二、实验预习要求 1.复习8086指令系统中的算术逻辑类指令和移位指令。2.按照题目要求在实验前编写好实验中的程序段。 三、实验任务 1.实验程序段及结果表格如表: 表

2.用BX 寄存器作为地址指针,从BX 所指的内存单元(0010H)开始连续存入(10H 、04H 、30H),接着计算内存单元中的这三个数之和,和放在 单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的程

3 后结果(AX)= (1) 传送15H 到AL 寄存器; (2) 再将AL 的内容乘以2 ; (3) 接着传送15H 到BL 寄存器; (4) 最后把AL 的内容乘以BL 的内容。 4商= (1) 传送数据2058H 到DS:1000H 单元中,数据12H 到DS:1002H 单元中; (2) 把 DS:1000H 单元中的数据传送到AX 寄存器; (3) 把AX 寄存器的内容算术右移二位; (4) 再把AX 寄存器的内容除以DS:1002H 字节单元中的数; (5) 最后把商存入字节单元DS:1003H 中。 5.下面的程序段用来清除数据段中从偏移地址0010H 开始的12元的内容(即将零送到这些存储单元中去)。 (1) 将第4条比较指令语句填写完整(划线处)。 MOV SI ,0010H NEXT: MOV WORD PTR[SI],0 ADD SI ,2 CMP SI ,答案 22H (或者20H ) JNE NEXT HLT (2) 假定要按高地址到低地址的顺序进行清除操作(高地址从0020H 开始),则上述程序段应如何修改 上机验证以上两个程序段并检查存储单元的内容是否按要求进行了改变。 6. 输入并运行表中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。

《计算机组成原理》实验报告---8位算术逻辑运算实验

. '. 计算机专业类课程 实验报告 课程名称:计算机组成原理 学 院:信息与软件工程学院 专 业:软件工程 学生姓名: 学 号: 指导教师: 日 期: 2012 年 12 月 15 日

电子科技大学 实验报告 一、实验名称:8位算术逻辑运算实验 二、实验学时:2 三、实验内容、目的和实验原理: 实验目的: 1.掌握算术逻辑运算器单元ALU(74LS181)的工作原理。 2.掌握模型机运算器的数据传送通路组成原理。 3.验证74LS181的组合功能。 4.按给定数据,完成实验指导书中的算术/逻辑运算。 实验内容: 使用模型机运算器,置入两个数据DR1=35,DR2=48,改变运算器的功能设定,观察运算器的输出,记录到实验表格中,将实验结果对比分析,得出结论。 实验原理: 1.运算器由两片74LS181以并/串形式构成8位字长的ALU。

. '. 2.运算器的输出经过一个三态门(74LS245)和数据总线相连。 3.运算器的两个数据输入端分别由两个锁存器(74LS273)锁存。 4.锁存器的输入连至数据总线,数据开关(INPUT DEVICE)用来给 出参与运算的数据,并经过一三态门(74LS245)和数据总线相连。 5.数据显示灯(BUS UNIT)已和数据总线相连,用来显示数据总线内 容。 实验器材(设备、元器件):模型机运算器 四、实验步骤: 1. 仔细查看试验箱,按以下步骤连线 1)ALUBUS连EXJ3 2) ALU01连BUS1 3) SJ2连UJ2 4) 跳线器J23上T4连SD 5) LDDR1,LDDR2,ALUB,SWB四个跳线器拨在左边 6) AR跳线器拨在左边,同时开关AR拨在“1”电平 2. 核对线路,核对正确后接通电源 3. 用二进制数据开关KD0-KD7向DR1和DR2寄存器置入8位运算数据。

算术逻辑运算实验

实验报告 实验项目:算术逻辑运算实验(试验一) 课程名称:计算机组成原理 姓名:学号同组姓名:学号:实验位置(机号): 实验日期 实验1.掌握简单运算器的数据传送通路 目的2.验证运算器功能发生器(74LS181)的组合功能 3.验证带进为控制的算术运算器功能发生器(74LS181)的功能 4.按指定的数据完成几种制定的算术运算 5.验证移位控制的组合功能 实验YY-Z02计算机组成原理教学实验系统一台,排线若干。设备 实验 内容1.实验原理 (算 运算器实验原理图 法、 程 T4______ ALU-B 序、

_____ _____ 进位CyCn 步骤 299-B 判零_____ M 74LS2 电路CyNCn 和方 S0 99 ALU S1 法) (74LS181) S2 S3 _____I/O-RINPUT Ai =“0”B-DA1DA1 (74LS273)DA2

(74LS273)B-DA2 实验中所用的运算器数据通路图如图1-1所示,算术逻辑实验接线图如图1-2所示。图中所示的是由两片段74LS181芯片以并/串形式构成的8位字长的运算器。右方为低压4位运算芯片,左方为高4位运算芯片。低位芯片的进位输出端C(n+4)与高芯片的进位输入端CN相连,高位芯片的进位输出引至外部。两个芯片的控制端S0~S3和M各自相连。 2.实验步骤 1)算数逻辑运算 i.输入单元置数一 ii.设置I/O-R# = 0 iii.ALU-B# =1 iv.B-DA1 _| ̄|_将输入单元的输入数据存入DA1中 v.输入单元置数据二 vi.B-DA2 _| ̄|_将数据存入DA2中 vii.设置S 3 -------S 0、M、Cn根据要求按照定义操作设置完成运算viii. ix. x.I/O-R# = 1 ALU-B = 0运算结果送总线 IO-W ̄|_| ̄总线数据送显示单元显示 数据1.算数逻辑运算

计算机组成原理--实验二算术逻辑运算实验

实验二算术逻辑运算实验 一、实验目的 (1)了解运算器芯片(74LS181)的逻辑功能。 (2)掌握运算器数据的载入、读取方法,掌握运算器工作模式的设置。 (3)观察在不同工作模式下数据运算的规则。 二、实验原理 1.运算器芯片(74LS181)的逻辑功能 74LS181是一种数据宽度为4个二进制位的多功能运算器芯片,封装在壳中,封装形式如图2-3所示。 5V A1 B1 A2 B2 A3 B3 Cn4 F3 BO A0 S3 S2 S1 S0 Cn M F0 F1 F2 GND 图 2-3 74LS181封装图 主要引脚有: (1)A0—A3:第一组操作数据输入端。 (2)B0—B3:第二组操作数据输入端。 (3)F0—F3:操作结果数据输入端。 (4)F0—F3:操作功能控制端。 (5):低端进位接收端。

(6):高端进位输出端。 (7)M:算数/逻辑功能控制端。 芯片的逻辑功能见表2-1.从表中可以看到当控制端S0—S3为1001、M为0、 为1时,操作结果数据输出端F0—F3上的数据等于第一组操作数据输入端A0—A3上的数据加第二组操作数据输入端B0—B3上的数据。当S0—S3、M、 上控制信号电平不同时,74LS181芯片完成不同功能的逻辑运算操作或算数运算操作。在加法运算操作时,、进位信号低电平有效;减法运算操作时,、 借位信号高电平有效;而逻辑运算操作时,、进位信号无意义。 2.运算器实验逻辑电路 试验台运算器实验逻辑电路中,两片74LS181芯片构成一个长度为8位的运算器,两片74LS181分别作为第一操作数据寄存器和第二操作数据寄存器,一片74LS254作为操作结果数据输出缓冲器,逻辑结构如图2-4所示。途中算术运算操作时的进位Cy判别进位指示电路;判零Zi和零标志电路指示电路,将在实验三中使用。 第一操作数据由B-DA1(BUS TO DATA1)负脉冲控制信号送入名为DA1的第一操作数据寄存器,第二操作数据由B-DA2(BUS TO DATA2)负脉冲控制信号送入名为DA2的第二操作数据寄存器。74LS181的运算结果数据由(ALU TO BUS)低电平控制信号送总线。S0—S3、M芯片模式控制信号同时与两片74LS181的S0—S3、M端相连,保证二者以同一工作模式工作。实验电路的低端进位接收端Ci与低4位74LS181的相连,用于接收外部进位信号。低4为74LS181的与高4位74LS181的上相连,实现高、低4位之间进位信号的传递。高4位之间进位信号的传递。高4位74LS181的送进位Cy判别和进位指示电路。 表2-1 74LS181 芯片逻辑功能表

计算机组成原理实验报告 算术逻辑运算单元实验

西华大学数学与计算机学院实验报告 课程名称:计算机组成原理年级:2011级实验成绩: 指导教师:祝昌宇姓名:蒋俊 实验名称:算术逻辑运算单元实验学号:312011*********实验日期:2013-12-15 一、目的 1. 掌握简单运算器的数据传输方式 2. 掌握74LS181的功能和应用 二、实验原理 (1)ALU单元实验构成 1、结构试验箱上的算术逻辑运算单元上的运算器是由运算器由2片74LS181构成8字长的ALU 单元。 2、2片74LS373作为2个数据锁存器(DR1、DR2),8芯插座ALU-OUT作为数据输入端,可通过短8芯扁平电缆,把数据输入端连接到数据总线上。 3、运算器的数据输出由一片74LS244(输出缓冲器)来控制,8芯插座ALU-OUT作为数据输出端,可通过短8芯扁平电缆把数据输出端连接到数据总线上。 (2)ALU单元的工作原理 数据输入锁存器DR1的EDR1为低电平,并且D1CK有上升沿时,把来自数据总线上的数据打入锁存器DR1。同样,使EDR2为低电平,并且D2CK有上升沿时,把来自数据总线上的数据打入锁存器DR2。 算术逻辑运算单元的核心是由2片74LS181构成,它可以进行2个8位二进制数的算术逻辑运算,74LS181的各种工作方式可通过设置其控制信号来实现(S0、S1、S2、S3、M、CN)。当实验者正确设置了74LS181的各个控制信号,74LS181会运算数据锁存器DR1、DR2内的数据。由于DR1、DR2已经把数据锁存,只要74LS181的控制信号不变,那么74LS181的输出数据也不会发生改变。 输出缓冲器采用74LS244,当控制信号ALU-O为低电平时,74LS244导通,把74LS181的运算结果输出到数据总线;ALU-O为高电平时,74LS244的输出为高阻。

实验二 数组及其运算

实验二 数组及其运算 一、实验目的 1.熟练矩阵、数组的创建; 2. 熟悉Matlab 的基本矩阵操作,运算符和字符串处理; 3. 熟悉矩阵的逻辑运算和关系运算; 二、实验设备 1.方正电脑 2.MATLAB 软件 三、实验内容 1.在指令窗中输入:x=1:0.2:2和y=2:-0.2:1,观察所生成的数组。 x = 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000 y = 2.0000 1.8000 1.6000 1.4000 1.2000 1.0000 2.要求在[]π20上产生50个等距采样数据的一维数组,试用两种不同的指令实现。 X=linspace(0,2*pi,50) X=0:(2*pi)/49:(2*pi) 2.设x=-74o ,y=27 o ,22 的值。 x=-74/180*pi; y=27/180*pi; d=sin(x^2+y^2)/(sqrt(tan(abs(x+y)))+pi) d = 0.2273 3. 当a 取-3.0,-2.9,-2.8,…,2.8,2.9,3.0时,求0.3sin(0.3)a e a -+在各点的函 数值。 a=-3.0:0.1:3.0; y=exp(-0.3*a).*sin(a+0.3) Columns 1 through 10

-1.0512 -1.2305 -1.3863 -1.5184 -1.6267 -1.7116 -1.7734 -1.8129 -1.8309 -1.8285 Columns 11 through 20 -1.8069 -1.7675 -1.7117 -1.6411 -1.5572 -1.4617 -1.3564 -1.2428 -1.1228 -0.9978 Columns 21 through 30 -0.8696 -0.7397 -0.6095 -0.4804 -0.3538 -0.2308 -0.1126 0.0000 0.1060 0.2047 Columns 31 through 40 0.2955 0.3779 0.4515 0.5160 0.5714 0.6174 0.6543 0.6821 0.7010 0.7115 Columns 41 through 50 0.7138 0.7085 0.6959 0.6768 0.6516 0.6210 0.5856 0.5460 0.5030 0.4572 Columns 51 through 60 0.4093 0.3597 0.3093 0.2586 0.2080 0.1582 0.1097 0.0628 0.0180 -0.0245 Column 61 -0.0641 4. 已知 ??????=??????=5051 3501 ,05314320B A 求下列表达式的值: (1) A&B ans = 0 0 1 1 1 1 0 0 (2) A|B ans = 1 1 1 1 1 1 1 1 (3) ~A ans = 1 0 0 0 0 0 0 1 (4) A==B

实验2 Matlab的基本运算

实验1 Matlab 的基本运算(2) 实验目的: 1、 掌握建立矩阵的方法; 2、 掌握Matlab 各种表达式的书写规则以及常用函数的使用。 实验内容: 1. 设有矩阵A 和B A ????????=????????12345678910111213141516171819 202122232425 B ????-????=-????????30161769023497041311 (1)求它们的乘积C >> A=1:25; A=reshape(A,5,5); A=A'; B=[3,0,16;17,-6,9;0,23,-4;9,7,0;4,13,11]; C=A*B C = 93 150 77 258 335 237 423 520 397 588 705 557 753 890 717 (2)将矩阵C 的右下角?32子矩阵赋给D >> D=C(3:5,2:3) D = 520 397 705 557 890 717 (3)查看Matlab 工作空间的使用情况 2. 已知:矩阵...A -????-??=????-?? 2310077804145655325032695454314 完成下列操作: (1)取出A 的前3行构成矩阵B ,前两列构成矩阵C ,左下角3*2子矩阵构成矩阵D ,B 与C 的乘积构成矩阵E 。 A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; B=A(1:3,:) C=A(1:4,1:2) D=A(2:4,1:2) E=B*C B = 23.0000 10.0000 -0.7780 0

实验一基本算术运算

实基本算术运算 1. 实验目的 加、减、乘、除是数字信号处理中最基本的算术运算。DSP中提供了大量的指令来实现这些功能。本实验学习使用定点DSP实现16位定点加、减、乘、除运算的基本方法和变成技巧。 2. 实验原理 (1)定点DSP中数据表示方法 C54X是16位的定点DSP。一个16位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示20,D1位表示21,次高位(D14)表示214。如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。例如,07FFFH表示最大的正数32767(十进制),而0FFFFH表示最大的负数-1(负数用2的补码方式显示)。当需要表示小数时,小数点的位置始终在最高位后,而最高位(D15)表示符号位。这样次高位(D14)表示2-1,然后是2-2,最低位(D0)表示2-15。所以04000H表示小数0.5,01000H 表示小数2-3=0.125,而0001H表示16位定点DSP能表示的最小的小数(有符号)2-15=0.000030517578125。在后面的实验中,除非有特别说明,我们指的都是有符号数。在C54X中,将一个小数用16位定点格式来表示的方法是用215乘以该小数,然后取整。 从上面的分析可以看出,在DSP中一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。 (2)实现16定点加法

C54X中提供了多条用于加法的指令,如ADD,ADDC,ADDM和ADDS。其中ADDS 用于无符号数的加法运算,ADDC用于带进位的加法运算(如32位扩展精度加法),而ADDM专用于立即数的加法。 (3)实现16位定点减法 C54X中提供了多条用于减法的指令,如SUB,SUBB,SUBC和SUBS。其中SUBS用于无符号数的减法运算,SUBB用于带进位的减法运算(如32位扩展精度的减法),而SUBC为移位减,DSP中的除法就是用该指令来实现的。 (4)实现16定点整数乘法 在C54X中提供了大量的乘法运算指令,其结果都是32位,放在A或B寄存器中。乘数在C54X的乘法指令很灵活,可以是T寄存器、立即数、存贮单元和A或B寄存器的高16位。在C54X中,一般对数据的处理都当做有符号数,如果是无符号数乘时,请使用MPYU指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。 (5)实现16定点小数乘法 在C54X中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移一位。但注意整数乘法时不能这样处理,所以上面的实验一开始便将FRCT清除。两个小数(16位)相乘后结果为32位,如果精度允许的话,可以只存高16位,将低16位丢弃,这样仍可得到16位的结果。 (6)实现16定点整数除法 在C54X中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于除以常数特别适用。另一种方法是使用SUBC指令,重复16次减法完成除法运算。以temp1/temp2为例,其中变量temp1为被除数,temp2为除数,结果即商存放在变量temp3中。在完成整数除法时,先判断结果的符号。方法是将两数相乘,保存A或B的高16位以便判断结果的符号。然后只做两个正数的除法,最后修正结果的符号。为了实现两个数相除,先将被除数装

计算机组成原理实验二算术逻辑运算实验

计算机组成原理实验二 算术逻辑运算实验 SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

实验二算术逻辑运算实验 一、实验目的 (1)了解运算器芯片(74LS181)的逻辑功能。 (2)掌握运算器数据的载入、读取方法,掌握运算器工作模式的设置。 (3)观察在不同工作模式下数据运算的规则。 二、实验原理 1.运算器芯片(74LS181)的逻辑功能 74LS181是一种数据宽度为4个二进制位的多功能运算器芯片,封装在壳中,封装形式如图2-3所示。 图2-3 74LS181封装图 主要引脚有: (1)A0—A3:第一组操作数据输入端。 (2)B0—B3:第二组操作数据输入端。 (3)F0—F3:操作结果数据输入端。 (4)F0—F3:操作功能控制端。 ??????:低端进位接收端。 (5)CC (6)CC4:高端进位输出端。 (7)M:算数/逻辑功能控制端。 芯片的逻辑功能见表2-1.从表中可以看到当控制端S0—S3为1001、M为??????为1时,操作结果数据输出端F0—F3上的数据等于第一组操作数据输0、CC 入端A0—A3上的数据加第二组操作数据输入端B0—B3上的数据。当S0—S3、??????上控制信号电平不同时,74LS181芯片完成不同功能的逻辑运算操作或M、CC ??????、CC4进位信号低电平有效;减法运算数运算操作。在加法运算操作时,CC ??????、 算操作时,CC ??????、CC4借位信号高电平有效;而逻辑运算操作时,CC CC4进位信号无意义。 2.运算器实验逻辑电路 试验台运算器实验逻辑电路中,两片74LS181芯片构成一个长度为8位的运算器,两片74LS181分别作为第一操作数据寄存器和第二操作数据寄存器,一片74LS254作为操作结果数据输出缓冲器,逻辑结构如图2-4所示。途中算

实验二带进位控制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 , 并且不产生进位。

北理工-汇编-实验二-算术运算类操作实验

………………………………………………最新资料推荐……………………………………… 本科实验报告 实验名称:实验二算术运算类操作实验(基础与设计)课程名称:CPU与汇编实验实验时间: 任课教师:实验地点: 实验教师: 实验类型:□原理验证■综合设计□自主创新 学生姓名: 学号/班级:组号:无学院:信息与电子同组搭档:无专业:信息工程成绩:

一、实验要求和目的 1.了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式; 2.掌握各类运算类指令对各状态标志位的影响及测试方法; 3.熟悉汇编语言二进制多字节加减法基本指令的使用方法; 4.熟悉无符号数和有符号数乘法和除法指令的使用; 5.掌握符号位扩展指令的使用; 6.掌握BCD 码调整指令的使用方法。 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 1.加减法处理指令 2.乘除法指令和符号位扩展指令 3.BCD 码的调整指令 四、实验内容 (一)对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:

1.流程图 2.程序代码: DA TAS SEGMENT DA TAS ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START : MOV AX,DATAS MOV DS,AX MOV AX,0C2H MOV BX,5FH ADD AX,BX ;add MOV AX,0C2H MOV BX,5FH SUB AX,BX ;sub MOV AX,0C2H MOV BX,5FH MUL BX ;mul MOV AX,0C2H MOV BX,5FH DIV BX ;div MOV AH,4CH INT 21H CODES ENDS ENDSTART (将数据改变得到另一组输出结果) 3.实验结果 以第一组数的加法为例 (已将截图以上输入-t 进行debug 的步骤省略) 此时右下角信息(NV UP ……)代表标志寄存器的值。 4.结果分析: 由资料可得: 开始 结束 将两组数据分别存入AX ,BX 中,将二者中的数据相加,存入AX 中 将两组数据分别存入AX ,BX 中,用AX 中数据减去BX 中数据,存入AX 中 将两组数据分别存入AX ,BX 中,将二者中的数据相乘,存入AX 中 将两组数据分别存入AX , BX 中,用AX 中数据除以 BX 中数据,存入AX 中

相关主题
相关文档 最新文档