实验二算术运算实验

合集下载

实验二 算术运算

实验二  算术运算

汇编语言实验报告(二)班级: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的内部中断。

实验二运算器实验

实验二运算器实验

实验二运算器实验实验二运算器am2901实验该实验操作不需用到电脑,不需实现电脑和实验箱的连接,操作全部在实验箱上完成。

实验过程当中,必须认真展开,避免损毁设备,分析可能将碰到的各种现象,推论结果与否恰当,记录运转结果。

实验目的:1、深入细致介绍am2901运算芯片的功能、结构;2、深入细致介绍4片am2901的级联方式;3、深化运算器部件的组成、设计、控制与使用等知识。

教学计算机的运算器部件主体由4片4位的运算器芯片am2901彼此串联形成,它输入16位的数据运算的结果(用y则表示)和4个结果特征位(用cy,f=0000,over,f15则表示)。

它的输出(用d则表示)就可以源自于内部总线。

确定运算器运算的数据来源、运算功能、结果处置,需要使用控制器提供的i8~i0、b3~b0、a3~a0共17个信号。

运算器的输入轻易相连接至地址寄存器ar的输出插槽,用作提供更多地址总线的信息来源。

运算器的输入还经过两个8位的244器件的掌控(采用dc1译码器的ytoib#信号)被送至内部总线ib,用作把运算器中的数据或者运算结果载入内存储器或者输入输出USB芯片。

运算器产生的4个结果特征位的信息需要保存,为此设置一个4位的标志寄存器flag,用于保存这4个结果特征信息,标志寄存器的输出分别用c、z、v、s表示。

控制标志寄存器何时和如何接收送给它的信息,需要使用控制器提供的sst2~sst0三位信号。

运算器还须要按照指令继续执行的建议,正确地获得最高位的位次输出信号,最高位和最低位的移位输出信号,为此须要布局另一个shift的线路,在控制器提供更多的ssh和sci1~sci0三位信号的掌控下,产生运算器最高位的位次输出信号,最高位和最低位的移位输出信号。

相关器件:4片am2901(alu)两片ar(74ls374)一片flag(gal20v8)一片shift(gal20v8)2片244(alutoib,74ls244)2个12位微动开关(红色)3个手动掌控信号内存芯片(hand,74ls240)am2901芯片的结构和功能:参考教材附录部分芯片具体内容线路表明:1、芯片输出受oe#信号控制,仅当其为低电平时,才有y值正常逻辑信号输出,否则输出为高阻态。

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

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

实验二算术逻辑运算及移位操作一.实验任务1.实验程序段及结果表格如表:分析:程序段1:MOV AX, 1018H ;AX←1018HMOV SI, 230AH ;SI←230AHADD AX, SI ;AX=3322H,低8位为00100010B,1的个数;为偶数,PF=1,同时D3向D4有进位发生,AF=1 ADD AL, 30H ;AX=3352H,低8位1个个数为奇数,PF=0 MOV DX, 3FFH ;DX←3FFHADD AX,BX ;AX=3352H,MOV [20H], 1000H ;[20H]←1000HADD [20H], AX ;[20H]=4352HPUSH AX ;POP BX ;BX=3352H程序段2:MOV AX, 0A0AH ;AX←0A0AHADD AX, 0FFFFH ;AX=0A09H,最高位进位CF=1,低8位1的;个数为偶数PF=1;D3向D4进位AF=1 MOV CX, 0FF00H ;CX←0FF00HADC AX, CX ;AX=090AH,最高位进位CF=1,低8位1的个;数为偶数PF=1SUB AX, AX ;AX=0,运算结果为零ZF=1INC AX ;AX=1HOR CX, 0FFH ;CX=0FFFFH,最高位为1,ZF=1,低8位1的;个数为偶数PF=1AND CX, 0F0FH ;CX=0F0FH,低8位1的个数为偶数PF=1MOV [10H], CX ;[10H]←0F0FH程序段3:MOV BL, 25H ;BL←25HMOV BYTE PTR[10H], 4 ;[10H]←04HMOV AL, [10H] ;AL←04HMUL BL ;AL=94H程序段4:MOV WORD PTR[10H],80H ;[10H]←0080HMOV BL, 4 ;BL←04HMOV AX, [10H] ;AX←0080HDIV BL ;AX=0020H程序段5:MOV AX, 0 ;AX←0000HDEC AX ;AX=0FFFFH,最高位为1,SF=1,低8;位1的个数为偶数PF=1,最高位向前、;D3向D4有借位,CF=1,AF=1 ADD AX, 3FFFH ;AX=3FFEH,D3向D4有进位,AF=1 ADD AX, AX ;AX=7FFCH,低8位1的个数为偶数,PF=1;D3向D4有进位,AF=1NOT AX ;AX=8003HSUB AX, 3 ;AX=8000H,低8位1的个数为偶数,PF=1;最高位为1,SF=1OR AX, 0FBFDH ;AX=0FBFDH,最高位为1,SF=1AND AX, 0AFCFH ;AX=0ABCDH,最高位为1,SF=1SHL AX,1 ;AX=579AH,低8位1的个数为偶数,PF=1,;算数结果溢出OF=1,最高位进位CF=1 RCL AX,1 ;AX=0AF35H,低8位1的个数为偶数,;PF=1,算数结果溢出OF=12.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。

北理大学计算机实验基础 实验二 实验报告表答案精编版

北理大学计算机实验基础 实验二 实验报告表答案精编版

实验二实验报告表
实验名称:
学号姓名:班级:实验时间:
实验报告表2-1 数值型数据在计算机中的二进制实验记录表
说明:本实验对计算机内存数据的存放拟定为:①整数用两个字节存储,并负数只考虑原码;②实数用4个字节存储,其中阶码部分占一个字节。

实验报告表2-2 其他进制数据与二进制转化实验记录表
实验报告表2-3 数据的原码、补码和反码表示实验记录表
实验报告表2-4 二进制算术运算实验记录表
实验报告表2-5溢出实验记录表
实验报告表2-6浮点数的小数点浮动实验记录表
实验报考表2-7 表示浮点数的二进制串中阶码位数改变实验记录表。

《计算机组成原理》实验1寄存器试验,2运算器试验

《计算机组成原理》实验1寄存器试验,2运算器试验

实验指导书课程:计算机组成原理实验教师:班级:第一章系统概述1.1 实验系统组成第二章基础模块实验实验一寄存器实验实验目的:熟悉试验仪各部分功能。

掌握寄存器结构、工作原理及其控制方法。

实验内容:利用实验仪开关区上的开关sk23-sk16提供数据,其它开关做为控制信号,将数据通过DBUS写入OUT 寄存器,并将OUT寄存器的内容送往扩展区通过数码管和发光二极管显示。

实验原理:实验箱用74HC273 来构成寄存器。

(1)74HC273的功能如下:(2)实验箱中74HC273的连接方式:(3)实验逻辑框图12、打开实验仪电源,按CON单元的nRST按键,系统复位;如果EXEC键上方指示灯不亮,请按一次EXEC键,点亮指示灯,表示实验仪在运行状态。

3、利用开关和控制信号将数据通过DBUS写入OUT寄存器,并将OUT寄存器的内容送往扩展区通过数码管和发光二极管显示。

并写出将数据5FH写入OUT寄存器的操作过程。

实验二运算器实验实验目的:了解运算器的组成结构;掌握运算器的工作原理和控制方法。

实验内容:利用实验仪提供的运算器,通过开关提供数据信号,将数据写入寄存器A和寄存器B,并用开关控制ALU的运算方式,验证运算器的功能。

实验原理:(1)实验逻辑框图:信号说明:IN0~IN7:ALU数据输入信号ALU_D0~ALU_D7:ALU数据输出信号:寄存器A写信号,低电平有效。

当T1节拍信号到来,该信号有效时,IN0~IN7数据可以写入寄存器A。

:寄存器B写信号,低电平有效。

当T2节拍信号到来,该信号有效时,IN0~IN7数据可以写入寄存器B。

:ALU计算结果读出信号,当T3节拍信号到来,该信号有效时,ALU计算结果送往ALU_D0~ALU_D7。

S3~S0,CN_I:ALU运算控制信号,控制ALU的运算方法。

T1,T2,T3:三个节拍信号,高电平有效,由con区的uSTEP按键控制,在运行状态时,依次按下uSTEP 键会依次发出T1、T2、T3节拍。

实验二:算术逻辑运算和移位运算

实验二:算术逻辑运算和移位运算

西安交通大学实验报告
课程名称:微机原理与接口技术实验名称数据传送
班级:机械36班姓名:申湾舟学号:2130101125
实验日期:2015年9 月29日教师审阅签字:1.实验目的
(1)熟悉算数逻辑运算指令和移位指令的功能;
(2)了解标志寄存器中各个标志位的意义以及指令执行对它的影响。

2.实验内容
(1)标志位改变规律;
(2)简单存储和计算;
(3)写出规定功能的程序1;
(4)写出规定功能的程序2;
(5)补全规定功能的程序;
(6)清除操作;
(7)执行已知程序;
(8)实验结果分析。

3.实验工具
操作系统:windows7;实验平台:调试工具TD.EXE。

4.实验步骤与结果
(1)标志位改变规律;
在TD.EXE中输入程序段并且单步运行,观察标志位变化。

(2)简单存储和计算;
(3)写出规定功能的程序1;
(4)写出规定功能的程序2;
(5)补全规定功能的程序;
(6)清除操作;
(7)执行已知程序;
(8)实验结果分析。

五、实验小结
Page2 of 7。

实验二 运算器实验

实验二  运算器实验

表2-4 最低进位Cin控制信号SCI SCI 0 0 1 1 0 1 0 1 Cin 0 1 C TCLK2 方波 典型指令 ADD、DEC INC、SUB ADC、SBB 本实验中不使用
表2-5 移位状态控制信号SSH SSH 0 0 1 1 0 1 0 1 左移 RAM0 0 C Q3 * Q0 * * F3 * 右移 RAM3 0 C CY F3⊕OV Q3 * * RAM0 RAM0 说明 补 0(逻辑左右移) 带进位移(循环移位) 带 Q 同时移位(乘除时) 补码右移
实验原理
图 2-1
Am2901 的数据通路
1、运算器数据通路
TEC-XP 教学机的运算器主要采用 4 片 Am2901 芯片级联组成,每片 Am2901 芯片实现 4 位运算,4 片芯片级联成 16 位的运算器。 Am2901 芯片的组成包括:1 个 4 位的算术逻辑单元 ALU、16 个 4 位的通用寄存器、1 个 4 位的乘商寄存器 Q 和若干个多路选择开关。Am2901 的数据通路如图 2-1 所示。 (1)算术逻辑单元 ALU ALU 有两个数据输入端 R 和 S。 R 端的数据来源有三个——寄存器 A、 数据线 D、 数值 0; S 端的数据来源有四个——寄存器 A、寄存器 B、乘商寄存器 Q、数值 0。在 RS 的各种组合 中除去没有意义的和重复的,只有 8 种有效的组合。ALU 的数据来源由控制信号 I2I1I0 决 定,其控制方式如表 2-1 所示。 ALU 可完成两个操作数的加、减、与、或、异或等多种操作,操作类型的控制有控制信 号 I5I4I3 决定,其控制方式如表 2-2 所示。ALU 若要实现乘除等其他运算,可使用串行算法 来完成。 ALU 的输出结果可保存到通用寄存器、乘商寄存器 Q,并且可以将其值乘除 2 之后再保 存,该过程控制由 I8I7I6 和 SSH 控制,其控制方式如表 2-3、表 2-5 所示。 ALU 根据其运算的结果会产生 4 个标志位——符号标志位 F3、零标志位 F=0、溢出标志 位 OVR 和进位标志位 Cn+4。ALU 运算后标志位设置可有多种不同的方式,其设置控制由 SST 控制信号决定,其控制方式如表 2-6 所示。 (2)通用寄存器组 Am2901 中的通用寄存器组是由 16 个寄存器构成, 具有双端口读写电路。 可以通过 A 口、 B 口输入的地址(4 位地址)选择寄存器,将其值送入 A、B 锁存器。其中 A 口地址指定的寄 存器是只读的,B 口地址指定的寄存器是可读写的。 A、 B 锁存器可作为 ALU 的输入数据, ALU 输出的结果值也可以保存到 B 口指定的寄存器 中,而且在写寄存器时,可以通过通用寄存器组入口处的三选一多路开关,选择写入 ALU 结果值,或其左移(乘 2) 、右移(除 2)之后的结果。 (3)乘商寄存器 乘商寄存器 Q 是为配合 ALU 的乘除运算而设置的。该寄存器输入端有三选一多路开关, 可选择 ALU 输出结果、 或乘商寄存器 Q 本身的内容作为其输入数据, 同时还可以将这两个输 入值左移(乘 2) 、右移(除 2)之后,再送入 Q 中。 (4)最低进位信号 Cin Am2901 的基本运算是加法电路, 其减法功能的实现是通过对减数求补而完成的。 因此, 在 ALU 运算时, 应使用 SCI 控制位设置最低进位信号 Cin 的状态, 具体控制方式见表 2-4。

计算机组成原理实验二

计算机组成原理实验二

Vcc
右移门
4.ALU左移输出原理图
数据输出选择器输出信号L_OE
左移门
当CN=1 Cy 移入DBUS0 当CN=0 0 移入DBUS0
二. 实验任务
1. 计算37H+56H后左移一位的值送OUT 输出。 2. 把36H取反后同54H相与的值送入R1 寄存器。
三. 实验过程举例(1)
例:实验任务:输出ACH-BDH的值(用外部输入门IN进行数据输入) 1. 实验箱没有一条微命令能完成这个操作任务。所以要考虑一个微命令序 列——微程序来完成任务。故先把任务分解成有微命令对应的基本操作,并有序 排列这些基本操作。 2. 选择基本操作:由背景知识1,可以选用“A-W”微命令;这要求先把值 ACH送入寄存器A,值BDH送入寄存器W;题意没有要求对运算结果做进一步处 理,所以直通门D中保存的值是计算结果;把D的值送OUT寄存器输出。
控制电键
k9
k8
k7Leabharlann k6k4k3k2
k1
k0
被控对象
OUTEN
X2 X1 X0
S2
S1
S0
WEN
AEN
三. 实验过程举例(2)
第三步、实验:
① 注视仪器,打开电源,手不要远离电源开关,随时准备关闭电源, 注意各数码管、发光管的稳定性,静待10秒,确信仪器稳定、无焦糊味。
② 设置实验箱进入手动模式。 ③ ACH送入寄存器A。X2x1x0(k8k7k6)=000,AEN(k0)=0, k23-k16=10101100 按下STEP键数值打入A寄存器。 ④ BDH送入寄存器W。方法同上。 ⑤ 计算A-W:按“运算器选择表”置:k4k3k2=001;
计算机组成原理实验课程
实验二 运算器实验

实验二 数据类型与运算符实验报告

实验二   数据类型与运算符实验报告

XXX大学软件类实验报告
课程名称:C语言程序设计学号:
姓名:
班级:
指导教师:
开课学期:
学院:
XXX大学教务处
3.变量初始化与变量赋值。

四、实验过程及内容:(运行结果请抓图到对应题目的下方)
1.输入下列源程序,进行修改、编译、连接和运行。

2.分析下面的程序并上机验证运行结果。

实验结果:
3.分析下面的程序并上机验证运行结果。

实验结果:
4.分析下面的程序并上机验证、修正后使程序结果和要求一致,a,b,c分别为x的百位、十位和个位。

5.分析下面的程序并上机验证运行结果。

实验结果:
6.程序填空题。

从键盘输入3个整数a、b、c,把b中的值赋给a,把c中的值赋给b,把a的值赋给c,再输出a、b、c的值,要求程序运行结果。

(提示:使用中间变量)。

五、实验小结。

实验二_数据类型、运算符及表达式

实验二_数据类型、运算符及表达式

实验二数据类型、运算符及表达式(4学时)【实验前做的操作】在本人所用计算机的逻辑盘(如D:盘或E:盘)上建立一个以本人姓名为名称的文件夹,然后在此父文件夹下建立子文件夹,名称为“实验二”,用来零时存放实验二需要上交的有关文件。

【实验目的】1、进一步熟悉C程序的集成开发环境 Visual C++。

2、掌握C语言数据类型的概念,熟悉如何定义整型、字符型、实型变量。

3、学会使用C语言的有关算术运算符,能正确地运用它们构成表达式。

4、掌握不同类型数据运算时数据类型的转换规则。

5、了解表达式语句,尤其是赋值语句。

6、熟练掌握利用VC++运行C程序的基本步骤,包括编辑、编译、连接和运行。

7、进一步了解C语言程序的基本框架及结构特点。

8、掌握简单C程序的查错方法。

9、尝试编写简单的C程序。

【实验内容】编程及调试实例2-1:求华氏温度100°F对应的摄氏温度。

计算公式:C=(5/9)(F-32),式中:C表示摄氏温度,F表示华氏温度。

源程序(有错误的程序)#include <stdoi.h>void main( ){intcelsius; fahr;fahr = 100;celsius = 5 * (fahr - 32) / 9;printf("fahr = d, celsius = %d\n", fahr, celsius);}运行结果(改正错误后程序的运行结果)f ahr = 100, celsius = 37(1)按照实验一中介绍的步骤,输入源程序并保存。

(2)实验一中我们使用菜单完成编译、连接和运行,现在介绍工具栏的使用方法。

在工具栏或菜单栏上单击鼠标右键,出现如图2.1所示的整个工具箱,在编译工具条前打上一个“√”,该工具条就显示出来了(如图2.2所示)。

图2.2中,第一个按钮“Compile ”或“Ctrl+F7”表示编译,第二个按钮“Build ”或“F7”表示构件,第四个按钮“Build Execute ”或“Ctrl+F5”表示运行。

实验二 算术运算实验

实验二 算术运算实验

实验二算术运算实验一、实验目的1、掌握MASMforWindows环境下的汇编语言编程环境使用;2、掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;3、掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志位的影响及测试方法;4、掌握无符号数和有符号数运算区别及编程方法;5、掌握BCD码调整指令的使用方法二、软硬件实验环境1、硬件环境:惠普64位一体化计算机及局域网;2、软件环境:windows8,红蜘蛛管理系统,MASMforWindows。

三、实验基本原理算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。

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)对于表格中三组无符号数,试编程求这三组数的指定运算结果,并考虑计算结果对标志寄存器中状态标志位的影响:①实验分析本实验要求简单,仅对指定三组数进行基本运算。

