微机原理-寻址方式指令系统【稻谷书店】

上传人:枫** 文档编号:568206174 上传时间:2024-07-23 格式:PPT 页数:71 大小:1.31MB
返回 下载 相关 举报
微机原理-寻址方式指令系统【稻谷书店】_第1页
第1页 / 共71页
微机原理-寻址方式指令系统【稻谷书店】_第2页
第2页 / 共71页
微机原理-寻址方式指令系统【稻谷书店】_第3页
第3页 / 共71页
微机原理-寻址方式指令系统【稻谷书店】_第4页
第4页 / 共71页
微机原理-寻址方式指令系统【稻谷书店】_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《微机原理-寻址方式指令系统【稻谷书店】》由会员分享,可在线阅读,更多相关《微机原理-寻址方式指令系统【稻谷书店】(71页珍藏版)》请在金锄头文库上搜索。

1、微机原理及应用聊城大学物理系技术物理实验室2002年10月7日Tel:8258859 Email:,1 1行业参考行业参考第2章 8086/8088的寻址方式和指令系统2.2.22.2.2指令执行时间指令执行时间2.3 8086/80882.3 8086/8088指令系统指令系统2.3.1 2.3.1 数据传送指令数据传送指令2.3.2 2.3.2 算术运算指令算术运算指令作业:习题集作业:习题集P6P6 2-2 2-5 2-8 2-10 2-2 2-5 2-8 2-10 2-17 2-25 2-30 2-17 2-25 2-30 2 2行业参考行业参考2.3 8086/8088指令系统可分成

2、如下6类:l l数据传送指令l l算术运算指令l l逻辑运算和位移指令l l串操作指令l l控制转移指令l l处理器控制指令3 3行业参考行业参考2.3.1 数据传送指令用 来 实 现 : 寄 寄 , CPU存CPUI/O 之间的数据传送。这是一种最基本、最重要的操作。这类指令又可分为如下四种:1.1.通用传送2.2.累加器专用传送3.3.地址传送4.4.标志传送4 4行业参考行业参考 1.通用传送指令 (1)MOV dst,src; dstsrc 传送的是字节还是字取决于指令中涉及的寄存器是8位还是16位。具体来说可实现: MOV mem/reg1 ,mem/reg2式中两操作数中至少有一个

3、为寄存器 例:MOV CL,DLMOV AX,BXMOV SI,CXMOV CL,BX+55 5行业参考行业参考MOVreg,data ;立即数送寄存器MOVmem/reg,dataMOVac,mem ;存储单元送累加器MOVmem,ac ;累加器送存储单元MOVsegreg,mem/reg;段寄 存/寄MOVmem/reg,segreg;存/寄 段寄6 6行业参考行业参考对MOV指令小结可执行:寄寄 ;但CS,IP不能作目的寄存器寄存 ;不能:存存寄,存段寄 ;不能:段寄段寄寄立即数 ;不能:段寄立即数存立即数7 7行业参考行业参考几个不能送的解决办法:MOVAL,mem1 ;通过寄存器AL

4、作桥梁MOVmem2,AL ;用来解决存存MOVAX,DS;通过AX解决:MOVES,AX;段寄段寄MOVAX,data ;通过AX解决:MOVDS,AX;段寄立即数8 8行业参考行业参考 举例:将1000H开始的100个存储单元送上ASCII码2AH(*)。程序段如下: MOVSI,1000H MOVCX,64H MOVAL,2AHAGAIN:MOVSI,AL INCSI DECCX JNZ AGAIN INT20H ;若(CX)=0,返回DOS9 9行业参考行业参考 上程序段存放在码段中,设(CS)=109EH,则各条指令存放地址如下:109E:0100 MOV SI, 1000H109E

5、:0103 MOV CX, 64H109E:0106 MOV AL, 2AH109E:0108 MOV SI,AL109E:010A INC SI109E:010B DEC CX109E:010C JNZ 0108109E:010E INT 20H109E:01101010行业参考行业参考 送上2AH(*)后。数据段中相应存储单元的内容改变如下:DS:1000 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A *DS:1010 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A *DS:1020 2A 2

6、A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A *DS:1030 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A *DS:1040 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A *DS:1050 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A *DS:1060 2A 2A 2A 2A 00 00 00 00 00 00 00 00 00 00 00 00 *1111行业参考行业参考堆栈:在内存中开辟若干单元作为

