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

算术逻辑运算实验总结一、引言在现代社会中,算术逻辑运算是一项基本且必不可少的能力。
它们不仅在日常生活中起着重要作用,也广泛应用于各个领域的科学和工程。
为了提高算术逻辑运算的能力,我进行了几项实验,并总结了一些重要的经验和教训。
二、实验一:基本算术运算在这个实验中,我进行了一系列的基本算术运算,如加法、减法、乘法和除法。
通过这些运算,我更加熟悉了数字和运算的关系,并且提高了我的计算速度和准确性。
通过这个实验,我发现了一些有趣的现象。
首先,我发现加法和减法是最简单的运算,因为它们只涉及到数字的简单相加或相减。
而乘法和除法则需要更多的思考和推理,因为它们涉及到数字的相对大小和关系。
除此之外,在进行算术运算时,我还体会到了一些技巧和方法。
例如,在进行长数列的相加时,可以将它们分成多个小段,然后分别相加,最后再将结果相加。
这样可以降低错误的可能性,同时提高计算的效率。
三、实验二:逻辑运算逻辑运算是另一种重要的运算方式。
在这个实验中,我学习了逻辑运算的基本原理和方法,并进行了一些实际的应用。
首先,我学习了与运算、或运算和非运算的基本规则。
通过这些规则,我可以判断一个命题的真假,或者从若干个命题中得出一个新的结论。
这是在科学和工程中经常用到的一种思维方式。
其次,我了解了逻辑运算在算法设计和编程中的重要性。
在编写程序时,逻辑运算用于判断条件和控制程序的流程。
通过合理地使用逻辑运算,可以使程序更加高效和精确。
实验中,我发现了一些常见的逻辑谬误。
例如,德摩根定律的错误应用会导致逻辑矛盾和错误的结果。
因此,在进行逻辑运算时,我要特别注意各种规则和定律的正确使用。
四、实验三:复杂算术逻辑运算在这个实验中,我尝试了一些更加复杂的算术逻辑运算,如平方根运算、对数运算和三角函数运算。
通过这些运算,我更深入地了解了数学的奥秘和复杂性。
在进行这些运算时,我遇到了一些困难和挑战。
首先,一些运算需要使用特殊的方法和技巧,我要仔细学习和掌握这些技术。
实验2 算术与逻辑运算指令实验

实验2 算术与逻辑运算指令实验一、实验目的1. 学习算术与逻辑运算的原理及指令的用法;2. 进一步学习emu8086调试程序的用法,并学会emu8086下编写简单应用程序的方法;3. 掌握BCD码加、减法以及ASCII码加减法。
二、实验内容1. 用emu8086执行各加减法指令以及不同编码方式的运算方法,记录执行结果,进行分析、比较,掌握各功能类似的指令之间的差别。
2. 用emu8086编写一个COM文件,其功能是检查自身的长度以及代码检查和。
如果自身的长度改变或检查和改变,则显示“VIRUS”,否则显示“OK”。
三、实验步骤(一) 加法、减法以及逻辑运算指令练习1. 启动emu8086;2. 用单步按钮命令调试以下程序段(分号后注释部分不用输入);-Axxxx:0100 XOR AX,AX ;AX= , C=____, Z=____xxxx:0102 MOV AX,89AB ;AX= , C=____, Z=____xxxx:0105 MOV BX,AX ;BX=xxxx:0107 INC AX ;AX= , C=____, Z=____xxxx:0108 DEC AX ;AX= , C=____, Z=____xxxx:0109 ADD AX,SI ;AX= , C=____, Z=____xxxx:010B SUB AX,SI ;AX= , C=____, Z=____xxxx:010D ADC AX,SI ;AX= , C=____, Z=____xxxx:010F SBB AX,SI ;AX= , C=____, Z=____xxxx:0111 NOPxxxx:0112 MOV AX,0808xxxx:0115 MOV BX,0080xxxx:0118 MOV CX,0880 ;CX=___________xxxx:011B OR AX,BX ;AX=___________ , C=____, OV=____xxxx:011D MOV AX,0808 ;AX=___________, BX=___________xxxx:0120 AND AX,CX ;AX=___________, C=____, S=____xxxx:0122 MOV AX,0808 ;AX=___________, CX=___________xxxx:0125 XOR AX,BX ;AX=___________, BX=___________xxxx:0127 NOT AX ;AX=___________xxxx:0129 NEG AX ;AX=___________xxxx:012B3. 分析上述程序段,用铅笔填写指令依次执行后寄存器和标志位的值,观察它们的变化。
计算机组成原理--实验二 算术逻辑运算实验

