- 1、本文档共108页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 微型计算机的指令系统
第五章 微型计算机的指令系统 指令是让计算机完成某种操作的命令,指令的集合称作指令系统,不同系列计算机有不同的指令系统。 指令是根据计算机CPU硬件特点研制出来的,指令的符号用规定的英文字母组成,称为助记符。 它的程序目标代码短、运行速度快,因此,指令语言是面向机器的语言,它在自动控制、智能化仪器仪表、监测等领域应用非常广泛。 5.1 8086/8088汇编语言指令格式与寻址方式 5.1.1 8086/8088汇编语言指令语句格式 任何一种汇编语言的指令语句都是与机器指令一一对应的,它通过汇编程序将其翻译成机器指令代码(目标代码),CPU执行某种操作。 86系列汇编语言指令语句格式如图: 1.标号是给该指令所在地址取的名字,必须后跟冒号“:”,标号可以缺省,是可供选择的标识符。8086/8088汇编语言中可使用的标识符必须遵循下列规则: (1)标识符由字母(a ——z、A ——Z)、数字(0一9)或某些特殊字符(@,-,?)组成; (2)第一个字符必须是字母( a ——z、A ——Z )或某些特殊的符号(@, - ,?),但“?”不能单独作标识符; (3)标识符有效长度为31个字符,若超过31个字符,则只保留前面的31个字符为有效标识符。 下面是有效的标识符: START: MY-CODE: ALPHA: NUM@-1: LOOP1 : X: ? MORE-350: BETA-1: DELAYIS: 下面是无效的标识符: 4LOOP: MAIN A/B: BETA*: START=3: GAMA$1: NUM+1: ?: ONE*TWO: 2.指令助记符是指令名称的代表符号,它是指令语句中的关键字,不可缺省。 3.操作数是参加本指令运算的数据,有些指令不需要操作数,可以缺省;有些指令需要两个操作数,这时必须用逗号(,)将两个操作数分开;有些操作数可以用表达式来表示。 4.注释部分是可选项,允许缺省,如果带注释则必须用分号(;)开头,注释本身只用来对指令功能加以说明,给阅读程序带来方便,汇编程序不对它做任何处理。 5.1.2 86系列CPU的寻址方式 1.立即数寻址 8086指令系统中,有一部分指令所用的8位或16位操作数就在指令中提供,这种方式叫立即数寻址方式,例如: MOV AL,80H; MOV AX,1090H; 将1090H送AX,AH中为10H,AL中为90H 采用立即数寻址方式的指令主要用来对寄存器赋值。因为操作数可以从指令中直接取得,不需要运行总线周期,所以,立即数寻址方式的显著特点就是速度快。 2.寄存器寻址 如果操作数就在CPU的内部寄存器中,那么寄存器名可在指令中指出,这种寻址方式就叫寄存器寻址方式。 例如: INC CX ;将CX的内容加1 执行速度如何? 采用寄存器寻址方式的指令在执行时,操作就在CPU内部进行,不需要使用总线周期,因此,执行速度快。 问:通常情况下操作数放在哪里? 3.直接寻址 使用直接寻址方式时,数据总是在存储器中,存储单元的有效地址由指令直接指出。 例如:MOV AX,[1070H]; 将DS段的1070H和1071H两单元的内容取到AX中。 要注意的是采用直接寻址方式时,如果指令前面没有用前缀指明操作数在哪一段,则默认为段寄存器是数据段寄存器DS。 如果要对其它段寄存器所指出的存储区进行直接寻址,怎么办? CS:MOV BX,[3000H];(加前缀) 将CS段的3000H和3001H两单元的内容送BX 设CS为5100H,则本指令在执行时, 将54000H和54001H两单元的内容取出送BX。 注意:在汇编语言中常将“[ ]”方括号中的内容作为存储单元的地址。 4.寄存器间接寻址 采用寄存器间接寻址方式时,操作数一定在存储器中,存储单元的有效地址由寄存器指出,这些寄存器可以为BX、BP、SI和DI之一,即有效地址等于其中某一个寄存器的值: 和直接寻址的情况一样,如果指令前面没有用前缀指明具体的段寄存器,则寻址时默认的段寄存器通常为DS。如寄存器为BP时,则对应的段寄存器为SS。 采用寄存器间接寻址时,允许在指令中指定一个位移量。 MOV AX,[BP+0050] BP=2000H SS=3000H [32050H]——AL [32051H]——AH 细分起来,寄存器间接
文档评论(0)