微机原理课件第三章8086寻址方式和指令系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2取 单.如操元果作的指数 地令寄, 址中存钥 。用器匙对寄就于间存或相寄接器=当存D寻B于器SP址×进存间1方行储接6+式间D接I的寻E址A计,寄则算存默器 认操作
数寻在址堆方栈式段来中说,,操就作相数当的于段钥地匙址在段寄存器SS中,操 作放数在的寄物存理器地中址,=即SS寄×存1器6+给BP出。 了要访问的存储单元地址。
DS 3000H ×16

SI 2000H
操作码
+ COUNT 4000H
00
代码段
40
寄存器3相60对00H寻址方式也允许使┋用段超越前缀,
如MOV BX,ES:COUNT[DI]则段地址为ES,物
理地址=ES×16+DI+COUNT。
BH
BL

BX 56
78
36000H
78
56
数据段

指令MOV BX,COUNT[SI]的执行过程
{{ }} 组合起来([B只X能]+相[S加I)]+,D同8或时D还1可6 以加上一个8位或
((1SE86IE8和位A种A种=D的=)I)位也移不[[[[[[[BBB量能BSDBXPPPIIX]],]同]]]]+++但时++++[[[DDDDSDB出8888IIIX现或 或或 或]]]和+++在DDBDDD11P方1188866不66或 或 或括能DDD号111同寄中666时;存出器现相 变在相对 址方对基 寻括寻号址 址址中,
{ 设((D3E86A种S0==0M)300HO0)V[[[[0HBSBD=XIPIB,5]]]]X6或S7,+I8=18H[2S6位0I位0+位0C位H移O,移U量位N量T移] 量COU默 默N认 认T=DS4SS0段 段00H,
则物理地址寄=存DS器×相16对+S寻I+址C方OU式N的TE=3A6计00算0H
单元打交道M,O只V要A使X用,其A名RE字A即1 可(,[A不RE必A记1])住具体数 值是多这少里。的例D如WM伪O指V令AX语,句A用R来EA定1义这一里个的存AR储E器A1中就 是的操数作据数变的量符,号A地R址EA,1表该示指内令存执中行一后个,数将据从区有的效名地址 为字A,R例E也A如就1的A是存R符E储号A单1地元址E中Q,取U该出地1一2址3个4单H字元送存到放A一X个中字去数。据
四、寄存器间接寻址方式
{ 是间器寄两D寄假 若 要操接寻存I点存,设操找指作寻址器说器则存作到(令B数 址 方D明默储 数 钥XE4中的 。 式S、:认单 在 匙A种的给有 寄 相=B物1操元 存 打内.出效 存 区)P如理作是 储 开及容的地器别果地数“单锁变作寄址名。[[[[指或址存元,带址为BSBD存E称这令==XIPI放中再锁寄A段DD器外类]]]]中,在,开的存SS地中面指指××这数则柜柜器址的必令定11种据先门子S。66值须中的I++寻段”、SB不使加寄I址X中D是用方默 默存I方,。操的括器式认 认这作寄号是称时存DS数存,B为储要SSX本器以段 段单寄用,身有与元存数S,基寄I器或据而址存段
目的操作数
源操作数
MOV AX,BX
操作码
两操作数用逗号隔开
MOV功能:将BX中的源操作数→AX(目的)
而象单操作数指令 INC AX 其中AX既是源操作数,又是目的操作数,其 功能是:AX+1→AX。
而M象O指V 令NAOXP,,[没2有00操0作H]数。
前面举的例子都是操作数在寄存器中,操作数
若基址寄存器BX时,段寄存器用DS; M若O基V 址AX寄,存[M器ABSPK时+,BX段+寄SI]存器用SS。 设 DS=2000H,BX=1500H,SI=0300H,
{ (E8则A种=物)理M[[[[地BBBBAXPXP址S]]]]K++++=[[[[=D=SDSD02SIIII20×]]]]00++++0018888H06位 位 位 位H,+B或 或 或 或+(1X11115+2666601S位 位 位 位0AIH+位 位 位 位0+M00移 移 移 移HA3)量 量 量 量0S0K=H1+203240H0H默默认认SDSS段段
第三章 8086的寻址方式和指令系统
3-1 8086的寻址方式 指令=操作码+操作数
指出操作的性质(作用) 指出操作的对象
寻址方式就是指令中说明操作数所在地址的方法 (操作数在哪)。
指令有单操作数、双操作数和无操作数之分。 如果是双操作数指令,要用逗号将两个操作数分开, 逗号右边的操作数称为源操作数,逗号左边的为目 的操作数。
还可以在存储器或源I/O操端作口中数,(也存可以储是器立)即数。
IN AL,20H
源操作数(I/O端口)
MOV AX, 1000H
源操作数(立即数)
{ { 分三大类
①立即数寻址 ②寄存器寻址 ③存储器寻址
直接寻址 寄存器间接寻址 寄存器相对寻址
基址变址寻址
相对基址变址寻址
8086的寻址方式
下面主要以MOV指令来说明8086的 这些寻址方式。
×16
12000H

操作码 00 20

BH
BL
BX
34
56

12000H
56
34

代码段 数据段
指令MOV BX,[SI]的执行过程
例如指令MOV AX,[BP],则默认操作数在堆 栈段中,操作数的物理地址=SS×16+BP。 设SS=4000H,BP=1000H,(41000H)=5678H 则物理地址=SS×16+BP
DS 3000H ×16 + 2000H 32000H

操作码 00 20┋代码段 NhomakorabeaAH
AL
AX
12
34

32000H
34
12

数据段
指令MOV AX,[2000H]的执行过程
2.段超越前缀 如果要对代码段、堆栈段或附加段寄存器所指出
的存储区进行直接寻址,应在指令中指定段超越前缀。
例如指令MOV AX,ES:[1000H]源操作数所在
从以上这些寻址方式可以看到,在涉及到操作
数的E地A的址2时4种,[计B常X算常]方+要[法在SI:指]令中使用方括号,有关带
{{ }} (方①[②括(1括0E4立只号0E4A种号0即有内A种=H=的)B数 ,]);X地可 它,[[[[址以 们[[[BBBSDBBB表P出 可PXIIXPP,]]]]达]]现以]S+++式在单I[[[和必寄DSD方独IIID须括出存]]]I这遵号现器四循内,基间 个下,也寄列址接表可存规示以变寻器则直由址址可:接 两寻以寻 个出址址 寄现, 存在如 器方
DS 3000H ×16
BX 1200H
+
SI 0500H

代码段
AH
AL
AX
AB
CD

31700H
CD
AB

数据段
指令MOV AX,[BX][SI]的执行过程
七、相对基址变址寻址方式
B例P)M和操O一作V个数A变X的,址有M寄效A存地SK器址[(B是XS一]I[或S个ID]基I)址的寄内存容器,(再BX加或上 指令M中O指V定A的X8,位M或A1S6K位[B位X移+S量I]之和。
一、立即寻址方式
假设操寄作存数器直是接“包不含带在锁指的令柜中子,”它是一个8位或16位 的若常操整作数数,在也寄叫存立器即中数,。则只要 直接例打如开柜M门O即V 可A取L,之3。0H
MOV AX,0FFFCH 假设存储单M元O是V “[1带00锁0H的]柜,子12”34H 注若意操:作1.常数数在以存A储~单F开元头中时,,则应先在其前加0,以区别其 要找到它钥符匙号打(开如锁0,FF再F开CH柜)门。 取操作2.立数即,数钥只匙能就作相源当操于作存数储,不能作目的操作数。 单元的(地如址M。OV 23H,BL ×)
六、基址变址寻址方式 操作数的有效地址是一个基址寄存器(BX或
B个例P寄)存M和器O一V均个A由变X指,址令[寄B指X存]出器[S。I(] SI或DI)的内容之和,两 设DS若若M=基 基3O0V址 址00A寄 寄HX,存 存,B器 器[XBBB=XXP1+时2时S0I,0,]H段段,寄寄SI存存=0器器50用用0HSDS,S。;(31700H)
例 1:MOV DX,AX 2: MOV BL,CL
注意:源操作数的长度必须与目的操作数一致。
三、直接寻址方式(存储器寻址)
1.直接寻址方式 有效地址 (EA):操作数的偏移地址。 假设使存用储直单接元寻是址“方带式锁的的指柜令子时”,存储单元的有效地 址若直操接作由数指在令存给储出单,元而中段,地则址先如没有指令前缀,默认 由要数找据到段钥寄匙存打器开给锁出,。再例开如柜M门OV AX,[2000H];存 储取单操元作的数有,效钥地匙址就EA相=当20于00存H,储段地址由数据段DS指 定单(元设的DS地=3址00。0H对)于。直此接指寻令址的方执行过程如下图所示。 式来说,就相当于钥匙直接给 出,即直接给出了单元地址。
=40000H+1000H
=41000H 此指令的功能就是(41000H)字→AX,因此指令执 行后AX=5678H。执行过程如下图所示。
SS 4000H ×16 + BP 1000H
41000H

操作码 00 10

代码段
AH
AL
AX 56
78

41000H 78 56

堆栈段
指令MOV AX,[BP]的执行过程
立即寻址方式,操作数相当于直接暴露在外, 需要时可直接来取。
二、寄存器寻址方式 存假 若器设操操可寄作作以存数数是器在包A是寄X含,“存在B器不寄X中带,存,锁C器X则的中,只柜。D要子X对”,于S1I6,位D操I,作S数P,,B寄P 等直等接;打对开于柜8位门操即作可数取,之寄。存器可以是AH,AL,BH, BL,CH,CL,DH,DL。
寄存器间接寻址方式的指令中也可以指定段超 越前缀来从默认段以外的段中取得数据,如:
MOV BX,DS:[BP] 物理地址=DS×16+BP
MOV AX,ES:[DI] 物理地址=ES×16+DI
五、寄存器相对寻址方式 操作数的有效地址是一个基址或变址寄存器
的内容与指令中指定的8位或16位位移量之和。这 种寻址方式与寄存器间接寻址十分相似,主要区别 是前者在有效地址的基础上还要加一个位移量。同 样,当指令中指定的寄存器是BX,SI或DI时,默 例认的的段段寄M寄 存O存 器V 器 是BXS是S,D。CS,OU当N指T[定SI寄] 存器是BP时,默认
③由于方括号有相加的含义,下面几种写法都是等 价的:
6[BX][SI] [BX+6][SI] [BX][SI+6] [BX+SI+6]
=21A00H 指令执行后相,对A基X址=1变23址4H寻,址执方行式过的程E如A计下算:
DS 2000H ×16
BX 1500H SI 0300H + MASK 0200H
21A00H

操作码 00 02

代码段
AH
AL
AX
12
34

21A00H 34 12

数据段
指令MOV AX,MASK[BX][SI]的执行过程
{ { =则(A物注BE4C理A种意D地=H:)址没=[[[[D==有BBBB33S10XPXP×70]]]]E001A+00+++6=HH[+[[[BS+DSD[[1XIIIISB2]+]]]IX0S]]0++IH[[+BD0PI5]]00× ×H默默认认SDSS段段
指令执行后,AX=ABCDH,执行过程如下: 基址变址寻址方式的EA计算
注12意34:H光。从指令的形┋式上看,AREA1不仅可代表符号 地究址竟,如这也 何里可 来,M以 区等O表 别值V示呢伪它?指A是程X令,一序语┋A个中句R1还EE6QA位必1U的须用立事来即先给数安常,排数两说12者明34之语H间句 也定叫义做一伪个指符令号A来名R加E为A以1AR说E明A3142。1,在此后的程序中,符号 AARREEAA11执就行代后表,一A个X立=1即2┋3数4H12。34H。指令MOV AX,
例如 MOV BX,[SI] 设DS=1000H,SI=2000H,(12000H)=3456H 则物理地址=DS×16+SI
=10000H+2000H
=12000H 此指令的功能就是(12000H)字→BX,因此指令执 行后BX=3456H。执行过程如下图所示。
DS + SI
1000H 2000H
的存储单元的物理地址是ES×16+1000H,而不是默
认的DS×16+1000H。

MOV AX,ES:[1000H]
ES:MOV AX,[1000H]

3.符号地址(变量名)
在又汇如编A语RE言A中1 还允DW许用符12号34地H址代替数值地址, 实际上就是给存储┋单元起一个名字,这样,要与这些
相关文档
最新文档