算术逻辑运算实验报告

算术逻辑运算实验报告

置入暂存器B中,暂存器B的值通过ALU单元的B7…B0八位LED灯显示。

(6) 改变运算器的功能设置,观察运算器的输出。

置ALU_B=0、LDA=0、LDB=0,然后按表1-1-1置S3、S2、S1、S0和Cn的数值,并观察数据总线LED显示灯显示的结果。

如置S3、S2、S1、S0为0010,运算器作逻辑与运算,置S3、S2、S1、S0为1001,运算器作加法运算。

如果实验箱和PC联机操作,则可通过软件中的数据通路图来观测实验结果(软件使用说明请看附录一),方法是:打开软件,选择联机软件的“【实验】—【运算器实验】”,打开运算器实验的数据通路图,如图1-1-6所示。

进行上面的手动操作,每按动一次ST按钮,数据通路图会有数据的流动,反映当前运算器所做的操作,或在软件中选择“【调试】—【单节拍】”,其作用相当于将时序单元的状态开关KK2置为‘单拍’档后按动了一次ST按钮,数据通路图也会反映当前运算器所做的操作。

重复上述操作,并完成表1-1-2。

然后改变A、B的值,验证FC、FZ的锁存功能。

图1-1-6 数据通路图
五、实验结果及分析
在CON单元的SD27…SD20数据开关中输入01100101,置LDA=1,LDB=0,连续按动时序单元的ST按钮,将二进制数01100101置入暂存器A中。