实验二算术逻辑运算实验一、实验目的(1)了解运算器芯片(74LS181)的逻辑功能。
(2)掌握运算器数据的载入、读取方法,掌握运算器工作模式的设置。
(3)观察在不同工作模式下数据运算的规则。
二、实验原理1.运算器芯片(74LS181)的逻辑功能74LS181是一种数据宽度为4个二进制位的多功能运算器芯片,封装在壳中,封装形式如图2-3所示。
图2-374LS181封装图主要引脚有:(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(BUSTODATA1)负脉冲控制信号送入名为DA1的第一操作数据寄存器,第二操作数据由B-DA2(BUSTODATA2)负脉冲控制信号送入名为DA2的第二操作数据寄存器。
74LS181的运算结果数据由(ALUTOBUS)低电平控制信号送总线。
移位运算实验

0
1
0
0
0
1
0
1
0
0
1
0
0
0
1
1
9
计 算 机 组 成 原 理 实 验
六.思考题
算出若置数10101010,进位分别为1或0时, 执行3次不带进位左移和3次带进位左移的 结果。并和实验所得结果进行比较验证。
10
计 算 机 组 成 原 理 实 验
计算机组成原理
实验一运算器实验
2、移位运算实验
计 算 机 组 成 原 理 实 验
1、算术逻辑运算实验
一、实验目的:
验证移位控制的组合功能。
2
计 算 机 组 成 原 理 实 验
2、移位运算实验
二、实验原理
使用了一片74LS299作为移位发生器,其八输入/输 出端以排针方式和总线单元连接。299—B信号控制 其使能端,T4时序为其时钟脉冲,实验时将“W/R UNIT”中的T4接至“STATE UNIT”中的KK2单脉冲发 生器,由S0、S1、M控制信号控制其功能状态。
置数,具体步骤如下:
数据开关
(01101011)
三 门
态
置 数
(01101011)
三 态 门 SW-B=1
SW-B=0
S 0 = 1 S 1 = 1 T 4 =
8
计 算 机 组 成 原 理 实 验
五、分析整理实验数据,写出实验报告 A=01101011 (6B)
299-B 0 S1 0 S2 0 M 任意 移位结果
5
计 算 机 组 成 原 理 实 验
2、移位运算实验
三、实验仪器 TDN-CM++计算机组成原理教学实验系统一 台,排线若干。
实验二:算术逻辑运算和移位运算

西安交通大学实验报告
课程名称:微机原理与接口技术实验名称数据传送
班级:机械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。
运算器移位运算实验报告

运算器移位运算实验报告大家好,今天我们来聊聊运算器移位运算。
移位运算,听起来是不是有点高深,其实它就是把二进制数里的位数往左或者往右移动。
就好比你把手里的糖果往一边推,推得越远,糖果就越少,推的方向不同,糖果的分布也会变。
想象一下,如果你有一个二进制数“1011”,往左移一位,就变成“0110”,简单吧?这就像把一块蛋糕切成两半,左右两边都有不同的口感。
移位运算有两种主要方式,分别是逻辑移位和算术移位。
逻辑移位就像是清理桌面,把不需要的东西往边上推,留出更多空间。
比如说,把“0001”逻辑右移一位,结果是“0000”,因为我们把那个“1”给推掉了。
而算术移位就更像是做数学题,保持符号位不变。
比如把“1111”右移一位,结果变成“1111”,这边的“1”继续留在那儿,就像是有个坚强的队友,没让他离开。
移位运算的意义是什么呢?这可是大有来头!在计算机里,运算器用移位运算来做乘法和除法。
这种方式效率高得惊人。
想象一下,你要把10乘以2,普通方法得一笔一划地加,耗时又费力;可如果用移位运算,你只需把“10”左移一位,就直接变成了“100”,这可是速度与激情的完美结合。
简直是搬家时一挥而就,省时省力。
移位运算也有一些小技巧和注意事项。
比如说,左移一位相当于乘以2,而右移一位则相当于除以2。
这时候,很多小伙伴可能会想,哎,这不是太简单了吗?简单的背后往往有深意。
比如在处理负数时,算术右移就很有必要了,得考虑符号位,不然就像走路没看路,容易摔跤。
聪明的小伙伴们可别忘了这一点哦。
在实验过程中,我们用了一些工具来帮助我们实现这些操作。
比如说,运算器和一些编程软件,这些工具就像是我们实验室里的“小助手”。
每次移位运算之后,看到结果在屏幕上瞬间出现,心里那种满足感简直不要太好。
就像把新买的零食打开,一口下去,幸福感爆棚!我们还做了些小实验,看看不同的移位运算会有什么不同的结果。
有时我们故意用一些边界值,比如说全是“1”的数,结果每次操作都能引发“哇”的一声惊叹。
实验二 算术逻辑运算及移位操作

实验二算术逻辑运算及移位操作一.实验任务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

汇编实验2.1-2.4软件工程20091120183 李铮2.1数据传送指令的使用1.实验目的:负责把数据、地址或立即数传送到寄存器、存储单元以及I/O端口,或从内存单元、I/O端口中读取数据。
可以分为下面几类:1. 通用传送指令:MOV,PUSH,POP,XCHG,XLA T2. 输入输出指令指令: IN,OUT3. 目的地址传送指令: LEA,LDS,LES4. 标志位传送指令: LAHF,SAHF,PUSHF,POPF2.实验步骤:1. 传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
2.改变标志寄存器psw中tf标志的状态(0——1或1——0),其余位保持不变。
3. 设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。
在DEBUG状态下使用A 命令送入下面程序,并用单步T命令执行的方法,分析每条指令源地址的形成过程?当数据传送每完成一次,试分析AX寄存器中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]HLT4. 使用标志位传送指令,编程序段将标志位寄存器的低八位的值存入内存单元DS:1000H 中或堆栈中,然后将标志位寄存器的低八位置位为10101010。
2.2算术逻辑运算和移位指令的使用1.实验目的:使用算术逻辑运算和移位指令,可以实现对二进制数据的加、减、乘、除等四则运算,与、或、非、异或等逻辑运算,以及移位运算和代码转换运算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二算术逻辑运算及移位操作
一.实验任务
1.实验程序段及结果表格如表:
分析:
程序段1:
MOV AX, 1018H ;AX←1018H
MOV SI, 230AH ;SI←230AH
ADD 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←3FFH
ADD AX,BX ;AX=3352H,
MOV [20H], 1000H ;[20H]←1000H
ADD [20H], AX ;[20H]=4352H
PUSH AX ;
POP BX ;BX=3352H
程序段2:
MOV AX, 0A0AH ;AX←0A0AH
ADD AX, 0FFFFH ;AX=0A09H,最高位进位CF=1,低8位1的
;个数为偶数PF=1;D3向D4进位AF=1 MOV CX, 0FF00H ;CX←0FF00H
ADC AX, CX ;AX=090AH,最高位进位CF=1,低8位1的个
;数为偶数PF=1
SUB AX, AX ;AX=0,运算结果为零ZF=1
INC AX ;AX=1H
OR CX, 0FFH ;CX=0FFFFH,最高位为1,ZF=1,低8位1的
;个数为偶数PF=1
AND CX, 0F0FH ;CX=0F0FH,低8位1的个数为偶数PF=1
MOV [10H], CX ;[10H]←0F0FH
程序段3:
MOV BL, 25H ;BL←25H
MOV BYTE PTR[10H], 4 ;[10H]←04H
MOV AL, [10H] ;AL←04H
MUL BL ;AL=94H
程序段4:
MOV WORD PTR[10H],80H ;[10H]←0080H
MOV BL, 4 ;BL←04H
MOV AX, [10H] ;AX←0080H
DIV BL ;AX=0020H
程序段5:
MOV AX, 0 ;AX←0000H
DEC 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=1
NOT AX ;AX=8003H
SUB AX, 3 ;AX=8000H,低8位1的个数为偶数,PF=1
;最高位为1,SF=1
OR AX, 0FBFDH ;AX=0FBFDH,最高位为1,SF=1
AND AX, 0AFCFH ;AX=0ABCDH,最高位为1,SF=1
SHL AX,1 ;AX=579AH,低8位1的个数为偶数,PF=1,
;算数结果溢出OF=1,最高位进位CF=1 RCL AX,1 ;AX=0AF35H,低8位1的个数为偶数,
;PF=1,算数结果溢出OF=1
2.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。
写出完成此功能的程序段并上机验证结果。
程序段:
LEA BX,0010H
MOV [BX],10H
MOV [BX+1],04H
MOV [BX+2],30H
MOV AX,0000H
ADD AL,[BX]
ADD AL,[BX+1]
ADD AL,[BX+2]
MOV DS:[0013H],AL
MOV AL,[BX]
MUL [BX+1]
MUL [BX+2]
MOV DS:[0014],AX
上机验证:
3.写出完成下述功能的程序段。
上机验证你写出的程序段,程序运行的最后结果(AX)=?
(1) 传送15H到AL寄存器;
(2) 再将AL的内容乘以2;
(3) 接着传送15H到BL寄存器;
(4) 最后把AL的内容乘以BL的内容。
程序段:
MOV CL,02H
MOV AL,15H
MUL CL
MOV BL,15H
MUL BL
结果AX=0372H
4.写出完成下述功能的程序段。
上机验证你写出的程序段,程序运行后的商=?
(1) 传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;
(2) 把DS:1000H单元中的数据传送到AX寄存器;
(3) 把AX寄存器的内容算术右移二位;
(4) 再把AX寄存器的内容除以DS:1002H字节单元中的数;
(5) 最后把商存入字节单元DS:1003H中。
程序段:
MOV DS:[1000H],2058H
MOV DS:[1002H],12H
MOV AX,DS:[1000H]
SAR AX,2
MOV BL,DS:[1002H]
DIV BL
MOV DS:[1003H],AX
最后商为73H
5.下面的程序段用来清除数据段中从偏移地址0010H开始的12个字存储单元的内容(即将零送到这些存储单元中去)。
(1) 将第4条比较指令语句填写完整(划线处)。
MOV SI,0010H
NEXT: MOV WORD PTR[SI],0
ADD SI,2
CMP SI,001CH
JNE NEXT
HLT
(2) 假定要按高地址到低地址的顺序进行清除操作(高地址从0020H开始),则上述程序段应如何修改?
MOV SI,0020H
NEXT: MOV BYTE PTR[SI],0
SUB SI,1
CMP SI,0014H
JNE NEXT
HLT
6.输入并运行表1.3中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。
程序段字单元(1A00H)= 字单元(1A02H)=
MOV [1A00H], 0AA55H MOV [1A02H], 2AD5H SHL WORD PTR[1A02H],1 CMP [1A00H], 8000H CMC
RCL WORD PTR[1A02H],1 RCL WORD PTR[1A00H],1 AA55 0000 AA55 2AD5 AA55 55AA AA55 55AA AA55 55AA AA55 AB55 54AA AB55
说明:
MOV [1A00H], 0AA55H ;[1A00H] ← 0AA55H
MOV [1A02H], 2AD5H ;[1A02H] ← 2AD5H
SHL WORD PTR[1A02H],1 ;[1A02H]=DATA*2
CMP [1A00H], 8000H ;[1A00H]—8000H,结果不送回[1A00H] CMC ;进位标志取反
RCL WORD PTR[1A02H],1 ;将[1A02H]带CF的循环左移一位
RCL WORD PTR[1A00H],1 ;将[1A00H]带CF的循环左移一位
二.简答
3.简要说明ADD,SUB,AND,OR对标志位的影响。
答:4条指令满足以下条件时会对个标志位产生影响:
CF:当进行加减运算时若最高位向前有进位或借位,则CF=1,否则CF=0。
PF:当运算结果的低八位中1的个数为奇数时PF=1,否则PF=0。
AF:在加减法操作中,D3向D4有进位或借位时AF=1,否则AF=0。
ZF:当运算结果为零时ZF=1。
SF:当运算结果最高位为1时SF=1,否则SF=0。
OF:当运算结果溢出时OF=1。
4.简要说明一般移位指令与循环移位指令之间的区别
答:一般移位指令将最左(右)端移入CF,而另一端则会补0。
循环移位指令同样将最左(右)端移入CF,但另一端会用CF或最左(右)端填充。