- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
吉林大学微机原理第3章
汇编语言的分类 1、绝对汇编语言AAL(Absolute Assembly Language) 操作码部分用助记符表示,操作数用十六进制数表示。 2、符号汇编语言SAL(Symbol Assembly Language) 操作码部分用助记符表示,用标号来表示操作数中的绝对地址、地址偏移量、常数。 3、宏汇编语言(Macro Assembly Language) 在符号汇编语言的基础上,又引进了宏指令,用其代表在程序中多次出现的程序段。 4、条件汇编:在程序设计中引入判断条件。 宏汇编程序MASM.EXE,都具有符号汇编、宏汇编、条件汇编的功能。 INTEL80X86系列CPU指令系统 8086/8087CPU的指令系统 基本指令92条,8种寻址方式。8087协处理器,25条基本运算指令,可以进行18位十进制运算、浮点运算、三角函数运算、指数运算等等运算。 80286/287指令系统 CPU 具有实地址和保护虚地址两种方式。在实地址方式下与8086兼容,8086的程序可以不经汇编而直接在80286中运行;在虚地址方式下增加了25条指令。 3.1 概述 8088和8086的指令系统是完全相同的; 8086的指令系统共包含92种基本指令,按照功能分为 6大类: 1、数据传送Data Transfer 2、算术运算Arithmetic 3、逻辑运算和移位logic 4、串操作string manipulation 5、控制转移类control transfer 6、处理器控制processor control 3.1.1 指令的基本构成 一条8086指令包含有操作码和操作数两部分,指令的长度在1~7个字节之间。 立即操作数、寄存器操作数、存储器操作数 立即操作数即常数;可以是字节(8位)、字(16位); 立即操作数只能用作源操作数,不能用作目的操作数; 2、寄存器操作数 寄存器操作数存放在CPU的8个通用寄存器或4个段寄存器中,既可以用作源操作数也可以用作目的操作数;但CS一般不作为目的操作数; 个别指令将FLAGS作为操作数; 3、存储器操作数 存储器操作数可以是字节、字、双字,分别存在1个、2个、4个存储单元中;它既可以用作源操作数也可以用作目的操作数; 注意:对大多数指令,不允许源操作数和目的操作数同时为存储器操作数,即不允许存储器到存储器的操作。 存储器单元的地址由两部分组成:段基址和偏移地址(也叫有效地址),所以各种存储器操作,都涉及到段寄存器; 8088对寄存器使用的约定 3.1.2 指令的执行时间 一条指令的执行时间应包括取指令、取操作数、执行指令及传送结果4部分时间,通常用时钟周期数来表示; 不同的指令在执行时间上有很大差别; 寄存器操作数的指令执行速度最快; 立即操作数作为指令的一部分存放在指令队列中,因此执行指令时不需要访问内存; 存储器操作数放在内存单元中,首先由BIU计算出20位物理地址,然后再执行存储器的读写操作,指令的执行速度最慢。 例如:CPU的时钟频率为5MHz,即一个时钟周期为0.2微秒,则寄存器到寄存器之间的传送指令的执行时间为: t=2X0.2=0.4微秒 再如:立即操作数传送到寄存器的指令执行时间为: t=4X0.2=0.8微秒 3.2 CPU的寻址方式 获得操作数所在地址的方法,叫寻址方式,共有8种寻址方式;一般是针对源操作数而言; 寻址方式分为两大类: 寻找操作数的地址 寻找要执行的下一条指令的地址 主要在程序转移(JMP)或过程调用(CALL)时用来寻找目的地址或程序入口地址 3.2.1 立即寻址 1、立即寻址(Immediate Addressing) 源操作数是一个立即数,8位或16位的整数; 操作数直接放在操作码的后面;若为16位则低8位在低地址单元,高8位在高地址单元存放。指令在内存中的存放形式: 2、直接寻址(Direct Addressing) 在指令的操作码后面直接给出操作数的16位偏移地址,与操作码一起存放在内存的代码段;低8位在前,高8位在后;默认段为DS数据段,允许段超越。 16位偏移地址必须用[ ]括起来。 MOV AL, [4000H] ;将DS:4000H之内容送入AL(字 节操作) MOV [2000H], BX ;将BL之内容送入DS:2000H 将BH之内容送入DS:2001H 注意:MOV AX, 2510H与 MOV AX, [2510H]的区别! 段超越 如果操作数不是存放在数据段DS中,则在指令中要用段超越符号加以说明; 如下例:MOV BX, ES:[1200H] 将ES段中偏移地址为1200H和1201H两单元的内容送到BX寄存器中
您可能关注的文档
最近下载
- 新规范监理实施细则.pdf VIP
- 老年康复习题.pdf VIP
- 2024全民反诈知识竞赛题库及答案(1-200道).docx VIP
- 高中二年级上学期数学《点到直线的距离公式》教学课件.pptx VIP
- 物业保安部管理服务手册.doc VIP
- 静电场中的能量单元测试-2024-2025学年高二上学期物理人教版(2019)必修第三册.docx VIP
- 【中国吸烟危害健康报告2020】.pdf VIP
- 浙江省宁波市南三县2024-2025学年八年级上学期期末考试数学试卷(含答案).docx VIP
- 2024-2030年中国氧化聚乙烯蜡(OPE蜡)行业市场发展趋势与前景展望战略分析报告.docx
- 信捷DS3-DS3E-DS3L系列伺服驱动器用户使用手册.pdf
文档评论(0)