- 290.00 KB
- 23页
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
第三章80X86寻址方式和指令系统第一、二节80X86寻址方式第三节80X86指令格式第四节80X86指令系统数据传送指令、I/O指令、算术运算指令、逻辑运算和移位指令、串操作指令、控制转移指令、处理器控制指令
DBAx,bx,cx,dx,…CPUMovAddIn...memDMACI/O接口外设外设ABCB
寻址,是指按照指令中所给出的方式寻找数据。不同的数据来源决定寻址方式的性质转移也需指明存储器地址,所以也需寻址程序:对数据进行加工处理数据在哪里?程序中寄存器中存储器中通常指令分为操作码和操作数两部分,表示指令中操作数所在的方法称数据寻址方式。
第一节数据寻址方式一,立即数寻址MOVAX,1090H(若CS=1000H,IP=100H)10000H10100H10101H10102HOP90H10H100H。。。。。。。。90HAHAL10HAX代码段代码段起址二,寄存器寻址MOVAX,BX若AX=1234H,BX=4567H4567H4567HAXBX操作数包含在指领中,紧跟在操作码后,放在代码段。操作数包含在CPU的内部寄存器中。
存储器寻址操作数在存储器中,指令有多种形式给出存储器地址。存储器地址有两种表达形式:1.逻辑地址表达形式:SEG:OFFSET物理地址由逻辑地址计算而来:对于16位机:物理地址=SEG*16+OFFSET对于32位机:选择符描术符8个字节比例因子基地址变址偏移量*++线性地址
OFFSET的产生OFFSET是地址信息的一部分,一般情况下,程序设计员不考虑它与段的关系,因为它本身往往是由几部分内容组成的,所以它的另一个叫法是“有效地址”,即:EA指令中提供EA的计算方法:直接寻址寄存器间接寻址寄存器相对寻址基址变址寻址基址变址相对寻址EA=[BX]+[SI]+[8BITDISP][BP][DI][16BITDISP]
寻址过程示意1D240010000C00061D250044+代码段地址1D24:0010数据段地址1D25:00121D25:0013CSIPBXSIDS指令MOVAX,[BX+SI]AXAHAL330044008B00
存储地址空间十六进制地址二进制地址0000000000000000000000000000010000000000000000000100002000000000000000000100000300000000000000000011FFFFE11111111111111111110FFFFF11111111111111111111存储器……
数据存储格式存储器……00000h00010h00020h……10000h10010h10020h段0段1段2段覆盖示意图
信息的分段存储与段寄存器的关系访问存储器类型默认段地址可指定段地址段内偏移地址来源取指令码CS无IP堆栈操作SS无SP字符串操作源地址DSCS、ES、SSSI字符串目的地址ES无DIBP作基址寄存器时SSCS、ES、SS依方式求EA一般数据存取DSCS、ES、SS依方式求EA
数据在存储器中MOVAX,[2000H](若DS=3000H)DS30000偏移量2000+实际地址32000H四,寄存器间接寻址MOVAX,[BX](若DS=2000H,BX=1000H)段基址2000EA(BX)+1000操作数地址2100030000H32000H32019HOP00H20H代码段。。。。。数据段54H7AH7AH54H2000H数据段起址M2000H。。。。。。。。。。。21000H操作数AHAL三,直接寻址
数据在存储器中1D240010000C00061D250044+代码段地址1D24:0010数据段地址1D25:00121D25:0013CSIPBXSIDS指令MOVAX,[BX+SI]AXAHAL330044008B00五、基址变址寻址
六、基址变址相对寻址[BX]+[SI]+[8BITDISP][BP][DI][16BITDISP]EA=例如:MOVAX,DATA[SI+BX];源操作数MOVDEST[BP+DI],BX;目的操作数MOVAL,[BX+DI+4]这里的DATA和DEST是这一部分的符号表达形式。与寄存器相对寻址类拟,基址加变址寻址也允许带一个8位或16位的位移量。因此,操作数的有效地址是一个基址寄存器的内容加上一个变址寄存器的内容,再加一个8位或16位的偏移量。
七.比例变址寻址比例变址寻址只能在80386到Pentium微处理器中使用。比例变址是指一对寄存器中的第二个用比例因子2、4或8来乘,产生操作数的内存地址。
第二节程序地址寻址方式表示指令转移地址所在的方式称程序地址寻址方式。OFFSET的表达方式有三种:相对寻址直接寻址间接寻址
1、相对寻址过程示意JMP/Jnn/CALL目标地址标号CALL指令有将断点(返回地址)进栈的操作,RET指令有将断点出栈的操作。opJMPA1目标入口:Ip+A1….相对寻址类型A1:SHORTNEAR(16BITS)NEAR(32BITS)
2、直接寻址JMP/CALL目标地址标号opJMPA1到目标入口….A1指令中直接给出A1
JMP/CALL[目标地址存储指针]3、间接寻址opJMP[A1]目标入口:[A1]….间接寻址的转移地址在:[BX]或[BP];SS:BP中A1
4、堆栈地址寻址PUSH/CALL/中断POP/RET/IRETCALL指令有将断点(返回地址)进栈操作,RET指令有将断点出栈的操作。××××××CALLA1RET返回地址过程入口A1….PUSH或CALL时的入栈示意:SPSP-2IPHIPLH端L端L端H端
第三节80X86指令格式无论什么指令至少要有一个字节的操作码前缀操作码寻址方式偏移量立即数0~2字节1~2字节0~2字节0~4字节0~4字节MODREGR/M第一字节 第二字节DWMOD0PCODER/M第二字节的另一种格式
格式中的编码寄存器地址编码REGw=1w=0regseg000AXAL00ES001CXCL01CS010DXDL10SS011BXBL11DS100SPAH101BPCH110SIDH111DIBH
各种MOD和R/M组合00011011w=0/1000bx+sibx+si+d8/16ALAX001bx+dibx+di+d8/16CLCX010bp+sibp+si+d8/16DLDX011bp+dibp+di+d8/16BLBX100sisi+d8/16AHSP101didi+d8/16CHBP110d16bp+d8/16DHSI111bxbx+d8/16BHDI
80X86指令格式地址(CS段)机器代码指令00A8HFACLI00A9H2E8E16A400MOVSS,CS:[00A4H]00AEHBC5000MOVSP,0050H00B1HBBECMOVBP,SP00B3H2E8E1EA600MOVDS,CS:[00A6H]00B8HFBSTI00B9HC70640002211MOV[0040H],1122H一.按指令格式,一条指令可占一到六个字节,从形式上可分单操作数,双操作数,无操作数指令。二..双操作数指令不能同为存储器操作数三.助记符形式的汇编语言经汇编(DEBUG,MASM,ASM)变成机器代码才能被CPU识别和执行。四.指令不同,寻址方式不同,指令执行时间不同,时间和计算机主频(时钟周期)还有关。