在CON单元的SD27…SD20数据开关中输入10100111,置LDA=0,LDB=1,连续按动时序单元的ST按钮,将二进制数10100111置入暂存器B中。

置ALU_B=0、LDA=0、LDB=0,置S3、S2、S1、S0为0010,运算器作逻辑与运算。

北理大学计算机实验基础-实验二-实验报告表答案

北理大学计算机实验基础-实验二-实验报告表答案

实验二实验报告表
实验名称:
学号姓名:班级:实验时间:
实验报告表2-1 数值型数据在计算机中的二进制实验记录表
说明:本实验对计算机内存数据的存放拟定为:①整数用两个字节存储,并负数只考虑原码;②实数用4个字节存储,其中阶码部分占一个字节。

!
实验报告表2-2 其他进制数据与二进制转化实验记录表
实验报告表2-3 数据的原码、补码和反码表示实验记录表
,
实验报告表2-4 二进制算术运算实验记录表
实验报告表2-5溢出实验记录表
|
实验报告表2-6浮点数的小数点浮动实验记录表
实验报考表2-7 表示浮点数的二进制串中阶码位数改变实验记录表。

实验二16位算术逻辑运算实验

实验二16位算术逻辑运算实验

实验三16位算术逻辑运算实验一、实验目的1、掌握16位运算器的数据传送通路组成原理。

