网站大量收购独家精品文档,联系QQ:2885784924

第三讲汇编语言指令系统.doc

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 8086/8088指令系统 指令是汇编语言程序设计的基础,只有熟练掌握8086/8088各条指令的书写格式、功能及注意事项,程序设计员才能在编写汇编程序的过程中得心应手。 本章重点讲解指令执行时获取操作数的七种寻址方式以及8086/8088的指令系统。 3.1 指令系统简介 3.1.1 指令系统概述 能够被8086/8088 CPU识别并执行的指令集,称为8086/8088的指令系统。8086/8088的指令系统按照功能主要可以分为以下6类: (1)数据传送类指令 (2)算术运算类指令 (3)逻辑类指令 (4)控制转移类指令 (5)串处理类指令 (6)其他指令 3.1.2 汇编指令格式及特点 汇编指令格式与其他微机的指令格式一样,均由以下几部分组成: [标号:] 操作码 [操作数] [;注释] 其中,在上述指令格式中用方括号扩起来的部分是可有可无的,所以在一条指令中只有操作码是必须具备的。 例如一条完整的指令语句如下: HERE: MOV AX,1234H ;将立即数1234H送入AX寄存器 (1)标号 标号是由英文字母、数字及其他专用字符所组成的字符串,一般由字母和下划线打头。它代表了该指令的符号地址,标号后面必须接冒号。 (2)操作码 操作码是由助记符表示的字符串,它规定了指令的操作功能。操作码和操作数之间由空格分隔。 (3)操作数 操作数是指参加操作的数据或数据的地址。如果有多个操作数,必须使用逗号分隔。 (4)注释 注释是为该条指令作的说明注解,以便于程序设计员阅读与调试。 8086/8088指令系统中,操作数可以有1、2个,也可以没有。例如: MOV AX,CX ;双操作数指令 INC AX ;单操作数指令 NOP ;无操作数指令 8086/8088的各条指令在执行前必须转变为CPU可以识别的机器码,这是指令和伪指令之间本质的区别,因为伪指令是不会被汇编程序汇编成机器码的。伪指令在第四章中进行介绍。 例3-1编写一段汇编程序,通过DEBUG程序的U命令查看程序中各条指令所对应的机器码。 解:给出代码段,该代码段包含五条指令,然后通过上机观察这五条指令所对应的机器码。 程序代码编写如下: CSEG SEGMENT ASSUME CS:CSEG START: MOV AX,0ABCDH ;AX←0ABCDH MOV BX,1234H ;BX←1234H MOV CX,5678H ;CX←5678H MOV AH,4CH INT 21H ;返回DOS CSEG ENDS END START 保存该文件,名称为111.ASM后,通过MASM程序汇编成111.OBJ,再通过LINK程序连接成111.EXE,再使用DEBUG 111.EXE命令中的U查看这五条指令所对应的机器码,结果如图3-1所示。 图3-1 机器码示意图 由图3-1可知,MOV AX ,0ABCDH 指令的机器码为B8CDAB,其中B8为该指令的操作码,CDABH表示存储器的低地址存储了0CDH,高地址存储了ABH,根据高高低低原则,该数据应该为ABCDH,很明显,该数据即为指令中的立即数OABCDH。同理,MOV BX,1234H指令的机器码为BB3412;MOV CX,5678H指令的机器码为B97856。 注意:伪指令是不会被编译成机器码的。该例题中,伪指令SEGMENT、ASSUME、ENDS等伪指令均没有在机器码中出现。 3.1.3 符号说明 为了方便指令系统的讲解,下面把描述指令的一些符号作一简单约定。 (1) OPR:表示操作数; (2) DST:表示目的操作数; (3) SRC:表示源操作数; (4) REG:表示16位通用寄存器或8位寄存器; (5) Imm16:表示16位立即数; (6) Imm8:表示8位立即数; (7) Imm:表示8位或16位立即数; (8) EA:表示有效地址; (9) mem:表示存储器单元; (10)SegReg:表示段寄存器。 (11)PORT:表示端口 §3.2 寻址方式 指令中的操作码告诉CPU执行何种操作,而指令中的操作数即为操作的对象。在编写程序的过程中,我们往往不会在指令中直接给出操作数,而是给出操作数所在寄存器的名称或操作数所在存储单元的逻辑地址。 寻址方式就是如何根据指令提供的信息寻找到操作对象。8086/8088提供了7种寻址方式用于寻找操作数,在学习的过程中请注意寻址方式的特征及操作数所在的位置。 3.2.1 立即寻址方式 如果在指令中直接给出了操作数,无需再去寻找操作数了,这种寻址方式我们称为立即寻址方式。我们把直接给出的操作数称为立即数。 立即寻址方式的特征是在指令中出现的是立即数,并且立即数是以常

文档评论(0)

xiaofei2001129 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档