算术运算指令练习题
单片机教程11:单片机算术运算指令

单⽚机教程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。
3.3.2 算术运算类指令

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指令则是一种常用的指令集架构,广泛应用于移动设备、嵌入式系统和高性能计算等领域。
为了更好地理解和掌握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中。
PLC实验六数学运算指令

实验六数学运算指令【实验目的】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°。
第八节 算术运算类指令

判断溢出的方法
• 两数相加时,只有当参加运算的两个数 两数相加时, 符号相同时, 发生溢出现象( 符号相同时,才有可能发生溢出现象(异 号相加无溢出) 号相加无溢出),溢出时运算结果的符号 号相反。 与参加运算的符号相反。可以利用这个 特点判断加法有无溢出, 特点判断加法有无溢出,称为判断溢出 的符号法则。 的符号法则。
8.1.3 补码
• 负数的补码=模-该负数的绝
对值
• 例如,若X是负数,则有:X补 是负数,则有: 例如, =mod- =mod-│X│ • 当模为12时,0至12间的任何数 当模为12时 12间的任何数 与其加- 减3与其加-3的补码的效果是 一样的。例如: 一样的。例如: • 6-4=2 • -4的补码为:[-4]=12-4= 的补码为: 4]=12- +8 • 6+8=12+2=2(12自然消失) 8=12+2=2(12自然消失 自然消失) • 由上可见,在某一计数系统的 由上可见, 模内, 模内,任何加减法运算都归结
• • • • • • •
例:求(-20)+(+16)=? (-20)+(+ ) )+(+16 相当于计算[ 20]补 16]补 解:相当于计算[-20]补+[+16]补。 [-20]原=10010100B 20]原 [-20]反=11101011B 20]反 [-20]补=[-20]反+1=11101011B+1=11101100B 20]补=[-20]反 1=11101011B+ [+16]补=[+16]原=00010000B 16]补=[+16]原 下面列出[―20]补 16]补的算式 补的算式: 下面列出[―20]补+[+16]补的算式:
但是如果我们一旦决定参加运算的操作数是无符号数对于运算结果我们也一定要把结果看待为无符号数若我们决定参加运算的操作数是带符号数补码形式结果就必须看待为带符号数补码形式
实验三 8086 常用指令练习