7、栈区,按 后进先出 方式工作。为什么要设置堆栈?为什么要按 后进先出 方式工作? 参见图2-7“”(2)堆栈操作指令1212行业参考行业参考主程序IPIP(下)继续执行主程序执行子程序转子程序压栈弹出返回主程序主程序IPIP(下)继续执行主程序转子程序1返回主程序IP执行子程序 2转子程序2返回子程序1IP(下)执行子程序1继续执行子程序1(a)(b)图2-7 子程序调用示意图(a) 主程序调子程序;(b) 子程序嵌套示意图1313行业参考行业参考 堆栈规定设置在堆栈段SS内,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。 压栈指令 PUSH src例:PUSH AX;将A

8、X内容压栈 执行操作:(SP)-1高字节AH (SP)-2低字节AL (SP)(SP)-21414行业参考行业参考设(AX)=1020H,执行示意图如图(SP)低地址存储区(SS段)执行前(AX)=1020(SP)低地址存储区(SS段)进栈方向执行后2010ALAH图2-8 PUSH AX指令执行示意图2-8图2-8 PUSH AX指令执行示意图(SP)-1(SP)-21515行业参考行业参考压栈指令的格式为:PUSH regPUSH mem/regPUSH segreg 弹出指令POP dst例:POPBX;将栈顶内容弹至BX执行操作:(BL)(SP) (BH)(SP)+1 (SP)(SP)

9、+2注意进栈方向是高地址向低地址发展。1616行业参考行业参考POP BX 的执行示意图如图2-9所示(SP)低地址存储区(SS段)出栈方向执行前2010图2-9 POP BX指令执行示意图(SP)低地址存储区(SS段)执行后(BX)=10202010(SP)+1(SP)+21717行业参考行业参考 POP指令的格式同PUSH指令,堆栈指令使用时应注意两点:堆栈操作总是按字进行不能从栈顶弹出一个字给CS1818行业参考行业参考格式为:XCHG reg,mem/reg要求两操作数中必须有一个在寄存器中,不允许使用段寄存器。 举例:XCHG AX,BX XCHG 2000,CL(3)交换指令XCH

10、G1919行业参考行业参考2. 累加器专用传送指令 所谓专用只限于用累加器AL或AX来传送信息。 完成的操作:CPUI/O端口(1)输入指令IN格式:IN ac,port ;port端口号0255H IN ac,DX ;DX表示的端口范围达64K例:IN AL,80H ;(AL)(80H) IN AX,DX ;(AX)((DX)+1,(DX))2020行业参考行业参考例:OUT 68H,AX ;(68+1,68H)(AX) OUT DX,AL ;(DX)(AL) 在使用间接的IN/OUT指令时,在指令执行前,应先用传送指令对DX寄存器设置好端口号,如:MOV DX,220HINAL,DX;将2

11、20H端口内容读 入AL累加器(2)输出指令OUT格式:OUT port,ac OUT DX,ac2121行业参考行业参考 (3)换码指令XLAT 执行的操作:(AL)(BX)+(AL) 又叫查表转换指令,它可根据表中代码的序号查出表中对应代码的内容。执行时先将表的首地址(偏移地址)送到BX中,代码序号存于AL中。 例如:内存数据段有一张16进制数的ASCII码表,设首地址为2000H,如图2-10所示,如欲查出表中第11个代码(代码序号从0开始)即 B 的ASCII码,(表中地址设(DS)=4000H) 2222行业参考行业参考303132.394142.4546.42000H+042000

12、H+110129ABEF图2-10 十六进制数ASCII码表存储器2323行业参考行业参考 MOV BX,2000H ;(BX)表首地址 MOV AL,0BH ;(AL)序号 XALT ; 查表转换 执行后得到:(AL)=42H 3。地址传送指令 共有三条,它们是:(1)LEA reg,mem ;将指定存储器的16 位偏址送指定寄存器. 指令要求源操作数必须是一个内存操作数,目的操作数必须是一个16位的通用寄存器。则可用如下几条指令实现:2424行业参考行业参考设:(SI)=1000H则执行该指令后,(BX)=1010H注意以下两条指令差别:LEA BX,BUFFER 和 MOV BX,BUF

13、FER下面两条指令等效: LEA BX,BUFFER 和 MOV BX, OFFSET BUFFER其中OFFSET BUFFER表示存储器BUFFER的偏移地址。例:LEABX,SI+10H2525行业参考行业参考(2)LDS reg,mem32;把指定存储器的内 容送入指定的寄存器 传送的是一个32位的地址指针,将存储器的前两个单元的内容(16位偏址)送入指定的寄存器,后两个单元的内容(段地址)送入DS。例:LDSSI,0100H若指令执行前(DS)=3000H,(30100H)=0200H(30102H)=1000H,则指令执行后(SI)=0200H,(DS)=1000H2626行业参考

