【教学课件】第三章IBMPC机的指令系统和寻址方式.ppt
《【教学课件】第三章IBMPC机的指令系统和寻址方式.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三章IBMPC机的指令系统和寻址方式.ppt(98页珍藏版)》请在三一办公上搜索。
1、1,第三章 IBM PC机的指令系统和寻址方式,指令系统:一组指令集(page 388),指令:,一地址指令:INC AX DEC CX二地址指令:MOV AX,2000H ADD AH,BL,寻址方式:取得操作数地址的方式,2,3.1 IBM PC机的寻址方式,与数据有关的寻址方式与转移地址有关的寻址方式,3.1.1 与数据有关的寻址方式 以 MOV 指令为例,1.立即寻址方式*操作数在指令中给出 MOV AL,5 MOV AX,3064H*只能用于SRC字段*SRC 和 DST的字长一致 MOV AH,3064H,3,2.寄存器寻址方式*操作数在指定的寄存器中 MOV AX,BX MOV
2、AL,BH*字节寄存器只有 AH AL BH BL CH CL DH DL*SRC 和 DST的字长一致 MOV AH,BX*CS不能用MOV指令改变 MOV CS,AX,4,3.直接寻址方式*有效地址EA由指令直接给出 有效地址EA:操作数的偏移地址 物理地址PA=16d(DS)+EA 例:MOV AX,2000H EA=2000H,假设(DS)=3000H,那么(PA)=32000H 例:操作数地址可由变量(符号地址)表示 MOV AH,VALUE(VALUE DB 10),50,30,32000,AH AL,30,50,(AX)=3050H,5,3.直接寻址方式*隐含的段为数据段 DS*
3、可使用段跨越前缀 MOV AX,ES:2000H*使用变量时,要注意变量的属性 VALUE DB 10 MOV AX,VALUE MOV AX,WORD PTR VALUE*适于处理单个变量,6,4.寄存器间接寻址方式*EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中 BX,SI,DI(DS)物理地址=16d(DS)+BP(SS)物理地址=16d(SS)+(BP)MOV AX,BX PA=16d(DS)+(BX)MOV AX,ES:BX PA=16d(ES)+(BX)MOV AX,BP PA=16d(SS)+(BP),(BX)(SI)(DI),7,4.寄存器间接寻址方式*不允许使用A
4、X、CX、DX存放EA MOV AX,CX*SRC 和 DST的字长一致 MOV DL,BX;BX指示一个字节单元 MOV DX,BX;BX指示一个字单元*适于数组、字符串、表格的处理,8,5.寄存器相对寻址方式*例:MOV AX,COUNTSI 或 MOV AX,COUNT+SI 假设(DS)=3000H,(SI)=2000H,COUNT=3000H 那么 PA=35000H 假设(35000H)=1234H,那么(AX)=1234H*适于数组、字符串、表格的处理,有效地址=,(BX)(BP)(SI)(DI),+,8位16位,位移量,9,6.基址变址寻址方式*MOV AX,BXDI 或 MO
5、V AX,BX+DI MOV AX,ES:BXSI*适于数组、字符串、表格的处理*必须是一个基址寄存器和一个变址寄存器的组合 MOV AX,BXBP MOV AX,SIDI,有效地址=,(BX)(BP),+,(SI)(DI),10,7.相对基址变址寻址方式*MOV AX,MASKBXSI 或 MOV AX,MASKBX+SI 或 MOV AX,MASK+BX+SI*适于堆栈处理和数组处理,有效地址=,(BX)(BP),+,(SI)(DI),+,8位16位,位移量,11,例:编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB HAPPY NEW YEAR!,0DH
6、,0AH,$COUNT DW 17 DATA ENDS(1)直接寻址 mov dl,string;mov dl,H mov ah,2 int 21h;显示字符H mov dl,string+1;mov dl,A mov ah,2 int 21h;显示字符A.,12,(2)寄存器间接寻址 mov cx,count;mov cx,17 mov bx,offset string;string的偏址 bx next:mov dl,bx mov ah,2 int 21h;显示一个字符 inc bx loop next;循环指令,(3)寄存器相对寻址 mov cx,count;mov cx,17 mov
7、si,0 next:mov dl,stringsi;mov dl,string+si mov ah,2 int 21h;显示一个字符 inc si loop next;循环指令,13,(4)基址变址寻址 mov cx,count;mov cx,17 mov bx,offset string;string的偏址 bx mov si,0 next:mov dl,bxsi;mov dl,bx+si mov ah,2 int 21h;显示一个字符 inc si loop next;循环指令(5)DOS显示字符串功能 mov dx,offset string;string的偏址 dx;lea dx,st
8、ring mov ah,9 int 21h;显示一串字符,14,3.1.2 与转移地址有关的寻址方式,用来确定 转移指令 及 CALL指令 的转向地址。,段内寻址段间寻址,段内直接寻址段内间接寻址,段间直接寻址段间间接寻址,以 转移(条件转移/无条件转移)指令 为例,段内:转移指令与转向的目标指令在同一代码段中,(CS)不变。段间:转移指令与转向的目标指令在两个代码段中,(CS)变化。,15,1.段内直接寻址 转向的有效地址EA=物理地址=16d(CS)+(IP)新 例:JMP AGAIN(IP)当前 MOV BX,AX AGAIN:例:JMP NEAR PTR NEXT 近转移-32768+
9、32767 JMP SHORT NEXT 短转移-128+127,(IP)当前+位移量(8bit/16bit),(IP)新,(IP)新,16,2.段内间接寻址 转向的有效地址EA是一个寄存器或存储单元的内容。(可用除立即数以外的任何一种数据寻址方式得到)物理地址=16d(CS)+EA 例:(BX)=1256H(SI)=528EH TABLE=20A2H(DS)=2000H(232F8H)=3280H(264E4H)=2450H JMP BX;(IP)=1256H JMP TABLEBX JMP WORD PTR TABLEBX;(IP)=3280H JMP BXSI JMP WORD PTR
10、BXSI;(IP)=2450H,17,3.段间直接寻址 用指令中提供的转向段地址和偏移地址取代CS和IP。物理地址=16d(CS)+(IP)例:,code1 segment jmp far ptr next code1 ends,code2 segment next:.code2 ends,18,4.段间间接寻址 用存储器中的两个相继字的内容取代CS和IP。(存储单元的地址可用除立即数和寄存器以外的任何一种 数据寻址方式得到)物理地址=16d(CS)+(IP)例:JMP DWORD PTR INTERS+BX,19,3.3 IBM PC机的指令系统,数据传送指令 算术指令 逻辑指令 串处理指令
11、 控制转移指令 处理机控制指令,注意:1.指令的基本功能 2.指令的执行对标志位的影响 3.对寻址方式或寄存器使用的限制和隐含使用的情况,20,数据传送指令 通用数据传送指令 累加器专用传送指令 地址传送指令 标志寄存器传送指令,21,通用数据传送指令 传送指令:MOV DST,SRC 执行操作:(DST)(SRC)注意:*DST不能是CS*不影响标志位*DST、SRC不同时为段寄存器 MOV DS,ES*立即数不能直接送段寄存器 MOV DS,2000H,22,例:MOV AX,DATA_SEG MOV DS,AX例:MOV AL,E;MOV AL,45H例:MOV BX,OFFSET TA
12、BLE例:MOV AX,YBPSI,返回,23,进栈指令:PUSH SRC 执行操作:(SP)(SP)-2(SP)+1,(SP)(SRC)出栈指令:POP DST 执行操作:(DST)(SP)+1,(SP)(SP)(SP)+2堆栈:“先进后出”的存储区,存在于堆栈段中,SP在任何 时候都指向栈顶。注意:*堆栈操作必须以字为单位。*不影响标志位*不能用立即寻址方式 PUSH 1234H*DST不能是CS POP CS,24,例:假设(AX)=2107 H,执行 PUSH AX,(SP),低地址,高地址,(SP),07H 21H,低地址,高地址,进栈方向,*,*,*,*,PUSH AX 执行前,P
13、USH AX 执行后,25,例:POP BX,(SP),低地址,高地址,(SP),07H 21H,低地址,高地址,出栈方向,07H21H,(BX)=2107H,POP BX 执行前,POP BX 执行后,*,*,*,*,26,例:PUSH DS SUB AX,AX PUSH AX RET例:PUSH AXPUSH BX POP BXPOP AX,;其间用到AX和BX寄存器,27,交换指令:XCHG OPR1,OPR2 执行操作:(OPR1)(OPR2)注意:*不影响标志位*不允许使用段寄存器 例:XCHG BX,BP+SI XCHG AL,BH,28,累加器专用传送指令(只限于使用AX或AL)
14、输入指令(I/O CPU)长格式:IN AL,PORT(字节)IN AX,PORT(字)执行操作:(AL)(PORT)(字节)(AX)(PORT+1,PORT)(字)短格式:IN AL,DX(字节)IN AX,DX(字)执行操作:(AL)(DX)(字节)(AX)(DX)+1,(DX)(字),29,输出指令(CPU I/O)长格式:OUT PORT,AL(字节)OUT PORT,AX(字)执行操作:(PORT)(AL)(字节)(PORT+1,PORT)(AX)(字)短格式:OUT DX,AL(字节)OUT DX,AX(字)执行操作:(DX)(AL)(字节)(DX)+1,(DX)(AX)(字),3
15、0,注意:*不影响标志位*前256个端口号00HFFH可直接在指令中指定(长格式)*如果端口号 256,端口号 DX(短格式)例:IN AX,28H;MOV DX,28H;IN AX,DX MOV DATA_WORD,AX例:MOV DX,3FCH 例:OUT 5,AL IN AX,DX例:测试某状态寄存器(端口号27H)的第2位是否为1 IN AL,27H TEST AL,00000100B JNZ ERROR;若第2位为1,转到ERROR处理,31,例 8.1Sound程序(page 204),mov dx,100 in al,61h and al,11111100bsound:xor a
16、l,2 out 61h,al mov cx,140hwait1:loop wait1 dec dx jne sound,设备控制寄存器,端口61H,1/0 0,控制其它外部设备,与门,放大器,2号定时器门控,1 0,32,换码指令:XLAT 或XLAT OPR执行操作:(AL)(BX)+(AL)例:MOV BX,OFFSET TABLE;(BX)=0040H MOV AL,3 XLAT TABLE 指令执行后(AL)=33H注意:*不影响标志位*字节表格(长度不超过256)首地址(BX)*需转换代码(AL),33,地址传送指令 有效地址送寄存器指令:LEA REG,SRC 执行操作:(REG)
17、SRC 指针送寄存器和DS指令:LDS REG,SRC 执行操作:(REG)(SRC)(DS)(SRC+2)4个相继字节 寄存器(通常是SI)、DS 指针送寄存器和ES指令:LES REG,SRC 执行操作:(REG)(SRC)(ES)(SRC+2)4个相继字节 寄存器(通常是DI)、ES,34,例:LEA BX,BX+SI+0F62H 例:LDS SI,10H例:LES DI,BX例:,(DS):1000H 40 H,00 H,00 H,30 H,TABLE,MOV BX,TABLE;(BX)=0040HMOV BX,OFFSET TABLE;(BX)=1000HLEA BX,TABLE;(
18、BX)=1000HLDS BX,TABLE;(BX)=0040H;(DS)=3000HLES BX,TABLE;(BX)=0040H;(ES)=3000H,注意:*不影响标志位*REG不能是段寄存器*SRC必须为存储器寻址方式,35,标志寄存器传送指令 标志送AH指令:LAHF 执行操作:(AH)(PSW的低字节)AH送标志寄存器指令:SAHF 执行操作:(PSW的低字节)(AH)标志进栈指令:PUSHF 执行操作:(SP)(SP)-2(SP)+1,(SP)(PSW)标志出栈指令:POPF 执行操作:(PSW)(SP)+1,(SP)(SP)(SP)+2*影响标志位,36,3.3.2 算术指令
19、加法指令 减法指令 乘法指令 除法指令 十进制调整指令,37,加法指令 加法指令:ADD DST,SRC 执行操作:(DST)(SRC)+(DST)带进位加法指令:ADC DST,SRC 执行操作:(DST)(SRC)+(DST)+CF 加1指令:INC OPR 执行操作:(OPR)(OPR)+1,注意:*除INC指令不影响CF标志外,均对条件标志位 有影响。,38,加法指令对条件标志位(CF/OF/ZF/SF)的影响:,CF位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。,39,n=8bit 带符号数(-128127)无符号数(0255),40,例:双精度数的加法(DX)=0002H
20、(AX)=0F365H(BX)=0005H(CX)=0E024H 指令序列(1)ADD AX,CX(2)ADC DX,BX(1)执行后,(AX)=0D389H CF=1 OF=0 SF=1 ZF=0(2)执行后,(DX)=0008H CF=0 OF=0 SF=0 ZF=0,41,减法指令 减法指令:SUB DST,SRC 执行操作:(DST)(DST)-(SRC)带借位减法指令:SBB DST,SRC 执行操作:(DST)(DST)-(SRC)-CF 减1指令:DEC OPR 执行操作:(OPR)(OPR)-1 求补指令:NEG OPR 执行操作:(OPR)-(OPR)比较指令:CMP OPR
21、1,OPR2 执行操作:(OPR1)-(OPR2),注意:*除DEC指令不影响 CF标志外,均对条 件标志位有影响。,42,减法指令对条件标志位(CF/OF/ZF/SF)的影响:,CF位表示无符号数减法的溢出。OF位表示带符号数减法的溢出。NEG指令对CF/OF的影响:CF位:操作数为0时,求补的结果使CF=0,否则CF=1。OF位:字节运算对-128求补或字运算对-32768求补时OF=1,否则OF=0。,或,43,例:x、y、z均为双精度数,分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现 w x+y+24-z,并用W,W+2单元存放w。MOV AX,X MO
22、V DX,X+2 ADD AX,Y ADC DX,Y+2;x+y ADD AX,24 ADC DX,0;x+y+24 SUB AX,Z SBB DX,Z+2;x+y+24-z MOV W,AX MOV W+2,DX;结果存入W,W+2单元,44,乘法指令 无符号数乘法指令:MUL SRC 执行操作:字节操作数(AX)(AL)*(SRC)字操作数(DX,AX)(AX)*(SRC)带符号数乘法指令:IMUL SRC,注意:*AL(AX)为隐含的乘数寄存器。*AX(DX,AX)为隐含的乘积寄存器。*SRC不能为立即数。*除CF和OF外,对条件标志位无定义。,45,乘法指令对CF/OF的影响:,例:(
23、AX)=16A5H,(BX)=0611H(1)IMUL BL;(AX)(AL)*(BL);A5*11 5B*11=060B F9F5;(AX)=0F9F5H CF=OF=1(2)MUL BX;(DX,AX)(AX)*(BX);16A5*0611=0089 5EF5;(DX)=0089H(AX)=5EF5H CF=OF=1,46,除法指令 无符号数除法指令:DIV SRC 执行操作:字节操作(AL)(AX)/(SRC)的商(AH)(AX)/(SRC)的余数 字操作(AX)(DX,AX)/(SRC)的商(DX)(DX,AX)/(SRC)的余数 带符号数除法指令:IDIV SRC注意:*AX(DX,
24、AX)为隐含的被除数寄存器。*AL(AX)为隐含的商寄存器。*AH(DX)为隐含的余数寄存器。*SRC不能为立即数。*对所有条件标志位均无定义。,47,符号扩展指令:CBW AL AX 执行操作:若(AL)的最高有效位为0,则(AH)=00H 若(AL)的最高有效位为1,则(AH)=0FFH CWD AX(DX,AX)执行操作:若(AX)的最高有效位为0,则(DX)=0000H 若(AX)的最高有效位为1,则(DX)=0FFFFH,注意:*无操作数指令*隐含对AL或AX进行符号扩展*不影响条件标志位,例:(AX)=0BA45H CBW;(AX)=0045H CWD;(DX)=0FFFFH(AX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第三 IBMPC 指令系统 寻址 方式
链接地址:https://www.31ppt.com/p-5660639.html