2、进一步验证算术逻辑运算功能发生器74LS181的组合功能。

3、按要求和给出的数据完成几种指定的算术逻辑运算。

二、实验内容1、实验原理16位运算器数据通路如图2-1所示,其中运算器由四片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显示。

2、实验接线本实验需用到6个主要模块:①低8位运算器模块;②数据输入并显示模块;③数据总线显示模块;④功能开关模块(借用微地址输入模块);⑤高8位运算器模;,⑥高8位(扩展)数据总线显示模块。

根据实验原理详细接线如下(接线①~⑤同实验一):①ALUBUS连EXJ3;②ALUO1连BUS1;③SJ2连UJ2;④跳线器J23上T4连SD;⑤LDDR1、LDDR2、ALUB、SWB四个跳线器拨至左侧(手动方式);⑥AR跳线器拨至左侧,同时开关AR拨至“1”电平;⑦ALUBUS`连EXJ2;⑧ALUO1`连KBUS1;⑨跳线器J19、J25拨至左侧(16位ALU状态);⑩高8位运算器区跳线器ZI2、CN0、CN4连上短路套。

实验二-算术逻辑单元实验

实验二-算术逻辑单元实验

实验二算术逻辑单元(ALU)的设计与实现实验目的1.认识算术逻辑单元的功能及意义2.掌握算术逻辑单元的结构与实现3.进一步熟练Modelsim、Vivado软件和Verilog硬件描述语言的使用4.理解Digilent N4 DDR FPGA开发板上数码管显示原理实验原理1.ALU算术逻辑单元(Arithmetic/Logic Unit , ALU)是现代计算机的核心部件之一。