14、行业参考 与LDS指令类似,将32位地址指针送指定的寄存器(常指定为DI)及ES. 4。标志传送指令 共有四条:(1)读标志指令LAHF 本指令把标志寄存器低8位中的5个标志位传送到AH中的指定位,如下图2-11所示(3)LES reg,mem322727行业参考行业参考OF DF IF TF SF ZFAFPFCFAHFLAG图2-11 LAHF指令的功能(2) 设置标志指令SAHF SAHF的功能与LAHF的功能正好相反,用图来示意,只要将图2-11中5个箭头方向反一下即可。2828行业参考行业参考 执行的操作:(SP)-1标志寄存器高8位 (SP)-2标志寄存器低8位 (SP) (SP)

15、-2(4)从栈顶弹出标志寄存器指令POPF 执行的操作:标志寄存器低8位(SP) 标志寄存器高8位(SP)+1 (SP)(SP)+2 PUSHF和POPF指令用于保护和恢复标志寄存器内容(3)把标志寄存器推入栈顶指令PUSHF2929行业参考行业参考 例如: PUSHPUSHAXAX PUSH PUSHCXCX PUSHFPUSHF . . 这段程序要用到这段程序要用到AXAX,CXCX以及标以及标 . . 志位志位, ,可能改变可能改变 . . POPFPOPF;恢复时,后入栈先弹出;恢复时,后入栈先弹出 POPPOPCXCX POP POPAXAX 关于数据传送指令对标志位的影响,除SAH

16、F和POPF这两条指令外,其余所有指令均不影响标志位。3030行业参考行业参考2.3.2 算术运算指令 算术运算指令涉及两种类型数据,即无符号数和有符号数。对加法指令和减法指令而言,无符号和有符号数可采用同一套指令,其条件有两个:n n一是参加的操作数必须同为无符号数或同为有符号数。n n二是要采用不同标志位来检查无符号数和有符号数的运算结果是否溢出。3131行业参考行业参考n n下面看一下两个8位数相加时的4种情况:无符号数和有符号数均不溢出二进制相加 无符号数加有符号数加 0000 1000 8 +8+0001 1110 +30 +(+30) 0010 0110 38 +38 结果38 C

17、F=0 OF=03232行业参考行业参考 无符号数溢出 0000 1000 8 +80000 1000 8 +8+1111 1101+1111 1101 +253+253 +(-3)+(-3)1 10000 0101 261 +50000 0101 261 +5 结果结果5 5 CF=1CF=1OF=0OF=0 有符号数溢出 0000 1000 8 +80000 1000 8 +8+0111 1101+0111 1101 +125+125 + +(+125+125) 1000 0101 133 +1331000 0101 133 +133结果结果-123-123 CF=0 OF=1CF=0 O

18、F=1(补码表示)(补码表示)3333行业参考行业参考 无符号数和有符号数均溢出无符号数和有符号数均溢出 1000 1000 136 -1201000 1000 136 -120+1111 0111+1111 0111 +247+247 + +(-9-9)1 10111 1111 383 -1290111 1111 383 -129 结果结果127 127 CF=1 OF=1CF=1 OF=1上上面面四四种种情情况况清清楚楚说说明明,CFCF标标志志可可用用来来表表示示无无符符号号数数的的溢溢出出,OFOF标标志志可可用用来来表表示示有有符符号号数数的的溢出溢出。 需要指出的是有符号数的溢出是

