算术运算指令练习题
- 格式:ppt
- 大小:312.50 KB
- 文档页数:14
单⽚机教程11:单⽚机算术运算指令不带进位位的单⽚机加法指令ADD A,#DATA ;例:ADD A,#10HADD A,direct ;例:ADD A,10HADD A,Rn ;例:ADD A,R7ADD A,@Ri ;例:ADD A,@R0⽤途:将A中的值与其后⾯的值相加,最终结果否是回到A中。
例:MOV A,#30HADD A,#10H则执⾏完本条指令后,A中的值为40H。
下⾯的题⽬⾃⾏练习MOV 34H,#10HMOV R0,#13HMOV A,34HADD A,R0MOV R1,#34HADD A,@R1带进位位的加法指令ADDC A,RnADDC A,directADDC A,@RiADDC A,#data⽤途:将A中的值和其后⾯的值相加,并且加上进位位C中的值。
说明:由于51单⽚机是⼀种8位机,所以只能做8位的数学运算,但8位运算的范围只有0-255,这在实际⼯作中是不够的,因此就要进⾏扩展,⼀般是将2个8位的数学运算合起来,成为⼀个16位的运算,这样,能表达的数的范围就能达到0-65535。
如何合并呢?其实很简单,让我们看⼀个10进制数的例程:66+78。
这两个数相加,我们根本不在意这的过程,但事实上我们是这样做的:先做6+8(低位),然后再做6+7,这是⾼位。
做了两次加法,只是我们做的时候并没有刻意分成两次加法来做罢了,或者说我们并没有意识到我们做了两次加法。
之所以要分成两次来做,是因为这两个数超过了⼀位数所能表达的范置(0-9)。
在做低位时产⽣了进位,我们做的时候是在适当的位置点⼀下,然后在做⾼位加法是将这⼀点加进去。
那么计算机中做16位加法时同样如此,先做低8位的,如果两数相加产⽣了进位,也要“点⼀下”做个标记,这个标记就是进位位C,在PSW中。
在进⾏⾼位加法是将这个C加进去。
例:1067H+10A0H,先做67H+A0H=107H,⽽107H显然超过了0FFH,因此最终保存在A 中的是7,⽽1则到了PSW中的CY位了,换⾔之,CY就相当于是100H。
1. 加法指令(s 代表源操作数,d 代表目标操作数)(1)不带进位的加法指令add d,ss和d相加的结果存入d。
(2)带进位的加法指令adc d,sS和d相加后再加上标志位CF,结果存入dAdd主要用来计算低位字加法,adc用来计算高位字加法,实现32位加法比如一个32位数,高16位存在dx中,低16位存在ax中另一个32位数,高16位置存在cx中,低16位存在bx中计算加法add ax,bxAdc dx,cx(3)加1指令inc d 则d=d+1Inc axInc bl2. 减法指令(1)不带借位的减法sub d, sd-s结果存入d(2)带借位的减法sbb d,sd-s-CF,结果存入d比如一个32位数,高16位存在dx中,低16位存在ax中另一个32位数,高16位置存在cx中,低16位存在bx中计算减法,第一个数减第二个数sub ax,bxsbb dx,cx(3)减1指令dec d 则d=d-1dec axdec bl(4)求补NEG d将d包括符号位在内各位取反,末位加1相当于d=0-d比如字节型-5计算机中存的是11111011求补后是00000101,即5比如字节型+7计算机中存的是00000111求补后是11111001即-7 (5)比较cmp d,s类似做减法sub,但不保存结果,只用来影响标志位,主要通过执行后的标志位来判断两个数的大小关系比如cmp ax,bx (类似做ax-bx)Jz label1 (JZ意思是两数相等则跳转, jmp if zf=1)3. 乘法指令(1)无符号数乘法(用于正数)Mul s (该指令隐含了操作数ax或al)s为无符号word型,将s与AX相乘,结果存入DX,AX;s为无符号byte型,将s与AL相乘,结果存入AX(2)有符号数乘法(用于负数)imul s (该指令隐含了操作数ax或al)s为有符号word型,将s与AX相乘,结果存入DX,AX;s为有符号byte型,将s与AL相乘,结果存入AX乘法指令影响of位和cf位,乘积结果用到高字(节)寄存器,则of=1,cf=1;没用到高字(节)寄存器(结果在8位或16位范围内) 则of=0,cf=0 书p974. 除法指令(隐含被除数在ax或dx,ax中)(1)无符号数除法Div sS为无符号byte型,则用ax/s ,商存在al中,余数存在ah中S为无符号word型,则用dx,ax/s,商存在ax中,余数存在dx中(2)有符号数除法idiv s和无符号数除法类似,用于有符号数假设用30001/2 ,代码如下Mov ax, 30001Mov bl, 2Div bl得到的是divide override,这样的情况暂不考虑,只考虑结果能够存放到相应寄存器中的情况(3)字节转换成字(隐含操作数为al)CBW将al中的符号位扩展到ah中,比如-5,mov al,-5<=> mov al, 11111011bal中的11111011b经cbw扩展后AX中为1111111111111011b;al存的如果是正数,直接在ah中存入00000000b(4)字转换成双字(隐含操作数为ax)Cwd (convert word to dword)和cbw类似,将ax中的符号位扩展到dx中。
arm指令练习题ARM指令练习题在计算机科学领域,指令是计算机硬件执行的基本单位。
而ARM指令则是一种常用的指令集架构,广泛应用于移动设备、嵌入式系统和高性能计算等领域。
为了更好地理解和掌握ARM指令的使用,我们可以通过练习题来加深对其的理解。
练习一:寄存器操作1. 将寄存器R0的值设置为0x12345678。
2. 将寄存器R1的值设置为寄存器R0的值加上0x80000000。
3. 将寄存器R2的值设置为寄存器R0和寄存器R1的异或结果。
4. 将寄存器R3的值设置为寄存器R1的值减去寄存器R0的值。
5. 将寄存器R4的值设置为寄存器R2的值右移8位。
练习二:条件分支1. 如果寄存器R0的值等于0x1234,则跳转到标签L1。
2. 如果寄存器R0的值小于0x1000,则跳转到标签L2。
3. 如果寄存器R0的值大于等于0x8000,则跳转到标签L3。
4. 如果寄存器R0的值不等于0x5678,则跳转到标签L4。
L1:; 执行一些操作L2:; 执行一些操作L3:; 执行一些操作L4:; 执行一些操作练习三:数据传输1. 将寄存器R0的值存储到内存地址0x2000处。
2. 将内存地址0x3000处的值加载到寄存器R1中。
3. 将寄存器R2的值存储到内存地址0x4000处,并将内存地址0x4004处的值加载到寄存器R3中。
练习四:逻辑运算1. 将寄存器R0的值与0xFF进行按位与操作,并将结果存储到寄存器R0中。
2. 将寄存器R1的值与0xFF进行按位或操作,并将结果存储到寄存器R1中。
3. 将寄存器R2的值与0xFF进行按位异或操作,并将结果存储到寄存器R2中。
练习五:算术运算1. 将寄存器R0的值与0x0F进行按位与操作,并将结果存储到寄存器R0中。
2. 将寄存器R1的值与0x0F进行按位或操作,并将结果存储到寄存器R1中。
3. 将寄存器R2的值与0x0F进行按位异或操作,并将结果存储到寄存器R2中。
实验六数学运算指令【实验目的】1.熟悉STEP7编程软件的基本使用方法。
2.掌握STEP7编程软件梯形图程序的运行、监视及调试方法。
3.掌握基本数学运算指令的使用方法。
4.将所学运算指令知识运用于实践中,培养分析问题、解决问题能力。
【预习要求】1.复习数学运算指令的有关内容。
2.按照下面给出的实验习题控制要求进行预习,理论分析梯形图内容。
【实验任务及要求】1.为加深对本次实验指令的理解,将课堂上讲解的例题输入编程软件,下载运行,并观察实验结果。
2.将实验习题理论分析的梯形图内容进行验证。
将梯形图程序输入编程软件,下载运行,并根据运行情况进行调试、修改程序,直到通过为止。
3.例题内容要求在实验课上测试通过,实验习题内容要求课堂上进行编写及调试,实验报告需涵盖I/O分配表和梯形图。
4.要求实验报告写出心得体会:本次实验中遇到的问题、解决方案或收获。
【实验步骤】1.新建工程,进行硬件组态,编译保存。
2.将程序逐条输入,检查无误后,保存程序。
3.将工程下载到模拟器。
4.将PLC设为运行状态,根据控制要求观察程序输出状态是否正确。
【实验内容】1、整型算术运算指令练习如下指令~ 1 ~2、浮点数算术运算指令练习如下指令:加减乘除3、浮点数数学运算指令练习如下指令:~ 2 ~4、字逻辑学运算指令字逻辑运算指令在功能上包括逻辑与、或、异或。
根据操作数的数据类型又分为字型和双字型,两者的功能相同,指令形式相似,只是数据宽度不同,前者是16位的,后者是32位的。
两者也都是按位操作的。
练习如下指令:5、综合练习实验习题1(整数运算指令):某系统要求对按钮按下的次数进行计数。
若计数次数为偶数次,则指示灯以1Hz的频率闪烁;若计数次数为奇数次,则指示灯以10Hz的频率闪烁。
分析:首先应该对计数脉冲计数,偶数次数可以被2整除,奇数次数不能被2整除,这里可以用取余指令来解决。
~ 3 ~实验习题2(浮点数数学运算指令):求cos70°。
实验名称实验三 8086 常用指令练习一、实验目的1、通过实验掌握常用数据传送指令、算术运算指令。
2、MOV、XCHG、ADD、ADC、SUB、SBB等常用指令的使用。
二、实验要求1、16进制数加减法手算结果及实验结果。
2、8086 常用指令练习部分的逐条运行记录,思考结果及自编程序运行记录。
三、实验环境DOS操作系统。
四、实验内容1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX图1在内存100处键入指令2)用U命令检查键入的程序并记录,特别注意左边的机器码。
图2用U命令检查键入3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
图3 T命令逐条运行图4 T命令逐条运行图5 T命令逐条运行2、加减法指令:1)用A命令在内存200H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX图6在内存200处键入指令3)用U命令检查键入的程序及对应的机器码。
图7用U命令检查键入4)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF 情况。
图8 T命令逐条运行图9 T命令逐条运行图10 T命令逐条运行ZF无变化思考:这次运行还是打入T,行不行?怎么办?用R命令检查一下IP的内容。
注意T命令与IP的关系。
3、带进位加减法:1)用A命令在内存300H处键入下列内容,并用U命令检查:MOV AH,12MOV AL,84MOV CH,56MOV CL,78ADD AL,CLADC AH,CHMOV DH,A7MOV DL,58SUB DL,7FSBB DH,34图11在内存300处键入指令图12用U命令检查键入2)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。
算术运算指令试题答案一、选择题1. 下列哪个选项是算术运算的正确描述?A. 加法和减法是唯一的算术运算。
B. 算术运算只适用于整数。
C. 乘法和除法不属于算术运算。
D. 算术运算包括加法、减法、乘法和除法。
答案:D2. 在计算机中执行算术运算时,哪个部件主要负责此功能?A. 控制器B. 内存C. 算术逻辑单元 (ALU)D. 输入输出设备答案:C3. 浮点数运算相比于整数运算,其复杂性主要体现在:A. 需要更多的存储空间。
B. 需要更复杂的算法。
C. 需要更高的计算精度。
D. 以上都是。
答案:D4. 溢出是指在执行算术运算时,结果超出了数据类型所能表示的范围。
以下哪种情况最可能导致溢出?A. 使用相同的操作数进行大量加法运算。
B. 使用大的乘法操作数。
C. 使用小的除法操作数。
D. 所有情况都同样可能导致溢出。
答案:A5. 在二进制系统中,以下哪个操作可以实现对数值的翻倍?A. 左移一位。
B. 右移一位。
C. 增加一个单位。
D. 减去一个单位。
答案:A二、填空题1. 在计算机中,算术运算通常由__________来完成。
答案:算术逻辑单元 (ALU)2. 算术平方根是求一个数的__________,使得这个数的平方等于原数。
答案:平方根3. 当进行除法运算时,如果除数为零,则会产生一个__________错误。
答案:除零4. 在计算机中,整数通常有两种表示方法:原码、反码和__________。
答案:补码5. 浮点数的计算需要遵循IEEE 754标准,该标准定义了浮点数的表示和__________。
答案:运算规则三、简答题1. 请简述算术运算在计算机科学中的重要性。
答:算术运算是计算机科学和信息技术的基础。
它们是计算机处理数据、执行程序和解决复杂问题的基本操作。
从简单的数学计算到复杂的科学和工程模拟,算术运算都是不可或缺的。
此外,算术运算的性能直接影响到计算机系统的整体效率和响应速度。
2. 描述二进制数系统与十进制数系统的主要区别。
算数运算指令展开全文算数运算指令算术运算指令的主要功能是实现算术加、减、乘、除等运算。
1.ADD类指令是不带进位的加法运算指令(4条)。
ADD A,Rn ;A+Rn→A, A与Rn寄存器内容相加,结果送到A中ADD A,direct ;(direct)+A→A, A与直接地址内容相加,和送AADD A, @Ri ;(Ri)+A→A, A与Ri间址内容相加,和送AADD A, #data ;data+A→A, A与立即数相加,和送A注意:ADD类指令相加结果均在A中,相加后源操作数不变。
若A中最高位有进位,Cy置1;若半加位有进位,AC置1。
A的结果还影响奇偶标志位P。
例 A=30H, R0=10H执行 ADD A,R0 结果:A=40H, R0=10H,标志位 P=1, Cy=0, OV=0, AC=02.ADDC类指令(带进位加法4条)ADDC A, Rn ;A+Rn+Cy→A, A与R n内容、进位状态相加,和送到A中ADDC A, direct ;(direct)+Cy+A→A, A与直接地址中内容、进位状态相加,和送AADDC A, @Ri ;(Ri)+Cy+A→A, A与Ri间址单元中内容、进位状态相加,和送AADDC A, #data ;data+Cy+A→A, A与立即数、进位状态相加,和送A与ADD类指令的区别是,ADDC指令相加时连同进位标志Cy内容一起相加,主要用于多字节加法中的高位字节的相加,而最低位字节相加用ADD指令。
进位位Cy加到字节的最低位。
例写计算1234H+0FE7H的程序,将结果存入内部RAM的41H 和40H单元,40H存低8位,41H存高8位。
程序MOV A, #34H ;被加数低8位数34H送AADD A, #0E7H ;加数低8位数E7H与之相加,A=1BH,Cy=1 MOV 40H, A ;A→40H即34H+E7H结果存入40H中(40H=1BH)MOV A, #12H ;被加数高8位数12H送AADDC A, #0FH ;加数高8位0FH和Cy与A相加,A=22H MOV 41H, A ;高8位与进位位之和存入41H中(41H)=22H ;总和为221BH,总结果在41H,40H单元中3.SUBB类指令(4条)SUBB类指令是带借位减法指令,其功能是将A中被减数减去源操作数指出的内容,再减去借位标志Cy(原进位标志)状态,差值在A中。
计算机原理第3章运算方法和运算器综合练习一、选择题知识点:定点补码的加法,减法,不带符号数的运算,溢出 P261、[X]补+[Y]补=[X+Y]补(mod 2n)2、[X-Y]补=[X+(-Y)]补= [X]补+[-Y]补(mod 2n)3、[-Y]补=[[Y]补]变补(注:连同符号位一起变反加1的过程叫变补或求补。
)4、判断溢出条件: C S+1和C S相异时溢出当C S+1C S=00或 C S+1C S=11时不产生溢出。
当C S+1C S=01或C S+1C S=10时则产生溢出。
1、计算机中实现减法运算使用的方法是()A.从被减数中减去减数 B.从减数中减去被减数再求反C.转换为补码的加法运算 D.依减数的形式再选择一种适当的方法2、定点数作补码加减运算时,其符号位是( )A.与数位分开进行运算B.与数位一起参与运算C.符号位单独作加减运算D.两数符号位作异或运算3、补码加减法运算是()A .操作数用补码表示,两数的尾数相加减,符号位单独处理,减法用加法代替B .操作数用补码表示,符号位与尾数一起参加运算,结果的符号与加减所得相同C .操作数用补码表示,连同符号位直接相加减,减某数用加负某数的补码代表,结果的符号在运算中形成D .操作数用补码表示,由数符决定两尾数的操作,符号位单独处理4、执行二进制算术运算11001001+00100111,其运算结果是()。
A) 11101111 B) 11110000 C) 00000001 D) 101000105、已知X的补码为11101011,Y的补码为01001010,则X+Y的补码为()。
A、10100001B、11011111C、00110101D、溢出6、已知X的补码为11101011,Y的补码为01001010,则X-Y的补码为()。
A、10100001B、11011111C、10100000D、溢出7、下面关于溢出的描述正确的是()A 溢出就是进位B 溢出是指运算结果的最高位向更高位进位或借位C 溢出与补码运算中的模丢失是一个概念D 溢出主要用于判断带符号的运算结果是否超过数的表示范围8、定点运算器运算时产生溢出的原因是()。