pentium指令系统.ppt
《pentium指令系统.ppt》由会员分享,可在线阅读,更多相关《pentium指令系统.ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章Pentium的指令系统的指令系统本章要点本章要点Pentium寻址方式和指令系统:44汇编语言的寻址方式汇编语言的寻址方式44传送指令、算术运算指令、逻辑运算指令和移传送指令、算术运算指令、逻辑运算指令和移位指令的用法、串操作指令、控制转移指令位指令的用法、串操作指令、控制转移指令44汇编语言源程序的规范格式汇编语言源程序的规范格式44伪指令及其使用伪指令及其使用 第第3章章Pentium的指令系统的指令系统43.1 Pentium的寻址方式43.2 Pentium的指令系统43.3 汇编语言中的标记、表达式和伪指令3.1 Pentium的寻址方式的寻址方式汇编语言指令要解决的汇编
2、语言指令要解决的两个问题两个问题:要指出进行什么操作要指出进行什么操作操作符操作符;要指出操作数和操作结果放在何处要指出操作数和操作结果放在何处寻址方式寻址方式。3.1 Pentium的寻址方式的寻址方式立即数寻址立即数寻址寄存器寻址寄存器寻址存储器寻址存储器寻址输入输入/输出端口寻址输出端口寻址1、立即数寻址、立即数寻址 44操作数就在指令中提供,叫操作数就在指令中提供,叫立即数寻址方式立即数寻址方式。比如:比如:MOVMOV ALAL,80H80H MOV MOVAXAX,1090H1090H2、寄存器寻址、寄存器寻址 44操作数放在寄存器中,指令中给出寄存器名操作数放在寄存器中,指令中给
3、出寄存器名 寄存器寻址方式寄存器寻址方式。44比如:比如:INCINCCXCXROLROL AHAH,1 1 MOV ECX MOV ECX,EAXEAX3、存储器寻址、存储器寻址 44数数据据在在存存储储器器中中,偏偏移移地地址址(有有效效地地址址EAEA)由由指指令给出令给出存储器寻址存储器寻址。44EA=EA=基址基址+变址变址x x比例因子比例因子+位移量位移量四种成分四种成分1616位寻址位寻址3232位寻址位寻址位移量位移量0 0,8 8,1616位位0 0,8 8,16 16,3232位位基址寄存器基址寄存器BX,BPBX,BP任何任何3232位通用寄存器位通用寄存器BX,BP,
4、EBX,EBPBX,BP,EBX,EBP变址寄存器变址寄存器SI,DISI,DI除除ESPESP以外的以外的3232位通用寄存器位通用寄存器SI,DI,ESI,EDISI,DI,ESI,EDI比例因子比例因子无无1 1,2 2,4 4,8 8寻址计算方法寻址计算方法存储器寻址存储器寻址(1)(1)直接寻址方式直接寻址方式 如:如:INC WORD PTRINC WORD PTR500H500H(2)(2)寄存器间接寻址方式寄存器间接寻址方式 如:如:MOVMOVECXECX,EDXEDX 任何任何任何任何3232位通用寄存器位通用寄存器位通用寄存器位通用寄存器(BXBX、BPBP、SISI、D
5、IDI)SPSP、ESPESP、BPBP、EBP(EBP(BPBP)默默默默认认认认段段段段为为为为SSSS,其其其其他他他他寄寄寄寄存存存存器器器器默默默默认认认认段为段为段为段为DSDS(3)(3)寄存器相对寻址方式寄存器相对寻址方式 如:如:MOV ECXMOV ECX,EAX+24EAX+24存储器寻址存储器寻址(4)(4)基址变址寻址方式基址变址寻址方式 如:如:MOV EAXMOV EAX,ESIEBXESIEBX (5)(5)相对基址变址寻址方式相对基址变址寻址方式 如:如:ADD EDXADD EDX,ESIEBP+100HESIEBP+100H存储器寻址存储器寻址(6)(6)
6、相对的带比例因子的变址寻址方式相对的带比例因子的变址寻址方式 如:如:IMULIMULEBXEBX,ESI*4+7ESI*4+7(7)(7)基址加带比例因子的变址寻址方式基址加带比例因子的变址寻址方式 如:如:MOV ECXMOV ECX,EDI*8EAXEDI*8EAX(8)(8)相对的基址加带比例因子的变址寻址方式相对的基址加带比例因子的变址寻址方式 如:如:MOV EAXMOV EAX,EDI*4EBP+80EDI*4EBP+804、输入、输入/输出端口寻址输出端口寻址4I/O直接寻址I/OI/O端口地址直接在指令中提供端口地址直接在指令中提供端口地址直接在指令中提供端口地址直接在指令中
7、提供 例:例:例:例:IN ALIN AL,82H82H OUT 80H OUT 80H,AXAX4I/O间接寻址在在在在DXDX寄存器中设置好寄存器中设置好寄存器中设置好寄存器中设置好I/OI/O端口地址端口地址端口地址端口地址 例:例:例:例:IN ALIN AL,DXDX OUT DX OUT DX,AXAX 3.2 Pentium的指令系统的指令系统 传送指令传送指令算术运算指令算术运算指令逻辑运算和移位指令逻辑运算和移位指令串操作指令串操作指令调用调用/转移转移/循环控制循环控制/中断指令中断指令标志操作和处理器控制指令标志操作和处理器控制指令条件测试和字节设置指令条件测试和字节设置
8、指令位处理指令位处理指令系统管理指令系统管理指令支持高级语言指令支持高级语言指令1.传送指令传送指令通用传送指令通用传送指令 :MOV MOV MOVZX MOVSXMOVZX MOVSX堆栈操作指令堆栈操作指令 :PUSH POP PUSHA POPA PUSH POP PUSHA POPA PUSHAD POPADPUSHAD POPAD交换指令交换指令 :XCHG XCHG BSWAPBSWAP输入输入/输出指令输出指令 :IN OUTIN OUT 换码指令换码指令 :XLAT XLAT XLATBXLATB 地址传送指令地址传送指令 :LEA LDS LES LEA LDS LES L
9、SS LFS LGSLSS LFS LGS标志传送指令标志传送指令 :LAHF SAHF PUSHF POPF LAHF SAHF PUSHF POPF PUSHFD POPFDPUSHFD POPFD 1.传送指令传送指令44输入指令输入指令ININ长格式:长格式:长格式:长格式:INALINAL,PORTPORT(字节)(字节)(字节)(字节)INAXINAX,PORTPORT(字)(字)(字)(字)执行的操作:(执行的操作:(执行的操作:(执行的操作:(ALAL)(PORTPORT)(字节)(字节)(字节)(字节)(AXAX)(PORT+1PORT+1,PORTPORT)(字)(字)(字
10、)(字)短格式:短格式:短格式:短格式:INALINAL,DXDX(字节)(字节)(字节)(字节)INAXINAX,DXDX(字)(字)(字)(字)执行的操作:执行的操作:执行的操作:执行的操作:ALAL(DXDX)(字节)(字节)(字节)(字节)AXAX(DXDX)+1+1,DXDX)(字)(字)(字)(字)输入输入/输出指令输出指令IN/OUT4480868086支持支持64K64K个个I/OI/O端口,地址范围端口,地址范围0000 0000 FFFFHFFFFH。44前前256256个端口(个端口(0 0 FFHFFH)可以直接在指令中)可以直接在指令中指定,即长格式(直接寻址)。指定
11、,即长格式(直接寻址)。44当端口号当端口号=256=256时,只能使用短格式(间接寻时,只能使用短格式(间接寻址)。址)。1.传送指令传送指令MOV CX,1000HMOV CX,1000HMOV WORD PTRSI,6070HMOV WORD PTRSI,6070HPUSH AXPUSH AXPUSH BX+DIPUSH BX+DIXCHG BX,CXXCHG BX,CXXCHG 2530H,AXXCHG 2530H,AXIN AL,60HIN AL,60HOUT 61H,AXOUT 61H,AXIN AL,DXIN AL,DXOUT DX,AXOUT DX,AX1.传送指令传送指令44
12、XLATXLAT44LEA AX,3820HLEA AX,3820H44LDS DI,2530HLDS DI,2530H44LES DX,1000H LES DX,1000H 00011000000110000000000100000001000001010000010100000110000001100000100100001001000010100000101000001100000011001000H+01000H+01000H+11000H+11000H+51000H+5BX=1000HBX=1000HAL=5AL=5BX+ALBX+AL举例:举例:44堆堆堆堆栈栈栈栈存存存存放放放放
13、了了了了字字字字符符符符串串串串的的的的首首首首地地地地址址址址,SUBSUB子子子子程程程程序序序序中中中中在在在在调调调调用用用用显显显显示示示示字字字字符符符符串串串串子子子子程序程序程序程序DISPDISP之前,应取出字符串首地址。之前,应取出字符串首地址。之前,应取出字符串首地址。之前,应取出字符串首地址。SUBPROCSUBPROC PUSHPUSHBPBPMOVMOVBP,SPBP,SPPUSHESPUSHESPUSHDIPUSHDILESLESDI,BP+04DI,BP+04CALLDISPCALLDISPPOPPOPDIDIPOPESPOPESPOPBPPOPBPRETRET
14、SUBENDPSUBENDPDIDIESESBPBP子程序返回地址子程序返回地址子程序返回地址子程序返回地址字符串首地址的字符串首地址的字符串首地址的字符串首地址的偏移量偏移量偏移量偏移量字符串首地址的字符串首地址的字符串首地址的字符串首地址的段地址段地址段地址段地址SPSP2.算术运算指令算术运算指令加法指令加法指令 :ADD ADC INC ADD ADC INC XADDXADD减法指令减法指令 :SUB SBB DEC NEG CMP SUB SBB DEC NEG CMP CMPXCHG CMPXCHG8BCMPXCHG CMPXCHG8B乘法指令乘法指令 :MUL IMULMUL
15、IMUL除法指令除法指令 :DIV IDIVDIV IDIV类型转换指令类型转换指令 :CBW CWD CBW CWD CWDE CDQCWDE CDQBCDBCD码指令码指令 :AAA DAA AAS DAS AAM AADAAA DAA AAS DAS AAM AAD算术运算指令举算术运算指令举例例44设设WW、X X、Y Y、Z Z均为均为1616位带符号数,编写程序位带符号数,编写程序计算表达式计算表达式(W-(X*Y+Z-220)/X(W-(X*Y+Z-220)/X。将表达式的商。将表达式的商和余数存入数据区和余数存入数据区RESULTRESULT单元开始的区域中。单元开始的区域中。
16、DATA SEGMENT DATA SEGMENT W DW-304 W DW-304 X DW 1000 X DW 1000 Y DW-12 Y DW-12 Z DW 20 Z DW 20 RESULT DW 2 DUP(?)RESULT DW 2 DUP(?)DATA ENDSDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AX,X IMUL Y MOV CX,AX MOV BX,DX MOV AX,Z CWD ADD CX,AX ADC BX,DX SUB CX,220 SBB BX,
17、0 MOV AX,W CWD SUB AX,CX SBB DX,BX IDIV X MOV RESULT,AX MOV RESULT+2,DX MOV AH,4CH INT 21HCODE ENDS END START (W-(X*Y+Z-220)/X(W-(X*Y+Z-220)/X3.逻辑运算和移位指令逻辑运算和移位指令逻辑运算指令逻辑运算指令:AND OR NOT XOR TESTAND OR NOT XOR TEST移位指令移位指令:SHL SHR SAL SAR ROL ROR RCL RCR SHL SHR SAL SAR ROL ROR RCL RCR SHLD SHRDSHLD
18、SHRD逻辑运算指令举例逻辑运算指令举例44编写程序计编写程序计算算S=(A+B)/2-(A AND B)x2S=(A+B)/2-(A AND B)x2DATA SEGMENTDATA SEGMENT A DB 12 A DB 12 B DB 51 B DB 51 S DB?S DB?DATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA ASSUME CS:CODE,DS:DATASTART:START:MOV AX,DATA MOV AX,DATA MOV DS,AX MOV DS,AX MOV AL,A MOV
19、AL,A ADD AL,B ADD AL,B SHR SHR AL,1AL,1 MOV AH,A MOV AH,A AND AH,B AND AH,B SHLSHL AH,1 AH,1 SUB AL,AH SUB AL,AH MOV S,AL MOV S,AL MOV AH,4CH MOV AH,4CH INT 21H INT 21HCODE ENDSCODE ENDS END STRAT END STRAT 移位指令举例移位指令举例44已知已知(BX)=84F0H(BX)=84F0H,把,把 (BX)(BX)中的中的 16 16 位数每位数每4 4位压入堆栈。位压入堆栈。MOVCH,4MOV
20、CH,4MOVCL,4MOVCL,4NEXT:NEXT:ROLROLBX,CLBX,CLMOVAX,BXMOVAX,BXANDAX,0FHANDAX,0FHPUSHAXPUSHAXDECCHDECCHJNZNEXTJNZNEXT4.串操作指令串操作指令字符串传送指令字符串传送指令:MOVSB MOVSW:MOVSB MOVSW MOVSDMOVSD字符串比较指令字符串比较指令 :CMPSB CMPSW:CMPSB CMPSW CMPSDCMPSD字符串检索指令字符串检索指令 :SCASB SCASW:SCASB SCASW SCASDSCASD取字符串指令取字符串指令 :LODSB LODSW
21、:LODSB LODSW LODSD LODSD 存字符串指令存字符串指令 :STOSB STOSW:STOSB STOSW STOSDSTOSD I/OI/O串操作指令串操作指令 :INSB INSW:INSB INSW INSDINSD OUTSB OUTSW OUTSB OUTSW OUTSDOUTSD串操作指令举例串操作指令举例MOVMOV SISI,1000H1000H;源地址为源地址为10001000H HMOVMOV DIDI,2000H2000H;目的地址为目的地址为20002000H HMOVMOV CXCX,100100;字符串长字符串长100100个字节个字节CLDCLD
22、;方向标志清方向标志清0 0,使指针,使指针 按增量方向修改按增量方向修改REP MOVSBREP MOVSB ;将源地址开始的将源地址开始的100100个个 字节传送到目的地址字节传送到目的地址 44假设假设ALAL中为键盘命令字节,中为键盘命令字节,0 0EEDHEEDH开始的开始的4 4个单元中个单元中存放了存放了“+”“+”,“-”“-”,“,”“,”,“:”4“:”4个符号对应的个符号对应的ASCIIASCII码,如果键盘命令字节与上面码,如果键盘命令字节与上面4 4个符号中的某一个符号中的某一个相等,则在个相等,则在440440H H开始的对应单元加开始的对应单元加1 1。MOV
23、DI,0EEDHMOV DI,0EEDH CLD CLD MOV CX,4 MOV CX,4 MOV DX,CX MOV DX,CX REPNZ SCASBREPNZ SCASB JNZ AAA JNZ AAA SUB DX,CX SUB DX,CX DEC DX DEC DX MOV DI,DX MOV DI,DX INC BYTE PTRDI+440H INC BYTE PTRDI+440HAAA:AAA:44将将07000700H H单单元元开开始始的的5 5个个字字节节的的内内容容取取出出放放在在累累加加器器中中处理,处理以后再送到处理,处理以后再送到07000700H H的内存区域。
24、的内存区域。CLDCLD MOV SI,0700H MOV SI,0700H MOV DI,SI MOV DI,SI MOV CX,5 MOV CX,5LI:LI:LODSBLODSB PUSH CX PUSH CX MOV DI,AL MOV DI,AL INC DI INC DI POP CX POP CX DEC CX DEC CX JNZ LI JNZ LI5.调用调用/转移转移/循环控制循环控制/中断指令中断指令子程序调用和返回指令子程序调用和返回指令:CALL RET:CALL RET无条件转移和条件转移指令无条件转移和条件转移指令:JMP J:JMP JC C循环控制指令循环控制
25、指令:LOOP LOOPZ/LOOPE LOOPNZ/LOOPNELOOP LOOPZ/LOOPE LOOPNZ/LOOPNE中断和中断返回指令中断和中断返回指令:INT IRET:INT IRET IRETDIRETD设设设设2000H2000H开始的存储区中,存放着开始的存储区中,存放着开始的存储区中,存放着开始的存储区中,存放着14H14H个数据,要求找出个数据,要求找出个数据,要求找出个数据,要求找出其中最大的一个数,并存放在其中最大的一个数,并存放在其中最大的一个数,并存放在其中最大的一个数,并存放在2000H2000H单元中。单元中。单元中。单元中。GETMAXGETMAX:MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pentium 指令系统
限制150内