- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 80x86指令系统和寻址方式综述
第3章 80x86指令系统和寻址方式; 相关概念;二、指令格式
指令由操作码和操作数两部分组成。
操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。
操作数是指令执行的参与者,即各种操作的对象。
有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数,通常成为一地址指令、二地址指令、三…;三、学习指令的注意事项
指令的功能——该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。
指令支持的寻址方式——该指令中的操作数可以采用何种寻址方式。
指令对标志的影响——该指令执行后是否对各个标志位有影响,以及如何影响。
其他方面——该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等。
;3.1 80x86寻址方式;指令的助记符格式:
指令助忆符 [ 操作数1 [ , 操作数2 [ , 操作数3 ] ] ] [;注释]
指令助忆符体现该指令的功能,它对应一条二进制编码的机器指令。指令的操作数个数由该指令确定,可以没有操作数,也可以有一个、二个或三个操作数。绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出。
注:当指令含有操作数,则在书写时必须遵守:
指令助记符和操作数之间要有分隔符,分隔符可以是若干个空格或TAB键;
如果指令含有多个操作数,那么,操作数之间要用逗号,分开。
指令后面还可以书写注释内容,不过,要在注释之前书写分号“;”。 ;3.1.1 与数据有关的寻址方式;1. 立即寻址方式;【例3.1】MOV AX, 4576H 执行后(AX)=?
该例中源操作数为立即寻址方式,立即数为4576H,存放在指令的下一单元。
执行:4576H→AX
执行后:(AX)=4576H ;2. 寄存器寻址方式;指令中可以引用的寄存器及其符号名称如下:
8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;
16位寄存器:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;
源操作数是寄存器寻址方式
如:ADD VARW, AX MOV VARB, BH等。
其中:VARW和VARB是字和字节类型的内存变量。
目的操作数是寄存器寻址方式
如:ADD BH, 78h ADD AX, 1234h
源和目的操作数都是寄存器寻址方式
如: MOV AX, BX MOV DH, BL等。;注:由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。;【例3.2】下列程序执行后,(AX)=?,(BX)=?
MOV AX,1234H
MOV BX,5678H
ADD AX,BX
解释:该程序中MOV指令为数据传送指令操作符,ADD指令为加法指令操作符,三条指令皆为双操作数指令。第一、二条指令AX、BX皆为目的操作数地址,为寄存器寻址方式。第三条指令中,AX为目的操作数地址,BX为源操作数地址。源地址和目的地址皆为寄存器寻址方式。
执行:1234H→AX
5678H→BX
(AX)+(BX)→AX
执行后:(AX)=68ACH,(BX)=5678H;3. 直接寻址方式;【例3.3】执行指令:MOV BX ,[1234H]
设(DS)=2000H。
执行后:(AX)=?
图示:
执行:(21234H)→BX
执行后:(BX)=5312H
; 在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。
例如:MOV ES:[1000H], AX
注意:立即寻址方式和直接寻址方式的书写格式不同,直接寻址的地址要写在括号“[”,“]”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。
试比较下列指令中源操作数的寻址方式(VARW是内存字变量): ;4. 寄存器间接寻址方式;【例3.4】假设有
文档评论(0)