实验名称实验三 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中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10、程序段如下: ;AH=00H MOV AH, 0 MOV AL, 9 ;AL=09H MOV BL, 8 ;BL=08H ADD AL, BL ;AL=11H,AF=1 AAA AAD调整方法: AAD AH*10+AL=11H,AH=00H DIV BL AAD调整后,AL=11H,AH=00H 08H 02H 01H 结果AL=_________,AH=___________, BL=_________。
⑶ SUB BYTE PTR [BX],8
⑷ MOV AX,[BX][SI] ⑸ MOV CX,5[BX] ⑹ MOV DX,4[BX][SI]
(3) 1000H:0300H单元的数 据变为0AH. (4) AX=7856H (5) CX=CDABH (6) DX=EFCDH
编程时,数据可以用十进制,二进制,或十六进制表 示。但在分析解答问题时,通常需转成十六进制或二 进制。
(1)计算绝对值: 0-96H=6AH, 05H (2)绝对值相乘: 6AH*05H=0212H (3)结果符号位为1, 因为两数符号不同,异或即为1 0000H-0212H=FDEEH
8、若AL=FFH,BL=FFH,则执行IMUL BL 指令后,结果AX=( 0001H )
(1)计算绝对值:0-FFH=01H,0-FFH=01H (2)绝对值相乘:01H*01H=0001H (3)结果符号位为0(两数符号相同,结果符号为0) 结果即为绝对值相乘结果。
算术运算指令练习题
一、读程序,指出结果
1、 MOV AL,0F8H ADD AL,39H 上述指令段运行后,AL的值是( 31H). 1 1 CF=( ),OF=( 0 ),AF=( 0 ) PF=( 0 ),SF=( 0 ),ZF=(
),
2、下面程序段执行后, AL=( 86H ), 标志位CF=( 1 ),OF=( 1 ), 64=40H MOV AL,64 MOV BL,-70 减法:AL-BL SUB AL,BL =40H-BAH
;取W中的数据 ;取X中的数据 ;X+10 ;W-(X+10) ;取RБайду номын сангаас的数据 ;R+8 ; W-(X+10)-(R+8) ;存结果到Z
⑶ Z =(W*X)/(Y+4),余数送R。
(3) MOV AX,W MOV BX,X MUL BX MOV CX,Y ADD CX,4 IDIV CX MOV Z,AX MOV R,DX
AX=FFA6H
步骤: (1)计算绝对值: 0-FB=05H,12H (2)绝对值相乘: 05H*12H=005AH (3)结果符号位为1, 因为两数符号不同,异或即为1.0000H-005AH=FFA6H
7、若AL=96H,BL=05H,则执行IMUL BL 指令后,结果AX=( FDEEH )
-70→8位二进制补码? 方法:+70=46H,00H-46H=BAH BAH即为-70的8位二进制补码。 =86H
3、设DS=1000H,BX=0300H,SI=0002H,DX=0100H,自 1000H:0300H单元开始存有以下数据(用十六进制形式表示):12 34 56 78 90 AB CD EF,试说明下列各条指令执行后目的操作数的 内容。 (1) BX=030CHH ⑴ ADD BX,12 (2) DX=3512H ⑵ MOV DX,[0300H]
AAA的调整方法: AL+06H=17H,AL的高4位清0,AL=07H AH加1,变为AH=01H 也即AX=0107H,若为非压缩BCD码,即表示17.
思路:MUL BL为无符号数乘法指令,将AL和BL直接相乘 (十六进制)即可。
IMUL BL为有符号数乘法指令,计算机做有符号数相乘的步骤如下: (1)计算两个相乘的数的绝对值。若为负数,其绝对值的计算为用0减该 数,即得负数的绝对值;若为正数,其绝对值就为该数。 (2)绝对值相乘。相乘时不考虑符号,只考虑两数的绝对值相乘,得到两 个数的绝对值相乘结果。
9、下面程序段执行后,AX=( 0132H ),BX= ( 0112H )。 MOV AX,92H ;AX=0092H MOV BX,10H ;BX=0010H ;BX=0080H,CF=0 ADD BX,70H ADC AX,BX ;AX=0112H PUSH AX ;(SP+1)_(SP)=0112H MOV AX,20H ;AX=0020H POP BX ;BX=0112H ;AX=0132H ADD AX,BX
(1) MOV AX,Z MOV BX,X SUB AX,BX ADD AX,W MOV Z,AX ;取Z中的数据 ;取X中的数据 ;Z-X ;Z-X+W ;存结果到Z
⑵ Z = W-(X+10)-(R+8)
(2)
MOV AX,W MOV BX,X ADD BX,10 SUB AX,BX MOV CX,R ADD CX,8 SUB AX,CX MOV Z,AX
(3)结果。结果的符号位为相乘的两个数的符号位的异或,即两数符号相 同,结果符号就为0,不同就为1.若结果的符号位为0,说明是正数,两 数绝对值相乘的结果即为最终结果。若结果符号位为1,说明是负数, 就要用0减去上一步中绝对值相乘结果,得到的数即为最终结果。
若AL=FBH,BL=12H, IMUL BL后,结果为?
4. 设AX= C5FFH,BX= 9E00H,试实现 以下要求: ⑴ ADD AX,BX 指令执行后, AX= 63FFH,ZF= 0 , SF= 0 , CF= 1 , OF= 1 , AF= 0 , PF= 1 ,
5、写出执行以下二进制运算的指令序列,其中X、Y、 Z、W、R均为存放16位带符号数内存单元的地址。 ⑴ Z =(Z-X)+ W ⑵ Z = W-(X+10)-(R+8) ⑶ Z =(W*X)/(Y+4),余数送R。
;取W中的数据到AX中 ;取X中的数据到BX中 ;W*X,结果在DX_AX中 ;取Y中的数据到CX中 ;Y+4 ;(W*X)/(Y+4),商在AX中,余数在DX中 ;存商到Z中 ;存余数到R中
6、AL=FBH,BL=12H,则,指令MUL BL执行后, AX= 11A6 H;指令IMUL BL执行后,AX= FFA6 H