第5章8086的指令系统_第1页
第5章8086的指令系统_第2页
第5章8086的指令系统_第3页
第5章8086的指令系统_第4页
第5章8086的指令系统_第5页
已阅读5页,还剩214页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、5.1 概述概述5.2 8086/8088的寻址方式的寻址方式5.3 指令格式指令格式5.4 8086 /8088指令系统指令系统习题与思考题习题与思考题第第5章章 INTEL 8080/8088 指令系统指令系统代码段代码段)()()()(BPSIDIBXEAMOV BX,BP(BP)=4000Hdisp 16 disp 8)()()()(位位SIDIBPBXEASI源变址寄存器源变址寄存器TAB 位移量位移量MOV AX,TABSI)()()()(DISIBPBXEA基址寄存器基址寄存器BX:数据段:数据段DS 、BP:堆栈段:堆栈段SS;变址寄存器变址寄存器SI、DI。基址指针寄存器为基

2、址指针寄存器为BP时,段寄存器应为时,段寄存器应为SS;基址寄存器基址寄存器变址寄存器变址寄存器段寄存器为段寄存器为DS段寄存器为段寄存器为SS如果如果(BX)=2000H,(SI)=2000H,(DS) =3000H,则则EA=(BX)+(SI)=2000H+2000H=4000H 物理地址物理地址=(DS)10H+EA=3000H10H+4000H=34000H 如图如图5.6所示。所示。图图5.6 例例5.18的执行情况的执行情况MOV AX,BXSI若若30210H和和30211H中分别存放的数值为中分别存放的数值为56H、78H,则,则指令执行结果指令执行结果(AX)=7856H。如

3、果如果(BX)=0200H,(SI)=0010H,(DS) =3000H,则则EA=(BX)+(SI)=0200H+0010H=0210H物理地址物理地址=(DS)10H+EA=3000H10H+0210H=30210H【例例5.17】 MOV AX,BXSIdisp 16 disp 8)()()()(位位DISIBPBXEA相对寻址相对寻址变址寄存器变址寄存器基址寄存器基址寄存器段寄存器为段寄存器为DS段寄存器为段寄存器为SS【例例5.19】 MOV AX,TABBXSI如果如果 (BX)=1000H,(SI)=2000H,TAB=0150H则有效地址:则有效地址: 逻辑地址逻辑地址 指令执

4、行情况如图指令执行情况如图5.5所示。执行结果为所示。执行结果为(AX)=1234H。EA=(BX)+(SI)+ TAB=3150HDS:EA=DS:3150H【例例5.13】 MOV AH,BX+DI+1234H如果如果 (DS)=4000H , (BX)=0200H,(DI)=0010H, 则则EA= (BX)+(DI)+1234H=1444H物理地址物理地址=41444H 。执行本指令后将。执行本指令后将41444H单元中的单元中的内容传送至内容传送至AH中。中。栈顶栈顶数数N数数2数数1 N 个数用个数用DI或或SI 表示表示dispSS: BP堆栈区堆栈区 相对基址变址寻相对基址变址

5、寻址址为为堆栈处理提供了方堆栈处理提供了方便便。(BP)可指向栈顶可指向栈顶;从栈顶到数组的首地从栈顶到数组的首地址可用位移量址可用位移量disp表示表示;变址寄存器可用来访变址寄存器可用来访问数组中的某个元素。问数组中的某个元素。备注:备注:disp 表表5.3列举了一些相对基址变址寻址方式所用的示例。列举了一些相对基址变址寻址方式所用的示例。表表5-1 段寄存器使用的基本约定段寄存器使用的基本约定访问存储器类型访问存储器类型默认段默认段寄存器寄存器可指定可指定段寄存器段寄存器段内偏移地址段内偏移地址来源来源取取指令指令码码CS无无IP堆栈操作堆栈操作SS无无SP串操作源地址串操作源地址DS

6、CS、ES、SSSI串操作目的地址串操作目的地址ES无无DIBP用作基址寄存器用作基址寄存器SSCS、DS ES根据寻址方式根据寻址方式求得有效地址求得有效地址一般数据存取一般数据存取DSCS、ES、SS根据寻址方式根据寻址方式求得有效地址求得有效地址 )()()()(BPSIDIBXEA)()()(SIDIBXdisp 16 disp 8)()()()(位位SIDIBPBXEA)()()()(DISIBPBXEA基址寄存器基址寄存器变址寄存器变址寄存器段寄存器为段寄存器为DS段寄存器为段寄存器为SSdisp 16 disp 8)()()()(位位DISIBPBXEA相对寻址相对寻址变址寄存器

7、变址寄存器基址寄存器基址寄存器段寄存器为段寄存器为DS段寄存器为段寄存器为SS 堆栈处理提供了方便。堆栈处理提供了方便。图图5.6 例例5.15的执行情况的执行情况jmp 0021H (EA)= (BX)+(SI)+TABLE =(1020H+0002H+0010H) =( 1032H)逻辑地址:逻辑地址:CS:IP=(DS):(IP)=(21032H) (IP)=1234H如果如果(DS)=2000H,(BX)=1020H,(SI)=0002H,TABLE=0010H,(21032H)=1234H,则指令执行后,则指令执行后IP=?【例例5.20】 下列程序段中的下列程序段中的jmp far

8、 ptr next指令执行情况。指令执行情况。 地址地址 机器码机器码代码段代码段15B16:0017 2BC3sub ax,bx5B16:0019 B80000mov ax,05B16:001C EA24001B5Bjmp 5B1B:0024;等效为等效为jmp far ptr next5B16:0021 03C3add ax,bx 地址地址 机器码机器码代码段代码段25B1B:002450 next: push ax5B1B:0025 BE0200 mov si,2图图5.7 例例5.19的执行情况的执行情况【习题与思考【习题与思考】1假定假定DS=2000H,ES=2100H,SS=15

9、00H,SI=00A0H,BX=0100H,BP=0010H,数据变量,数据变量VAL的偏移地址为的偏移地址为0050H,请指出下列指令请指出下列指令源操作数源操作数是什么寻址方式?其物理地址是多是什么寻址方式?其物理地址是多少?少?2已知已知SS=0FFA0H,SP=00B0H,先执行两条把,先执行两条把8057H和和0F79H分别进栈的分别进栈的PUSH指令,再执行一条指令,再执行一条POP指令,试画出指令,试画出堆栈区和堆栈区和SP内容变化的过程示意图。内容变化的过程示意图。(标出存储单元的地址标出存储单元的地址);立即寻址;立即寻址;直接寻址;直接寻址;直接寻址;直接寻址;寄存器间接寻

10、址;寄存器间接寻址;寄存器相对寻址;寄存器相对寻址;基址变址寻址;基址变址寻址;寄存器寻址;寄存器寻址;直接寻址;直接寻址;相对的基址变址寻址;相对的基址变址寻址;隐含寻址;隐含寻址【提问】【提问】 数据寻址:数据寻址: 源操作数的寻址方式源操作数的寻址方式MOV AX,TABLE;等价;等价MOV AX,TABLE;此处此处TABLE为存放操作数单元的为存放操作数单元的符号地址。符号地址。;直接端口寻址方式;直接端口寻址方式;间接端口寻址方式;间接端口寻址方式JMP SHORT 符号地址符号地址 JMP NEAR PTR 符号地址符号地址JMP TABLEBXSI JMP FAR PTR 符

11、号地址符号地址JMP DWORD PTR BX ;段内直接寻址(段内直接寻址(短程转移短程转移);段;段内内直接转移直接转移(近程转移近程转移);段;段内内间接转移间接转移;段;段间直接间直接转移转移;段;段间间接间间接转移转移【提问】【提问】 I/O独立编制的寻址方式独立编制的寻址方式【提问】【提问】 程序转移地址的寻址方式程序转移地址的寻址方式MOV AX,TABLE MOV AX,2000H; 数据传送类指令数据传送类指令 不影响不影响标志寄标志寄存存 器中器中的标志的标志位位影响标志寄存影响标志寄存 器中的标志位器中的标志位MOV BX, BP(BP)=4000H【例例5.19】 MO

12、V AX,TABBXSI如果如果 (BX)=1000H,(SI)=2000H,TAB=0150H则有效地址:则有效地址: 逻辑地址逻辑地址 EA=(BX)+(SI)+ TAB=3150HDS:EA=DS:3150H执行结果为执行结果为 : (AX)=1234HMOV AX,TABBXSI(4) 能实现用立即数给存储单元赋值能实现用立即数给存储单元赋值 MOV AL,AREA1 MOV AREA2,AL 两个段寄存器之间不能直接传送信息,两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初也不允许用立即寻址方式为段寄存器赋初值值;若要令(;若要令(DS)=0,则可以:,则可以:

13、 MOVAX,0; MOVDS,AX; 目的操作数,不能用立即寻址方式。目的操作数,不能用立即寻址方式。40H.56H存储器存储器DS: AREA1DS: AREA240H【例】若要把地址【例】若要把地址(即段内的地址偏移量即段内的地址偏移量)为为AREA1的存储单元的存储单元的内容,传送至的内容,传送至同一段内同一段内的地址为的地址为AREA2的存储单元中去,的存储单元中去,MOV指令不能直接完成这样的传送,但我们可以指令不能直接完成这样的传送,但我们可以CPU内部寄内部寄存器为桥梁来完成这样的传送存器为桥梁来完成这样的传送:栈底栈底230B5栈顶栈顶3654低地址低地址【例如【例如】 MO

14、V AX, 3654H; (AX)=3654H PUSH AX若已知若已知 (SP)=2002SS:2001H;SP=SP-1,SP 操作数高操作数高8位;位;SP-1 操作数低操作数低8位位SP=2002当前位置当前位置SS:2000H高地址高地址【例如【例如】 PUSH BX执行过程为:执行过程为:SP=SP-1,SP=BH;SP=SP-1,SP=BL,如下图所示。如下图所示。 低地址低地址高地址高地址图图5.11 PUSH AX的执行示意图的执行示意图00FFH图图5.12 POP AX的执行示意图的执行示意图SP 操作数低操作数低8位位 ;SP+1 操作数高操作数高8位位, SP=SP

15、+1; SP AL ;SP+1 AH, SP=SP+100FFH【例如】【例如】 MOV BX,OFFSET TABLE MOV AL,8 XLAT ;查表;查表, (AL) 0AAH OUT 1,AL ;I/O端口端口1的的 内容内容0AAH本指令可用在数制转换、函数表查表、代码转换等场合。本指令可用在数制转换、函数表查表、代码转换等场合。第第9个字符个字符 AAH表长度表长度256 AL=(DS)10H(BX)+(AL)= (DS) 10H (TABLE)+8DS:TABLE图图5.15 LEA与与MOV指令的区别指令的区别(BX)=0010H;(BX)=0FF00H图图5.16 LDS指

16、令执行情况指令执行情况指令执行后,指令执行后,(DS)=1000H,(BX)=1234H。【例如【例如】 LDS SI,BX ;将把;将把BX所指的所指的32位地址指位地址指针的段地址部分送入针的段地址部分送入DS,偏移量部分送入,偏移量部分送入SI。LDS指令示意如右图所示。指令示意如右图所示。EA= (BX)DS:EA 算算术术运运算算类类指指令令加加/减法指令:减法指令: ADD ADC AAA DAA SUB SBB DEG CMP AAS DAS乘乘/除法指令除法指令 MUL IMUL AAM DIV IDIV AAD CBW CWD增量增量/减量指令减量指令 INC DEC 十进制

17、十进制(BCD)运算指令运算指令分离式分离式BCD码十进制除法及其十进制调整指令码十进制除法及其十进制调整指令BCD码加法十进制调整:码加法十进制调整: DAAASCII码码加法加法十进制调整:十进制调整:AAABCD码减法十进制调整:码减法十进制调整:AAAASCII码码减法减法十进制调整:十进制调整:AAA图图5.18 多字节加法运算多字节加法运算转移至减法的例子转移至减法的例子图图5.19 加法结果对标志位的影响加法结果对标志位的影响1图图5.21 减法结果对标志位的影响减法结果对标志位的影响MOV AX,THIRD;MUL AX MOV AL,30HCBW MOV BX,2000HMU

18、L BX ;【例例5.38】 若若(AL)=0C5H,(BL)=11H,求执行指令,求执行指令 MUL BL后的乘积值。后的乘积值。 IMUL BL后的乘积值。后的乘积值。 解:解: 则执行后则执行后 :(AX)= 0D15HCF=OF=1, 表示表示AX中存有积的有效值中存有积的有效值执行结果:执行结果:(AX)=FC15HCF=OF=1,表示表示AX中存有积的有效值中存有积的有效值【例如】假设【例如】假设(AL)=0B5H,AL中符号位为中符号位为1, 执行指令执行指令CBW后,后, (AH)=0FFH,即,即 (AX)=0FFB5H。表表3-2 十进制调整指令十进制调整指令指令格式指令格

19、式指令说明指令说明DAA压缩的压缩的BCD码加法调整码加法调整DAS压缩的压缩的BCD码减法调整码减法调整AAA非压缩的非压缩的BCD码加法调整码加法调整AAS非压缩的非压缩的BCD码减法调整码减法调整AAM乘法乘法后后的的BCD码调整码调整AAD除法除法前前的的BCD码调整码调整ASCII码码的调整的调整【例如】若【例如】若AL, BL中的数为中的数为压缩压缩BCD码码 ADD AL,BL DAA若执行前:若执行前:AL=28H,BL=68H,则执行则执行ADD后:后:AL=90H,AF=1;再执行再执行DAA指令后:指令后:正确的结果为:正确的结果为:AL=96H,CF=0,AF=1。加法

20、指令的调整:加法指令的调整:如果如果(AL)039或或AF=1 ,则将,则将(AL)加加06H; 如果如果(AL)479或或CF=1,则将,则将(AL)加去加去60H; 如果如果(AL)039或或AF=1,且且 (AL)479或或CF=1 ,则将,则将(AL)加去加去66H。 编制程序段如下:编制程序段如下:MOVAX,1234H ; MOVBX,5678H ADDAL,BL;(AH)=12, (AL)=ACH, (BX)=5678HDAA ;(AH)=12, (AL)=12H, MOVDL,AL ; 即把即把(AL)的值暂存在的值暂存在(DL)=012H 。MOVAL,AH ; ADCAL,

21、BH ;实现实现1234H中的中的12 和和 5678H中中56相加相加 ; 即即 (AL)=12H+56H+(CF)=69H,DAA ;压缩压缩BCD码的调整码的调整MOVAH,ALMOVAL,DL ;(AX)=6912H,本例是一个将本例是一个将7乘以乘以8的小程序。乘法完成后的结果的小程序。乘法完成后的结果0038H放入寄存器放入寄存器AX中。用指令中。用指令AAM调整后,调整后,AX中存中存放的是放的是0506H,这是乘积,这是乘积56的非压缩的的非压缩的BCD码。码。DST【例如】【例如】 MOV AL,11H OR AL,0FH XORAL,11H 【例如】【例如】 若要检测若要检

22、测 AL中的最低位是否为中的最低位是否为1,为,为1则转移。可则转移。可用以下指令:用以下指令: TEST AL,01H JNZ THERE THERE:若要检测若要检测CX中的内容是否为中的内容是否为0,为,为0则转移。该如何做呢?则转移。该如何做呢?【例如【例如】230B51254低地址低地址DS:BCDBUFF高地址高地址DS:ASCBUF34353231 分析分析:转换公式:转换公式:ASCIIBCD+30H 算法算法:源串和目的串的表首分别设两个指针。取:源串和目的串的表首分别设两个指针。取BCD转转ASCII后存入后存入(先低位,后高位先低位,后高位)【习题与思考【习题与思考】图图

23、5.24 循环移位指令循环移位指令【例例5.47】 试说明下列程序段实现什么功能。试说明下列程序段实现什么功能。SALBX,1;RCLAX,1; RCLDX,1; 由此可得出结论:由此可得出结论:此程序段实现由此程序段实现由DX:AX:BX组成的组成的48位位数乘数乘2的功能。的功能。 (BX)左移左移1位,最高位移入位,最高位移入CF中中 (AX)带进位循环左移带进位循环左移1位,位, (BX)的最高位移入的最高位移入AX中,中, (AX) 最高位移入最高位移入CF中中 (DX)带进位循环左移带进位循环左移1位,位, (AX)的最高位移入的最高位移入DX中,中, (DX) 最高位移入最高位移

24、入CF中中表表3-3重复前缀重复前缀 (p108)汇编汇编格式格式执行过程执行过程影响指令影响指令REP(1)若若(CX)0,则退出;否则,则退出;否则(2)CX=CX-1;(3)执行串后续指令;执行串后续指令;(4)重复重复(1)-(3)MOVS, STOS , LODSREPE/REPZ(1)若若(CX)0或或ZF=0,则退出,则退出;(2)CX=CX-1;(3)执行后续指令;执行后续指令;(4)重复重复(1)-(3)CMPS,SCASREPNE/REPNZ(1)若若(CX) =0或或ZF=1,则退出,则退出;(2)CX=CX-1;(3)执行后续指令;执行后续指令;(4)重复重复(1)-(

25、3)CMPS,SCAS?,DF=0【例如】把【例如】把2000H2063H 的的100个存储单元内容清零。个存储单元内容清零。程序段如下:程序段如下: MOV DI,2063H ;末地址;末地址MOV AL,0 ; MOV CX,100 ;重复次数;重复次数100送送CXSTD ;减量修改;减量修改DI,DF=1 REPSTOSB ;重复执行;重复执行100次次ADD AL,30HSTOSBAND AH,0FHADD AH,30HMOV AL,AHSTOSBLOOPNZ MYSTART表表5.10 条件转移指令表条件转移指令表汇编格式汇编格式 操操 作作 标志位转移指令标志位转移指令JZ /J

26、E /JNZ /JNE OPRD结果为零结果为零/结果不为零转移结果不为零转移JS/JNS OPRD结果为负数结果为负数/结果为正数转移结果为正数转移JP/JPE/JNP/JPO OPRD结果奇偶校验结果奇偶校验为为1/为偶为偶/结果奇偶校验结果奇偶校验为为0/为奇为奇转移转移JO/JNO OPRD结果溢出结果溢出/结果不溢出转移结果不溢出转移JC/JNC OPRD结果有进位(借位)结果有进位(借位)/结果无进位(借位)转移结果无进位(借位)转移“没有没有N”是指相应的标志位为是指相应的标志位为1时,转移;时,转移;“N”是指相应的标志位为是指相应的标志位为0时,转移。时,转移。无符号数比较转

27、移指令无符号数比较转移指令JA/JNBE OPRD高于或不低于等于转移高于或不低于等于转移JAE/JNA OPRD高于等于或不低于转移高于等于或不低于转移JB/JNAE OPRD小于或不大于等于转移小于或不大于等于转移JBE/JNA OPRD小于等于或不大于转移小于等于或不大于转移带符号数比较转移指令带符号数比较转移指令JG/JNLE OPRD大于或不小于等于转移大于或不小于等于转移JGE/JNL OPRD大于等于或不小于转移大于等于或不小于转移JL/JNGE OPRD小于或不大于等于转移小于或不大于等于转移JLE/JNG OPRD小于等于或不大于转移小于等于或不大于转移低于:低于:below

28、高于:高于:above大于:大于:greater小于:小于:less等于:等于:equal 无符无符号数号数有符有符号数号数状态状态标志标志低于:低于:below高于:高于:above大于:大于:greater小于:小于:less L1 L1 L2 L5表表5.6 循环指令表循环指令表 指令格式指令格式执行操作执行操作LOOP OPRDCX=CX-1;若;若CX 0,则循环,则循环LOOPNZ/LOOPNE OPRDCX=CX-1,若,若CX0 且且ZF=0,则循环,则循环LOOPZ/LOOPE OPRDCX=CX-1,若,若CX 0 且且ZF=1,则循环,则循环测试转移指令测试转移指令JCXZ OPRD CX=0 时转移时转移101NN调用及返回指令调用及返回指令调用及返回指令调用及返回指令POP IPPOP CSDST为为 NEAR PTR OPRD表表5.14 标志处理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论