其内部由算术和逻辑操作部件组合而成,可以实现整数加、减等算术运算和与、或等逻辑运算。

一个典型的算术逻辑单元由两路N位输入、一路N位输出、一组功能选择信号和一些标志位(flag)组成。

两路N位输入数据作为参与运算的两个操作数,输入到ALU中,通过改变功能选择信号,控制ALU对两操作数进行不同的算术或逻辑运算操作,并将N位的结果输出,与结果一同输出的还有运算产生的标志位,例如运算结果为零的标记信号Z(zero)与运算结果溢出的标记信号O(over)、进位标志C(CY)、符号位S(SF)等,如图2-1所示。

图2- 1ALU模块示意图在本次实验中,我们把输入和输出的数据长度定为4位,数据输入命名为A、B,数据输出为F,功能控制信号输入为opcode,进位输入为C n,只产生结果为零的zero标志位。

功能控制信号opcode的定义如表2-1所示。

例如:opcode=0001,运算器实现加法运算。

2.数码管显示关于N4 DDR开发板上数码管的显示原理,参见前面的实验准备部分内容。

实验内容1.基础实验。

用实验调试软件验证ALU的功能,并操作分析、记录结果。

图2- 2 ALU虚拟实验示意图(1)运算功能和控制信号①输入输出对于的开关指示灯分配如下:输入信号A:SW(4-7) B:SW(3-0) Cn:SW8 opcode:SW(12-9)输出信号F:LD(12-15) 标志位S :LD(3) Z LD(2) O: LD(1) C: LD(0)②各种运算对应的控制信号及功能,如下表。

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

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