19、一种出错,在运算过程中应当避免。3434行业参考行业参考 共有共有5 5条指令条指令: :(1) 不带进位的加法指令ADD. 格式有:格式有:ADDADD ac,dataac,data ADD ADD mem/reg,datamem/reg,data ADD ADD mem/reg1,mem/reg2mem/reg1,mem/reg2例例:ADDADDALAL,30H 30H ADD ADDAXAX,BX+20HBX+20H ADD ADDCXCX,SISI ADD ADDDIDI,200H200HADDADD指令对指令对标志位标志位(指(指状态标志状态标志)都有影响都有影响. .1. 加法指

20、令3535行业参考行业参考(2) 带进位位的加法指令ADC ADC指令在形式上和功能上都有与ADD类似,只是在相加时要把进位标志的现行值CF加到和中,例如: ADC AL,68H ADC AX,CX ADC BX,DI3636行业参考行业参考 例:有两个4字节的无符号数相加: 2C56F8ACH+309E47BEH=? 设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,要求和放回BUFFER1存储区,如下页图所示。 因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行ADC指令主要用于多字节加法运算中.3737行业参考行业参考56H2CHBEH47H.BUFF

21、ER1BUFFER2ACHF8H9EH30H被加数加数数据段图2-12 多字节加法示意图 .3838行业参考行业参考程序段如下: MOV CXMOV CX,4 4 ;置循环次数;置循环次数 MOV SIMOV SI,0 0 ;置;置SISI初值为零初值为零 CLCCLC ;清进位标志;清进位标志CFCFAGAINAGAIN:MOVMOV AL AL,BUFFER2SIBUFFER2SI ADCADC BUFFER1SI BUFFER1SI,ALAL INC INC SI SI DEC DEC CX CX JNZ AGAIN JNZ AGAIN INT 20H INT 20H其中:MOV AL,

22、BUFFER2SI和 MOV AL,BUFFER2+SI等效思考:若最高位有进位,如何改?3939行业参考行业参考2.3.3 算术运算指令 1.加法指令 2.减法指令 3.乘法指令 4.除法指令2.3.3 逻辑运算和移位指令4040行业参考行业参考 格式: INC reg INCreg/mem 例: INC AL INC BYTE PTRBX+4本指令除CF外,对其余标志均有影响。(4)BCD码的加法十进制调正指令AAA和DAAn nAAA 本指令对在AL中的由两个未组合的BCD码相加后的结果进行调正,得到一个正确的未组合的BCD码。(3) 加1指令INC(单操作数指令)4141行业参考行业参

23、考例1: MOV AL,08 0000 1000 ADD AL,07 +0000 0111 0000 1111 结果应为15,而计算机相加为0FH,原因在于运算过程中,如遇到低4位往高4位产生进位时(此时AF=1)按逢十六进一的规则,但BCD码要求逢十进一,因此只要产生进位就会丢掉一个6,这就要进行加6调正。4242行业参考行业参考 实际上当低4位的结果9(即AF之间)时,也应进行加6调正。 如上面的结果进行加6得: 0000 1111 + 0000 0110 0001 01014343行业参考行业参考 如AL的低4位9或AF=1,则: (AL)(AL)+6,(AH)(AH)+1,AF1 (A

24、L)(AL)0FH) CFAF 否则(AL)(AL)0FH)再来看前例,用如下程序段可得正确结果 MOVAL,08H ADDAL,07H AAAAAA指令的调正步骤:4444行业参考行业参考例2:计算2659+3619=? 设被加数和加数的每一位都以ASCII码形式存放在内存中,低位在前,高位在后,另留出5个单元存相加的结果。 如下页图2-13示4545行业参考行业参考36H32H39H31H.STRING1STRING239H35H36H33H被加数加数数据段95629163SUM结果图2-134646行业参考行业参考程序段如右: LEALEA SISI,STRING1STRING1 LEA

25、LEA DIDI,STRING2STRING2 LEA LEABXBX,SUMSUM MOV MOVCXCX,4 4 CLC CLC AGAIN AGAIN: MOVMOV ALAL,SISI ADCADCALAL,DIDI AAAAAA MOV MOVBXBX,ALAL INC INCSISI INC INCDIDI INC INCBXBX DEC DECCXCX JNZ JNZ AGAINAGAIN4747行业参考行业参考 根据程序请为SUM填写出结果,若最高位有进位,程序如何修改? 从此例不难看出,AAA又被称为加法的ASCII调正指令。 AAA指令只影响AF和CF,其余标志无定义。48

26、48行业参考行业参考n nDAA 两个组合的BCD码相加结果在AL中,通过DAA调正得到一个正确的组合的BCD码.指令调正方法: 若AL的低4位9或AF=1 则(AL) (AL)+6,且AF1 若AL的高4位9或CF=1 则(AL) (AL)+60H,且CF1与AAA不同,DAA指令不改变AH的内容。 DAA指令对OF无定义,但影响所有其它标志。4949行业参考行业参考举例: 0100 1000 MOV AL,48H +0111 0100 MOV BL,74H 1011 1100 ADD AL,BL +0110 0110 DAA 1 0010 0010(进位) 执行ADD后,(AL)=BCH,

