【教学课件】第三章IBMPC机的指令系统和寻址方式.ppt
《【教学课件】第三章IBMPC机的指令系统和寻址方式.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三章IBMPC机的指令系统和寻址方式.ppt(98页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 IBM PC机的指令系统和寻址方式机的指令系统和寻址方式指令系统指令系统:一组指令集一组指令集 (page 388)(page 388)操作码操作码 操作数操作数 .操作操作数数指令:指令:一地址指令:一地址指令:INC AX DEC CX二地址指令:二地址指令:MOV AX,2000H ADD AH,BL 寻址方式寻址方式:取得操作数地址的方式取得操作数地址的方式13.1 IBM PC机的寻址方式机的寻址方式与数据有关的寻址方式与数据有关的寻址方式与转移地址有关的寻址方式与转移地址有关的寻址方式3.1.1 与数据有关的寻址方式与数据有关的寻址方式 以以 MOV 指令为例指令为例
2、 1.立即寻址方式立即寻址方式*操作数在指令中给出操作数在指令中给出 MOV AL,5 MOV AX,3064H*只能用于只能用于SRC字段字段*SRC 和和 DST的字长一致的字长一致 MOV AH,3064H22.寄存器寻址方式寄存器寻址方式*操作数在指定的寄存器中操作数在指定的寄存器中 MOV AX,BX MOV AL,BH*字节寄存器只有字节寄存器只有 AH AL BH BL CH CL DH DL*SRC 和和 DST的字长一致的字长一致 MOV AH,BX*CS不能用不能用MOV指令改变指令改变 MOV CS,AX33.直接寻址方式直接寻址方式*有效地址有效地址EA由指令直接给出由
3、指令直接给出 有效地址有效地址EA:操作数的偏移地址:操作数的偏移地址 物理地址物理地址PA=16d (DS)+EA 例例:MOV AX,2000H EA=2000H,假设假设(DS)=3000H,那么那么(PA)=32000H 例例:操作数地址可由变量(符号地址)表示操作数地址可由变量(符号地址)表示 MOV AH,VALUE (VALUE DB 10)5030 32000AH AL3050(AX)=3050H43.直接寻址方式直接寻址方式*隐含的段为数据段隐含的段为数据段 DS*可使用可使用段跨越前缀段跨越前缀 MOV AX,ES:2000H*使用变量时,要注意变量的属性使用变量时,要注意
4、变量的属性 VALUE DB 10 MOV AX,VALUE MOV AX,WORD PTR VALUE*适于处理单个变量适于处理单个变量54.寄存器间接寻址方式寄存器间接寻址方式*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)64.寄存器间接寻址方式寄
5、存器间接寻址方式*不允许使用不允许使用AX、CX、DX存放存放EA MOV AX,CX*SRC 和和 DST的字长一致的字长一致 MOV DL,BX ;BX指示一个字节单元指示一个字节单元 MOV DX,BX ;BX指示一个字单元指示一个字单元*适于数组、字符串、表格的处理适于数组、字符串、表格的处理75.寄存器相对寻址方式寄存器相对寻址方式*例例:MOV AX,COUNTSI 或或 MOV AX,COUNT+SI 假设假设(DS)=3000H,(SI)=2000H,COUNT=3000H 那么那么 PA=35000H 假设假设(35000H)=1234H,那么那么(AX)=1234H*适于数
6、组、字符串、表格的处理适于数组、字符串、表格的处理 有效地址有效地址=(BX)(BP)(SI)(DI)+8位位16位位位移量位移量86.基址变址寻址方式基址变址寻址方式*MOV AX,BXDI 或或 MOV AX,BX+DI MOV AX,ES:BXSI*适于数组、字符串、表格的处理适于数组、字符串、表格的处理*必须是一个基址寄存器和一个变址寄存器的组合必须是一个基址寄存器和一个变址寄存器的组合 MOV AX,BXBP MOV AX,SIDI有效地址有效地址=(BX)(BP)+(SI)(DI)97.相对基址变址寻址方式相对基址变址寻址方式*MOV AX,MASKBXSI 或或 MOV AX,M
7、ASKBX+SI 或或 MOV AX,MASK+BX+SI*适于堆栈处理和数组处理适于堆栈处理和数组处理 有效地址有效地址=(BX)(BP)+(SI)(DI)+8位位16位位位移量位移量10例例:编写一段显示字符串编写一段显示字符串STRING的程序的程序 DATA SEGMENT STRING DB HAPPY NEW YEAR!,0DH,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 in
8、t 21h ;显示字符显示字符A .11(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 si,0 next:mov dl,stringsi ;mov dl,string+si mov ah,2 int 21h ;显示一个字符显示一个字符 inc s
9、i loop next ;循环指令循环指令12(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,string mov ah,9 int 21h ;显示一串字符显示一
10、串字符133.1.2 与转移地址有关的寻址方式与转移地址有关的寻址方式 用来确定用来确定 转移指令转移指令 及及 CALL指令指令 的转向地址。的转向地址。段内段内寻址寻址段间段间寻址寻址段内段内直接寻址直接寻址段内段内间接寻址间接寻址段间段间直接寻址直接寻址段间段间间接寻址间接寻址以以 转移(条件转移转移(条件转移/无条件转移)指令无条件转移)指令 为例为例段内段内:转移指令与转向的目标指令在同一代码段中转移指令与转向的目标指令在同一代码段中,(,(CS)不变。不变。段间段间:转移指令与转向的目标指令在两个代码段中转移指令与转向的目标指令在两个代码段中,(CS)变化。变化。141.段内段内直
11、接寻址直接寻址 转向的有效地址转向的有效地址EA=物理地址物理地址=16d (CS)+(IP)新新 例例:JMP AGAIN (IP)当前当前 MOV BX,AX AGAIN:例例:JMP NEAR PTR NEXT 近转移近转移 -32768 +32767 JMP SHORT NEXT 短转移短转移 -128 +127 (IP)当前当前 +位移量位移量(8bit/16bit)(IP)新新(IP)新新152.段内段内间接寻址间接寻址 转向的有效地址转向的有效地址EA是一个寄存器或存储单元的内容。是一个寄存器或存储单元的内容。(可用除立即数以外的任何一种数据寻址方式得到可用除立即数以外的任何一种
12、数据寻址方式得到)物理地址物理地址=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 BXSI ;(IP)=2450H163.段间段间直接寻址直接寻址 用指令中提供的转向段地址和偏移地址取代用指令中提供的转向段地址和偏移地址取代CS和和IP。物理地址物理地址=16d (CS)+(IP)例例:co
13、de1 segment jmp far ptr next code1 ends code2 segment next:.code2 ends174.段间段间间接寻址间接寻址 用存储器中的两个相继字的内容取代用存储器中的两个相继字的内容取代CS和和IP。(存储单元的地址可用除立即数和寄存器以外的任何一种存储单元的地址可用除立即数和寄存器以外的任何一种 数据寻址方式得到数据寻址方式得到)物理地址物理地址=16d (CS)+(IP)例:例:JMP DWORD PTR INTERS+BX183.3 IBM PC机的指令系统机的指令系统 数据传送指令数据传送指令 算术指令算术指令 逻辑指令逻辑指令 串处
14、理指令串处理指令 控制转移指令控制转移指令 处理机控制指令处理机控制指令注意:注意:1.指令的基本功能指令的基本功能 2.指令的执行对标志位的影响指令的执行对标志位的影响 3.对寻址方式或寄存器使用的限制和隐含使用的情况对寻址方式或寄存器使用的限制和隐含使用的情况19 数据传送指令数据传送指令数据传送指令数据传送指令 通用数据传送指令通用数据传送指令通用数据传送指令通用数据传送指令 累加器专用传送指令累加器专用传送指令累加器专用传送指令累加器专用传送指令 地址传送指令地址传送指令地址传送指令地址传送指令 标志寄存器传送指令标志寄存器传送指令标志寄存器传送指令标志寄存器传送指令20 通用数据传送
15、指令通用数据传送指令 传送指令:传送指令:MOV DST,SRC 执行操作:执行操作:(DST)(SRC)注意注意:*DST不能是不能是CS *不影响标志位不影响标志位 *DST、SRC不同时为段寄存器不同时为段寄存器 MOV DS,ES *立即数不能直接送段寄存器立即数不能直接送段寄存器 MOV DS,2000H21例:例:MOV AX,DATA_SEG MOV DS,AX例:例:MOV AL,E ;MOV AL,45H例:例:MOV BX,OFFSET TABLE例:例:MOV AX,YBPSI返回返回22 进栈指令:进栈指令:PUSH SRC 执行操作:执行操作:(SP)(SP)-2 (
16、SP)+1,(SP)(SRC)出栈指令:出栈指令:POP DST 执行操作:执行操作:(DST)(SP)+1,(SP)(SP)(SP)+2堆堆栈栈:“先先进进后后出出”的的存存储储区区,存存在在于于堆堆栈栈段段中中,SP在在任任何何 时候都指向栈顶。时候都指向栈顶。注意注意:*堆栈操作必须以字为单位。堆栈操作必须以字为单位。*不影响标志位不影响标志位 *不能用立即寻址方式不能用立即寻址方式 PUSH 1234H *DST不能是不能是CS POP CS23例:例:假设假设(AX)=2107 H,执行执行 PUSH AX(SP)低地址低地址高地址高地址(SP)07H 21H低地址低地址高地址高地址
17、进栈方向进栈方向*PUSH AX 执行前执行前PUSH AX 执行后执行后24例:例:POP BX(SP)低地址低地址高地址高地址(SP)07H 21H低地址低地址高地址高地址出栈方向出栈方向07H21H (BX)=2107H POP BX 执行前执行前 POP BX 执行后执行后*25例:例:例:例:PUSH DS PUSH DS SUB AX,AX SUB AX,AX PUSH AX PUSH AX RET RET例:例:例:例:PUSH AX PUSH AXPUSH BXPUSH BX POP BXPOP BXPOP AXPOP AX;其间用到其间用到AX和和BX寄存器寄存器26 交换指
18、令:交换指令:XCHG OPR1,OPR2 执行操作:执行操作:(OPR1)(OPR2)注意注意:*不影响标志位不影响标志位 *不允许使用段寄存器不允许使用段寄存器 例:例:XCHG BX,BP+SI XCHG AL,BH 27 累加器专用传送指令累加器专用传送指令(只限于使用(只限于使用AX或或AL)输入指令(输入指令(I/O CPU)长格式:长格式:IN AL,PORT (字节)(字节)IN AX,PORT (字)(字)执行操作:执行操作:(AL)(PORT)(字节)(字节)(AX)(PORT+1,PORT)(字)(字)短格式:短格式:IN AL,DX (字节)(字节)IN AX,DX (
19、字)(字)执行操作:执行操作:(AL)(DX)(字节)(字节)(AX)(DX)+1,(DX)(字)(字)28输出指令(输出指令(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)(字)(字)29注意注意:*不影响标志位不影响标志位*前前256个端口号个端口号00HFFH可直
20、接在指令中指定(长格式)可直接在指令中指定(长格式)*如果如果端口号端口号 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处理30例例 8.1 Sound程序程序 (page 204)mov dx,100 in al,61
21、h and al,11111100bsound:xor al,2 out 61h,al mov cx,140hwait1:loop wait1 dec dx jne sound设备控制寄存器设备控制寄存器端口端口61H1/0 0 控制其它外部设备控制其它外部设备与与门门放大器放大器2号定时器门控号定时器门控1 031换码指令:换码指令:XLAT 或或XLAT OPR执行操作:执行操作:(AL)(BX)+(AL)例:例:MOV BX,OFFSET TABLE ;(BX)=0040H MOV AL,3 XLAT TABLE 指令执行后指令执行后(AL)=33H注意注意:*不影响标志位不影响标志位*
22、字节表格字节表格(长度不超过长度不超过256)首地址首地址(BX)*需转换代码需转换代码 (AL)(BX)30 H F004031 H F0041(AL)=3 32 H F0042 33 H F0043TABLE(DS)=F000H32 地址传送指令地址传送指令 有效地址送寄存器指令:有效地址送寄存器指令:LEA REG,SRC 执行操作:执行操作:(REG)SRC 指针送寄存器和指针送寄存器和DS指令:指令:LDS REG,SRC 执行操作:执行操作:(REG)(SRC)(DS)(SRC+2)4个相继字节个相继字节 寄存器(通常是寄存器(通常是SI)、)、DS 指针送寄存器和指针送寄存器和E
23、S指令:指令:LES REG,SRC 执行操作:执行操作:(REG)(SRC)(ES)(SRC+2)4个相继字节个相继字节 寄存器(通常是寄存器(通常是DI)、)、ES 33例:例:LEA BX,BX+SI+0F62H 例:例:LDS SI,10H例:例:LES DI,BX例:例:(DS):1000H 40 H 00 H 00 H 30 H TABLEMOV BX,TABLE ;(BX)=0040HMOV BX,OFFSET TABLE ;(BX)=1000HLEA BX,TABLE ;(BX)=1000HLDS BX,TABLE ;(BX)=0040H ;(DS)=3000HLES BX,T
24、ABLE ;(BX)=0040H ;(ES)=3000H注意注意:*不影响标志位不影响标志位 *REG不能是段寄存器不能是段寄存器 *SRC必须为存储器寻址方式必须为存储器寻址方式34 标志寄存器传送指令标志寄存器传送指令 标志送标志送AH指令:指令:LAHF 执行操作:执行操作:(AH)(PSW的低字节的低字节)AH送标志寄存器指令:送标志寄存器指令:SAHF 执行操作:执行操作:(PSW的低字节的低字节)(AH)标志进栈指令:标志进栈指令:PUSHF 执行操作:执行操作:(SP)(SP)-2 (SP)+1,(SP)(PSW)标志出栈标志出栈指令:指令:POPF 执行操作:执行操作:(PSW
25、)(SP)+1,(SP)(SP)(SP)+2*影响标志位影响标志位353.3.2 算术指令算术指令 加法指令加法指令 减法指令减法指令 乘法指令乘法指令 除法指令除法指令 十进制调整指令十进制调整指令 36 加法指令加法指令 加法指令:加法指令:ADD DST,SRC 执行操作:执行操作:(DST)(SRC)+(DST)带进位加法指令:带进位加法指令:ADC DST,SRC 执行操作:执行操作:(DST)(SRC)+(DST)+CF 加加1指令:指令:INC OPR 执行操作:执行操作:(OPR)(OPR)+1注意注意:*除除INC指令不影响指令不影响CF标志外,均对条件标志位标志外,均对条件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第三 IBMPC 指令系统 寻址 方式
限制150内