- 1、本文档共49页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章主要内容 3.1 8086的寻址方式 3.1.1 操作数寻址方式 计算机的核心部件是CPU,CPU是通过执行指令序列来解决问题的,因此每种CPU都有一组指令集提供给用户使用,这组指令集就称为CPU的指令系统。每一条指令都由操作码和操作数两部分构成。8086的寻址方式较为丰富,总体来说操作数的位置可以分为三类。 (1)操作数包含在指令中,这种寻址方式称为立即寻址,这种操作数就称为立即数。 (2)操作数包含在CPU的某个内部寄存器中,这种寻址方式称为寄存器寻址。 (3)操作数在内存的数据区中,在8086中任何内存的地址都是由两部分组成:段基址和偏移量。 1.立即寻址(Immediate Addressing) 当操作数就在指令中时为立即寻址,该操作数称为立即数,用data 8或data16表示。立即数可以是数值、字符,也可以是由数值和运算符构成的表达式。 2.寄存器寻址(Register Addressing) 这种寻址方式的操作数放在寄存器中,用寄存器的符号来表示。对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP或者BP等;对于8位操作数,则用寄存器AH、AL、BH、BL、CH、CL、DH或者DL。 3.直接寻址(Direct Addressing) 操作数总是在存储器中,其有效地址EA由指令以具体数值的形式直接给出。要注意的是指令中有效地址必须加一个方括号,以便与立即数相区别。 4.寄存器间接寻址(Register Indirect Addressing) 操作数的有效地址EA直接取自某一个基址寄存器或变址寄存器。可以使用BP、BX、SI和DI这4个16位的寄存器作为间接寻址寄存器,并且规定使用BP寄存器时,约定访问的是由SS指示的堆栈段,而使用BX、SI和DI寄存器时,约定访问的是由DS指示的数据段。 5.寄存器相对寻址(Register Relative Addressing) 操作数的有效地址是一个基址或变址寄存器的内容与指令中指定的8位或16位位移量(简记为disp)之和。同样,当指令中指定的寄存器是BX、SI或DI时,段寄存器使用DS,当指定寄存器是BP时,段寄存器使用SS。 6.基址变址寻址(Based Indexed Addressing) 操作数的有效地址是一个基址寄存器(BX或BP)和一个变址寄存器(SI或DI)的内容之和。在这种方式中,只要用上BP寄存器,那么默认的段寄存器就是SS;在其他情况下,默认的段寄存器均为DS。 7.基址变址相对寻址(Relative based indexed addressing) 使用基址变址寻址方式时允许带一个8位或16位的位移量disp,称为基址变址相对寻址。 例如: MOV AX,disp[BX][SI] ;源操作数的物理地址=DS×10H+BX+SI+disp 设DS=2000H,BX=1500H,SI=0300H,disp=0200H,(21A00H)=26BFH,则物理地址=DS×10H+BX+SI+disp=20000H+1500H+0300H+0200H=21A00H。指令执行后,AX=26BFH。 3.1.2 转移地址的寻址方式 指令系统中有一类指令可以用来控制程序的执行顺序,从而实现分支、循环以及子程序等复杂的程序结构,这类指令属于控制转移类指令,它们通过修改指令指针IP以及代码段寄存器CS的值来实现转移。与前面所述的一般数据的寻址方式不同,转移类指令需要用一定的寻址方式指出转移的目的地址,这就是转移地址的寻址方式。 1.段内直接寻址 转向的有效地址是当前IP寄存器的内容和指令中指定的8位或16位位移量之和。 指令的汇编语言格式表示为 JMP NEAR PTR PROGIA JMP SHORT QUEST 2.段内间接寻址 转移目的指令的偏移地址存放在寄存器或存储器中,而此寄存器或存储器可以用一般数据的寻址方式给出。 3.段间直接寻址 在指令中直接提供了转向段地址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的内容,用指令中指定的段地址取代CS寄存器的内容就完成了从一个段到另一个段的转移操作。 指令的汇编语言格式可表示为 JMP FAR PTR NEXTROUTINT 其中,NEXTROUTINT为转向的符号地址,FAR PTR则是表示段间转移的操作符。 4.段间间接寻址 用存储器中两个相继字的内容来取代IP和CS寄存器中的原始内容,以达到段间转移的目的。这里,存储单元的地址是由指令指定除立即数方式和寄存器方式以外的任何一种数据寻址方式取得。 这种指令的汇编语言格式可表示为 JMP DWORD PTR[INTERS+BX] 其中[INTERS+BX]说明数据寻址方式为直接变址
文档评论(0)