实验二算术逻辑运算及移位操作一、实验目的1.熟悉算术逻辑运算指令和移位指令的功能。

2.了解标志寄存器各标志位的意义和指令执行对它的影响。

二、实验要求1.复习8086指令系统中的算术逻辑类指令和移位指令。

2.按照题目要求在实验前编写好实验中的程序段。

三、实验内容与步骤1. 实验程序段及结果表格如下2.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。

写出完成此功能的程序段并上机验证结果。

MOV BX,0010HMOV [BX],10HMOV [0001H][BX],04HMOV [0002H][BX],30HMOV AL,[BX]ADD AL,[0001H][BX]ADD AL,[0002H][BX]MOV [0003H][BX],ALMOV AL,BLMUL [0001H][BX]MUL [0002H][BX]MOV [0004H][BX],AX3.写出完成下述功能的程序段。

上机验证你写出的程序段,程序运行的最后结果(AX)=0372(1) 传送15H到AL寄存器; MOV AL,15H(2) 再将AL的内容乘以2;(3) 接着传送15H到BL寄存器; MOV BL,15H(4) 最后把AL的内容乘以BL的内容。

MUL BL(AX)=03724.写出完成下述功能的程序段。

上机验证你写出的程序段,程序运行后的商=73(1) 传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;(2) 把DS:1000H单元中的数据传送到AX寄存器;(3) 把AX寄存器的内容算术右移二位;(4) 再把AX寄存器的内容除以DS:1002H字节单元中的数;(5) 最后把商存入字节单元DS:1003H中。

