版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 8086的寻址方式和指令系统的寻址方式和指令系统 第6讲教学目的和要求【教学目标】通过8086指令结构的讲解,使学生了解并掌握乘法、除法类指令、逻辑运算类指令和移位指令的结构、功能和使用方法。【教学重点】乘法指令; 移位指令;【教学难点】算术运算指令和逻辑运算指令的区别。乘法指令指令指令含义含义时钟数时钟数MUL无符号数乘法70139+EAIMUL整数乘法80160+EAAAM乘法的ASCII调整83MUL无符号数乘法指令MUL无符号数乘法指令 (Multiply unsigned)格式 MUL src。功能 将源操作数和累加器中的数都当成无符号数,然后将两数相乘,src可以是字(
2、065535)和字节(0255)。操作数要求l可以是寄存器、存储单元,但不能是立即数;l源操作数是存储单元时,必须在操作数前加B或W说明是字节还是字。MUL无符号数乘法指令运算情况 l源操作数是一个字节 源操作数与累加器AL中的内容相乘,乘积为双倍长的16位数,高8位送到AH,低8位送AL。即 AXAL源。AL被乘数8位操作数乘数8位AX乘积16位MUL无符号数乘法指令运算情况 l源操作数是一个字 源操作数与累加器AX的内容相乘,结果为32位数,高位字放在DX寄存器中,低位字放在AX寄存器中。即 (DX,AX) AX 源AX被乘数16位操作数乘数16位AX乘积32位DX举例MUL CL ;AL
3、乘CL,结果在AX中MUL BX ;AX乘BX,结果在DX:AX中MUL BYTE DI; AL乘存储器(8位),结果在AX中MUL WORDBX; AX乘存储器字,结果在DX:AX中如果运算结果的高半部分(在AH或DX中)为零,则状态标志位(CF)=(OF)=0,否则(CF)=(OF)=1。因此,状态标志位(CF)=(OF)=1,表示AH或DX中包含着乘积的有效位。 MUL无符号数乘法指令举例MOV AL,14H ;(AL)=14H-20MOV CL,05H ;(CL)=05H-5MUL CL ;(AX)=0064H-100本例中结果的高半部分(AH)=0,因此,状态标志位(CF)=(OF)
4、=0,通过检测标志,可以去除结果中的前导无效零。有了乘法(和除法)指令,使有些运算程序的编程变得简单方便。但是必须注意,乘法指令的执行速度很慢,除法指令也是如此。 MUL无符号数乘法指令IMUL整数乘法指令IMUL整数乘法指令 (Integer Multiply)格式 IMUL src。功能 将源操作数和累加器中的数都当成有符号数,然后将两数相乘,src可以是字(-3276832767)和字节(-128127)。操作数要求和运算情况 与MUL要求相同。举例IMUL CL ;AL乘CL,结果在AX中IMUL BX ;AX乘BX,结果在DX:AX中IMUL BYTE DI; AL乘存储器(8位),
5、结果在AX中IMUL WORDBX; AX乘存储器字,结果在DX:AX中如果运算结果的高半部分(在AH或DX中)为0或1,则状态标志位(CF)=(OF)=0,否则(CF)=(OF)=1。因此,状态标志位(CF)=(OF)=1,表示AH或DX中包含着乘积的有效位。为0,则表示高半部分是符号扩展。 IMUL整数乘法指令正数,AH或DX 为全0负数,AH或DX为全1举例MOV AX,04E8H ;(AX)=04E8HMOV BX,4E20H ;(BX)=4E20HIMULBX ;(DX:AX)=(AX) (BX)以 上 指 令 的 执 行 结 果 为 : ( D X ) = 0 1 7 F H ,(
6、AX)=4D00H,且(CF)=(OF)=1。实际上,以上指令完成带符号数+1256和+20000的乘法运算,得到乘积为+25120000。由于此时DX中结果的高半部分包含着乘积的有效数字,故状态标志位(CF)=(OF)=1。IMUL整数乘法指令AAM乘法的ASCII调整指令AAM乘法的ASCII调整指令(ASCII Adjust for Multiply)格式 AAM 。功能 对AL中的两个非压缩十进制数相乘的乘积进行十进制数的调整,在AX中得到正确的非压缩十进制数的乘积,高位在AH中,低位在AL中。调整的过程 把AL寄存器内容除以10,商放在AH中,余数在AL中。即:lAH AL/10所得
7、的商;lAL AL/10所得的余数.AAM乘法的ASCII调整指令举例 求两个非压缩十进制数08和04之乘积。解:MOV AL,08H ;置初值 MOV BL,04H MUL BL ;AL08与04之乘积20H AAM ; 调整得AH03H(十位位),AL02H(个位) 结果:AX0302H,即BCD数32。 若想转换成ASCII码,需再执行 OR AX,3030H除法指令指令含义时钟数DIV无符号除法80168+EAIDIV 整数除法101190+EAAAD除法的ASCII调整60CBW 把字节转换成字2CWD 把字转换成双字5DIV无符号数除法指令DIV无符号数除法指令 (Division
8、 unsigned)格式格式 DIV src。功能功能 将两个无符号数相除,被除数的长度必须是除数长度的两倍,若不够,必须扩展被除数的长度。操作数要求l可以是寄存器、存储单元,但不能是立即数;l源操作数是存储单元时,必须在操作数前加B或W说明是字节还是字。DIV无符号数除法指令运算情况 l源操作数是一个字节 16位被除数必须放入AX中,src为为8位。 ALAX/src字节的商 AHAX/src字节的余数 AX16位被除数操作数8位除数AL商 AH余数 DIV无符号数除法指令运算情况 l源操作数是一个字 32位被除数必须放入(DX,AX)中,src为16位。 AX(DX,AX)/src字的商
9、DX(DX,AX)/src字的余数 DX,AX32位被除数操作数16位除数AX商 DX余数 举例MOV AX,0F05H ;(AX)=0F05HMOV DX,068AH ;(DX)=068AHMOV CX,08E9H ;(CX)=08E9HDIV CX ; 运算完毕后,商(AX)=BBE1H,余数(DX)=073CH DIV无符号数除法指令注意事项 执行DIV指令时,如果除数为0,或字节除法时AL寄存器中的商大于FFH,或字除法时AX寄存器中的商大于FFFFH,则CPU立即自动产生一个类型号为0的内部中断。DIV无符号数除法指令IDIV整数除法指令IDIV整数除法指令 (Integer Div
10、ision)格式 IDIV src。功能 将两个带符号数相除,被除数的长度必须是除数长度的两倍,若不够,必须用CBW或CWD扩展被除数的长度。操作数要求与运算情况 同同DIV。注意事项 执行IDIV指令时,如果除数为0,或字节除法时AL寄存器中的商超出-128127范围,或字除法时AX寄存器中的商超出-3276832767范围,则CPU立即自动产生一个类型号为0的内部中断。IDIV整数除法指令IDIV整数除法指令关于余数的符号 在对有符号数进行除法运算时,例如-30除以8,可以得到商为-4,余数为+2;也可以得到商为-3,余数为-6,两结果都是正确的。 对于8086,规定余数的符号和被除数的符
11、号相同,因此第二种结果是8086执行完以后的结果。被除数扩展问题 无论是无符号数还是有符号数除法时,必须满足被除数长度是除数长度的两倍。当不够时,涉及到被除数的扩展。无符号数:被除数的扩展比较简单,添上足够的零就可以了。以下指令将AL中的一个8位无符号数扩展成为16位,存放在AX中。MOV AL,0FBH;(AL)=11111011BXOR AH,AH;(AH)=00000000B 有符号数:被除数的扩展必须根据各自的符号来完成,因此,需要借助指令CBW和CWD完成。CBW把字节转换成字指令CBW把字节转换成字指令 (Convert Byte to Word)格式 CBW。功能 把寄存器AL中
12、字节的符号位扩充到AH的所有位。(AH被称为AL的符号扩充),),不影响标志位。扩展方法 AL为正数(AL=80H)时,即D7=1时,使AH=0FFH。扩展方法 MOV AL,4FH;(AL)=01001111B CBW ; 由于由于AL7FH,或者说,或者说AL为负数时,符号位为为负数时,符号位为1,AH应补应补1,因此,因此(AH)=11111111B CBW把字节转换成字指令CWD把字转换成双字指令CWD把字转换成双字指令 (Convert Word to Double Word)格式 CWD。功能 把寄存器AX中字的符号位扩充到DX的所有位。扩展方法 AX为正数(AX7FFFH)时,即
13、即D15=1时,使DX=0FFFFH。CBW和CWD指令在带符号数的乘法(IMUL)和除法(IDIV)运算中十分有用,在字节或字的运算之前,将AL或AX中数据的符号位进行扩展。例如:MOV AL,MUL_BYTE;(AL)8位被乘数(带符号数)CBW ;扩展成为16位带符号数,在AX中IMULBX ;两个16位带符号数相乘,结果在DX:AX中 CBW和CWDAAD除法的ASCII调整指令AAD除法的ASCII调整指令 (ASCII Adjust for Division)格式 AAD。功能 在做除法之前,将AX中BCD码转换成二进制数并存入AL中。调整过程 AL AH10AL;AH 00。位运
14、算指令(12条)逻辑运算逻辑运算循环移位循环移位NOT取反ROL循环左移AND与ROR循环右移OR或RCL通过进位的循环左移XOR异或RCR通过进位的循环右移TEST测试算术逻辑移位算术逻辑移位SHL/SAL逻辑/算术左移SHR逻辑右移SAR算术右移 位操作指令是对8位或16位的寄存器或存储单元中的内容按位进行操作。逻辑运算指令命令含义时钟数NOT取反316+EAAND与317+EAOR或316+EAXOR异或317+EATEST测试311+EANOT取反指令NOT取反指令 (Logical Not)格式 NOT dst。功能 dst dst取反,执行完后不影响标志位。操作数要求可以是8位或1
15、6位寄存器、存储器。对于存储器操作,需指明是字还是字节。AND逻辑与指令AND逻辑与指令 (Logical AND)格式格式 AND dst,src。 src可以是立即数。功能功能 dst dstsrc,执行完后影响标志位。主要用于使操作数的某些位保留(和“1”相与),而使某些位清除(和“0”相与)。操作数要求可以是8位或16位寄存器、存储器,不能同时为men。对于存储器操作,需指明是字还是字节。OR逻辑或指令OR逻辑或指令 (Logical OR)格式 OR dst,src。src可以是立即数。功能 dst dstsrc,执行完后影响标志位。主要用于使操作数的某些位保留(和“0”相或),而使
16、某些位置1(和“0”相或)。)。操作数要求可以是8位或16位寄存器、存储器,不能同时为men。对于存储器操作,需指明是字还是字节。AND,OR,NOT举例举例 MOV AL, 35H; AL=0011,0101B AND AL, 0FH ; 0000,1111B,得AL=05H OR AL,70H ; 0111,0000B,得AL=75H NOT AL; 取反得1000,1010B ,即AL=8AHXOR异或指令XOR异或指令 (Exclusive OR)格式 XOR dst,src。 src可以是立即数。功能 dst dst src,执行完后影响标志位。主要用于使操作数的某些位保留(和“0”
17、相异或),而使某些位取反(和“1”相异或)。操作数要求 可以是8位或16位reg、men,不能同时为men。 对于存储器操作,需指明是字还是字节。TEST测试指令TEST测试指令 (Test)格式 TEST dst,src。 src可以是立即数。功能 dstsrc,执行完后影响标志位。但是与完后的结果不回送。主要用于对某些位数据的检测,编程时,其后往往紧跟条件转移指令。操作数要求可以是8位或16位寄存器、存储器,不能同时为men。对于存储器操作,需指明是字还是字节。逻辑运算指令总结 除了NOT指令外,其他指令都影响状态标志位。这些指令将根据各自逻辑运算的结果影响SF、ZF和PF状态标志位,同时
18、将CF和OF置“0”,但,但AF的值不确定。 算术逻辑移位指令命令含义时钟数SHL/SAL 逻辑/算术左移220+EA+4*位SHR逻辑右移220+EA+4*位SAR算术右移220+EA+4*位SHL/SAL逻辑算术左移指令SHL/SAL逻辑算术左移指令 (Shift Logic/Arithmetic Left)格式格式 SHL/SAL dst,1/CL。 功能功能 将寄存器或存储器中的目的操作数的各位左移,每移一次,最低有效位LSB补0,而最高有效位MSB进入标志位CF。MSBLSB0CFSHL/SAL逻辑算术左移指令举例MOV AH,06H ;AH06H00000110BSAL AH,1
19、;将AH的内容左移1次,AH 00001100BMOV CL,03HSHL DI,CL ;将DI的内容左移3次SAL BYTE PTRBX ;将内存单元的字节左移1位 左移一次,相当于乘以2,仅移位一次时,可以直接用立即数表示,否则,移位次数必须送入CL中。SHR逻辑右移指令SHR逻辑右移指令 (Shift Logic Right)格式 SHR dst,1/CL。 功能 各位进行右移。每移一次,低位进入CF,最高位补0。MSBLSB0CFSHR逻辑右移指令说明 若目的操作数为无符号数,每右移一次,目的操作数除以2,余数被丢掉。举例用右移的方法作除法1338165。解: MOV AL,1000
20、0101B ;AL133MOV CL,03H ;CL移位次数SHR AL,CL ;右移3次指令执行后,AL10H16,余数5被丢失。标志位CF、AF不定。SAR算术右移指令SAR算术右移指令 (Shift Arithmetic Right)格式格式 SAR dst,1/CL。 功能功能 各位进行右移。每移一次,低位进入CF,最高位保持不变。所谓算术和逻辑的区别就是在右移时,是补符号位还是零。MSBLSBCFSAR算术右移指令说明 若目的操作数为带符号数,每右移一次,目的操作数除以2,余数被丢掉。举例用右移的方法作除法-1288-16。解: MOV AL,1000 0000B ;AL-128 MOV CL,03H ;CL移位次数 SHR AL,CL ;右移3次指令执行后,AL1111,0000B0F0H=-16。循环移位指令命令含义时钟数ROL循环左移220+EA+4*位ROR循环右移220+EA+4*位RCL通过进位的循环左移220+EA+4*位RCR通过进位的循环右移220+EA+4*位ROL循环左移指令ROL循环左移指令 (Rotate Left)格
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年智能饮水设备行业分析报告及未来发展趋势报告
- 2026年镍铝钼合金粉行业分析报告及未来发展趋势报告
- 2026年电镀工业行业分析报告及未来发展趋势报告
- 2026年石头磨粉机行业分析报告及未来发展趋势报告
- 2026年溢水分配器行业分析报告及未来发展趋势报告
- 2026年动物原料药制剂行业分析报告及未来发展趋势报告
- 2026年嗜酸性粒细胞综合征药物行业分析报告及未来发展趋势报告
- 2026年合肥市瑶海区人民武装部民兵教练员招聘2人笔试参考题库及答案解析
- 2026贵阳产业发展控股集团有限公司财务总监招聘2人笔试备考题库及答案解析
- 老年痴呆护理要点指南
- 弹簧机安全操作规程
- 铁路安全警示教育课件
- 新高考数学一轮复习讲练测第8章第07讲 抛物线及其性质(练习)(解析版)
- 物业员工离职交接表
- YW-60挖掘机液压系统
- 2019新人教版高中英语选择性必修四全册课文原文Word(可编辑)
- 加油站夏季安全知识培训
- 初中地理专题讲座发言稿3篇
- 新编高中文言文助读翻译(全部)
- DLT814-2013 配电自动化系统技术规范
- 高二语文选择性必修下册理解性默写及其答案
评论
0/150
提交评论