27、高4位、低4位均大于9,故DAA指令执行加66调正,最后结果为:(AL)=22H,CF=1,AF=1使用AAA和DAA这两条指令时,应紧跟在ADD或ADC指令之后。5050行业参考行业参考 8086/8088共有7条减法指令(1) 不考虑借位的减法指令SUB其操作数格式同ADD,即 SUBac,data SUBmem/reg,data SUBmem/reg1,mem/reg2例:SUBAL,60H SUBBX+20H,5678H SUBAX,CX2. 减法指令5151行业参考行业参考 本指令在形式上和功能上都和SUB类似,只是相减时还应减去CF的值。例:SBBAX,CX SBBWORD PTR

28、SI,2080H SBB指令主要用于多字节的减法。因无符号数的小数减大数时,不够减而产生借位,此时进位标志CF=1。(2) 考虑借位的减法指令SBB5252行业参考行业参考操作数格式:DECreg DECmem/reg例:DECCL DECBYTE PTRDI+2 以上三条指令除DEC不影响CF外,都对标志位有影响。(3) 减1指令DEC5353行业参考行业参考 因对一个操作数取补码相当于用0减去此操作数,故NEG执行的是减法运算。例:NEGAL;对AL中的数取补码 若(AL)=0,执行后(AL)=0,CF=0 若(AL)=FCH, 执行后(AL)=04H,CF=1 FCH是-4的补码,执行后

29、(AL)=04,故利用NEG指令可得到负数的绝对值。 如果操作数的值为80H(-128)或8000H (-32768),则执行求补指令后,结果不变,但OF=1。 本指令对6个标志位均有影响.(4) 求补指令NEG5454行业参考行业参考 CMP也是执行两个操作数相减,但不送回结果,其结果只反映在标志位上。例:CMPAL,0AH;AL与0AH比较 CMPCX,SI;CX与SI比较 CMPDI,BX+03;DI与存储器比较 比较指令影响所有标志位。 如何根据标志位来判断两个操作数的比较结果呢? 若两个所比较的数相等,则ZF=1,否则ZF=0 这样根据ZF就可判断两个数是否相等。(5) 比较指令CM

30、P(操作数格式同SUB)5555行业参考行业参考断谁大谁小呢?分两种情况考虑:比较的是两个无符号数 若CF=0,则被减数大,因大数减小数无须借位. 若CF=1,则被减数小.比较的是两个有符号数 若两个数都是正数或负数时,相减不溢出(即OF=0),可用SF来判断,若SF=0,表示被减数大,SF=1则反之.若两个数不相等,如何根据标志位来判5656行业参考行业参考此时不能单看SF,还需考虑OF,判别条件: OF=0时,若SF=0被减数大;若SF=1减数大. OF=1时,若SF=1被减数大;若SF=0减数大. 也可归纳为:OFSF=0时(或SF=OF),被减数大. OFSF=1时(或SF=OF),减

31、数大. 比较指令在使用时,一般在其后紧跟一条条件转移指令,判断比较结果的转向。 例如有符号数比较结果的条件转移指令:若比较的数中有一个为正,另一个为负,5757行业参考行业参考JG/JNLE;大于转移,条件OFSF=0,且ZF=0JLE/JNG;小于或等于转移,条件OFSF=1 或ZF=1举例:比较AL、BL、CL中带符号数的大小,将最小数放在AL中。程序段如下: CMP AL,BLCMP AL,BL;ALAL和和BLBL比较比较 JNG BBBJNG BBB ;若;若ALBL,ALBL,则转则转 XCHG AL,BLXCHG AL,BL;若;若ALBL,ALBL,则交换则交换BBB: CMP

32、 AL,CLBBB: CMP AL,CL;ALAL和和CLCL比较比较 JNG CCCJNG CCC ;若;若ALCL,ALCL,则转则转 XCHG AL,CLXCHG AL,CL;若;若ALCL,ALCL,则交换则交换CCC: INTCCC: INT 20H 20H ;返回;返回DOSDOS5858行业参考行业参考AAS 对AL中由两个未组合的BCD码相减的结 果进行调正。 调正操作为: 若AL的低4位9或AF=1,则: (AL)(AL)-6,(AH)(AH)-1,AF1 (AL)(AL)0FH) CFAF 否则:(AL)(AL)0FH)(6) BCD码的减法十进制调正指令AAS和DAS59