MOV [1000H],2058HMOV [1002H],12HMOV AX,[1000H]MOV CL,2SAR AX,CLDIV [1002H]MOV [1003H],ALRET四、实验心得与体会在上节课实验的基础上,这次的实验比较顺利,感觉到了微机实验的魅力,对实验产生了浓厚的兴趣。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二算术运算实验一、实验目的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.在进行加法和乘法运算时,会出现对高位的进位扩展。

因此,在记录结果的时候不能仅仅记录低2位(十六进制)的结果,应记录包含高位的完整结果;2.在使用MUL和DIV命令时,语句的写法与ADD和SUB有区别;3.除法运算既可得到商,也可得到余数,余数存在DL中;4.查看结果时以三个语句为一次运算,输入三个T命令后的结果才是此次运算的结果。

②流程图③程序样例1、DA TAS SEGMENT;此处输入数据段代码BUF1 DB 0ABH,64H,0A2HBUF2 DB 78H,5AH,3FHBUF3 DB 10 DUP(?)DA TAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,2Q1:MOV AH,0HMOV AL,BUF1[SI]MOV BL,ALMOV AL,BUF2[SI]ADD AX,BX ;进行运算MOV BUF3[SI],ALADD SI,1HDEC CXJNZ Q1 ;跳转再做一次第二组数的加法运算MOV AX,4CHINT 21HCODES ENDSEND START2、STACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,2Q1:MOV AH,0HMOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]SUB AX,BXMOV BUF3[SI],ALADD SI,1H ;do the operationDEC CXJNZ Q1 ;do it again with the second group of numbersMOV AX,4CHINT 21HCODES ENDSEND START3、DATAS SEGMENT;此处输入数据段代码BUF1 DB 0ABH,64H,0A2HBUF2 DB 78H,5AH,3FHBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,2MOV CX,1Q1:MOV AH,0HMOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]DIV BXMOV BUF3[SI],ALADD SI,1H ;do the operationDEC CXJNZ Q1 ;do it again with the second group of numbers MOV AX,4CHINT 21HCODES ENDSEND START④实验结果0ABH+78H64H+5AH0ABH-78H64H-5AH0A2H*3FH0A2H/3FH2) 在数据段定义了两个多精度的有符号16进制数,BUF1和BUF2。