33、59行业参考行业参考举例:16-8=? 0000 0110 MOV AX,0106H -0000 1000 MOV BL,08H 1111 1110 SUB AL,BL - 0000 0110 AAS 1111 1000 0000 1111 0000 1000结果为:(AL)=08H,(AH)=0,CF=AF=16060行业参考行业参考n n 结果应在AL中。调正操作为: 若AL的低4位9或AF=1,则: (AL)(AL)-6,且AF1 若AL的高4位9或CF=1,则: (AL)(AL)-60H,且CF1 DAS对OF无定义,但影响其余标志位。 AAS和DAS这两条指令在使用时要求紧跟在减法指

34、令之后。 DAS 对两个组合的BCD码减法进行调正,6161行业参考行业参考 进行乘法时:8位*8位16位乘积16位*16位32位乘积(1) 无符号数的乘法指令MUL(MEM/REG) 使用乘法指令对被乘数和乘积的存放地方均有规定: 被乘数存放地方被乘数存放地方 乘积存放地方乘积存放地方对字节乘 AL AX对字乘 AX DX,AX例:MUL BL ;AL* BL,乘积在AX中 MULCX ;AX* CX,乘积在DX和AX中 MULBYTE PTRBX3. 乘法指令6262行业参考行业参考 该指令在功能上和形式上与MUL类似,只是要求两乘数均为有符号数。 例:IMULCL ;AL中有符号数*CL

35、中 有符号数 IMULWORD PTRSI 举例:设(AL)=FEH,(CL)=11H 将FEH及11H均看做无符号数 执行MUL CL (可用二进制相乘算出来)得(AX)=10DEH=4318(2) 有符号数乘法指令IMUL(MEM/REG)6363行业参考行业参考将FEH及11H均看做有符号数 执行IMUL CL 得(AX)=FFDEH=-34 其实这个结果也可以手算出来,FEH是用补码表示的,它的真值为-2,先将两个数的绝对值相乘: 0000 00100000 0010 * 0001 0001 * 0001 0001 0000 0010 0000 0010 0000 0010 0000

36、0010 0000 0000 0010 0010 0000 0000 0010 0010 因负数乘正数乘积符号为负,需将上乘积绝对值取补码,得:1111 1111 1101 11106464行业参考行业参考(3) BCD码的乘法十进制调正指令AAM 先执行MUL把两个非组合的BCD码相乘,结果在AX中,再执行AAM进行调正,得到正确的结果。调正的操作为: (AL)/0AH,(AH)商 (AL)余数6565行业参考行业参考例:要求进行如下十进制乘法运算:7*8=? 可编程如下:MOV AL,07H;(AL)=07HMOV CL,08H;(CL)=08HMUL CL;(AX)=0038HAAM;(

37、AH)=05H,(AL)=06H 所得结果为非组合的BCD码。该指令影响标志位PF、SF、ZF,对其余标志位无定义。6666行业参考行业参考4. 除法指令 8086/8088 CPU执行除法运算,要求被除数字长为除数字长的两倍,并对被除数、商及余数存放地方有如下规定:被除数商余数字节除法 AX AL AH字除法DX:AXAX DX6767行业参考行业参考例:DIV CL ;AX除以CL DIV WORD PTRBX ;DX:AX除以 BX,BX+1两存储器(16位)若除数为零或AL中商大于FFH,(或AX中商大于FFFFH),则CPU产生一个类型0的内部中断。(2) 有符号数除法指令IDIV(

38、MEM/REG)本指令除要求有符号数相除外,在功能上和形式上与DIV类似。当然其商及余数均为有符号数,且余数符号总是与被除数符号相同。(1) 无符号数除法指令DIV(MEM/REG)6868行业参考行业参考 商-6,余数+1或商-7,余数-3 给出的结果为前一种:举例: IDIV BX ;DX:AX除以BX IDIV BYTE PTRSI;AX除以存储器(8位) 字节相除若商超过了-128+127,或字相除,若商超过了-32768+32767的范围,则自动产生一个类型0的中断。 这两条除法指令对标志位无影响。例:25除-4有两种结果:6969行业参考行业参考n n下面讨论扩展指令,前面已指出除法运算要求被除数字长是除数字长的两倍,若不满足则需对被除数进行扩展,否则产生错误。n n对于无符号数除法扩展很简单,只需将AH或DX清零即可。n n对有符号数而言,则是符号位的扩展。共提供了两条指令。7070行业参考行业参考 指令的操作为:若(AL)80H则(AH)0若(AL)80H则(AH)FF(5) 将字扩展为双字的指令CWD指令的操作为:若(AX)8000H则(DX)0 若(AX)8000H则(DX)FFFFHn n这两条扩展指令均不影响标志位。(4) 将字节扩展成字的指令CBW7171行业参考行业参考

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号