求两数的和与差,并将计算值存放在BUF2为首地址的缓冲区中;同时将两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在BUF2为首地址的缓冲区中。

试编程实现上述运算。

BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52H①实验分析本实验的思想是把这个两个多精度数进行按精度(每两位)进行运算,考虑进位与借位,每种运算都可以使用循环和带进位加法,或循环和带进位减法进行实现。

对于十进制数运算的要求,再辅以DAA和DAS两种十进制调整命令,将结果变为BCD码即可。

本实验中需要注意的有以下几点:1.本实验要求就过存入以BUF2为首地址的缓冲区。

为在运算时保护BUF2的数据,需定义另一个存储空间来存储和BUF2一样的数据;2.在进行不同运算的间隙应当进行清除进位标志的操作,即使用CLC命令,避免上一运算的进位影响下一位运算的结果;3.DAA和DAS都只能对AL里的结果转换为压缩BCD码,因此十进制加减结果必须存入AL里,且转换为压缩BCD码的结果要靠读取AL来获得。

②程序流程图③程序样例1、DATAS SEGMENT;此处输入数据段代码BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,4MOV AH,00HQ1:MOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]ADC AL,BLMOV BUF2[SI],ALINC SIDEC CXJNZ Q1MOV AX,4CHINT 21HCODES ENDSEND START2、DATAS SEGMENT;此处输入数据段代码BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,4MOV AH,00HQ1:MOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]SBB AL,BLMOV BUF2[SI],ALINC SIDEC CXJNZ Q1MOV AX,4CHINT 21HCODES ENDSEND START3、DATAS SEGMENT;此处输入数据段代码BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,4MOV AH,00HQ1:MOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]ADC AL,BLDAAMOV BUF2[SI],ALINC SIDEC CXJNZ Q1MOV AX,4CHINT 21HCODES ENDSEND START4、DATAS SEGMENT;此处输入数据段代码BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,4MOV AH,00HQ1:MOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]SBB AL,BLDAAMOV BUF2[SI],ALINC SIDEC CXJNZ Q1MOV AX,4CHINT 21HCODES ENDSEND START④实验结果3) 编程计算280*584/190,运算结果用十六进制表示。

要求上式计算结果的商存入AX,余数存入DX寄存器。

①实验分析本实验要求很简单,可用基本运算直接完成。

值得注意的就是最后进行除法运算时,DIV命令的执行结果自动将商存在AX中,余数存于DX中,可直接满足实验要求,故无需多余操作。

相关文档
最新文档