80x86及Pentium指令系统立即数 寄存器 目标地址寻址 操作数在存储器中寻址

80x86及Pentium指令系统

  1. 位(bit):每一位只有两种状态0或1。计算机能表示的最小数据单位。
  2. 字节(Byte):8位二进制数为一个字节。计算机基本存储单元内容用字节表示。
  3. 字(Word):PC常将2个字节定义为一个字,一个字为16位二进制数。微处理器内部数据传输、处理基本单位。
  4. 指令:由0和1组成的代码。让微处理器进行某种操作的命令。
  5. 指令系统:一台计算机能识别的全部指令。
  6. 程序:为了使计算机完成某种工作而编制的一系列指令。
  7. 存储器:存储数据和程序。可以把存储器看成很多存储单元,每个存储单元存8位二进制编码(1字节)。存储单元编号称为存储地址。
  8. 存储容量单位:1B=8bit;1KB=1024B=1024×8bit;1MB=1024KB;

1.指令中包含的信息

  1. 指令中一般包含的信息有操作码和操作数 操作码用来指明操作动作和操作数存放位置。
  2. 操作数可分为两类,一类是数据型操作数,一类是地址型操作数,提供指令中要处理的操作数据或操作数所在位置的一些信息。
  3. 操作数的个数和所在位置不同,操作数的描述方法不同,指令长短也不同。
  4. 寻址指的是在指令中给出操作数的值或给出操作数所在位置的信息,解决操作数的值为多少,放在什么地方,操作结果送到哪里去的问题。
  5. 操作数可以处于计算机的指令代码中,CPU内部的寄存器中,存储单元中,I/O端口中。

2.寻址方式

寻址方式即寻找操作数或操作数所在位置的方式,操作数在计算机中所处的位置不同,寻址方式也不同。

8086CPU的数据寻址方式有隐含寻址方式,数据型操作数寻址方式,目标地址寻址方式。

隐含寻址方式,

  1. 指令中隐含规定了操作数所在位置,
  2. 如压栈指令隐含规定使用了SS和SP。

数据型操作数寻址方式:

  1. 立即数寻址,操作数在指令中;
  2. 寄存器寻址,操作数在寄存器中;
  3. 直接寻址、寄存器间接寻址、基址寻址和变址寻址、基址变址寻址、串操作寻址,操作数在存储器中;
  4. 直接I/O端口寻址、寄存器间接I/O端口寻址,操作数在I/O端口中。

目标地址寻址方式:

  1. 相对程序寻址,
  2. 直接程序寻址,
  3. 间接程序寻址。

3.数据型操作数寻址方式

3.1立即数寻址:

  1. 操作数直接存放在指令中,在操作码之后,取指令时直接存入处理器内部指令队列中.
  2. 执行时不需要执行总线周期,运行速度快,所以这种操作数称为立即数。
  3. 立即数可以是8位、16位、32位。如果是16位或32位数,操作码后紧跟着低字节,而后是高字节。
  4. 立即数只能作为源操作数,可用于给寄存器或内存赋值。
1.	立即数寻址举例
2.	MOV BL,10;               10进制数10送到8位寄存器BL中  
3.	MOV AX,12H;              
4.	MOV AX,'AB';              AL存42H,AH存41H  
5.	MOV CL,10011001B;  
6.	MOV EBX,10011001H; 

3.2寄存器寻址:

  1. 操作数在处理器的某寄存器中(通用寄存器和段寄存器)。
  2. 寄存器寻址不需要执行总线周期,运行速度快,
  3. 对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP和段寄存器CS、SS、DS、ES等;
  4. 对于8位操作数,寄存器可以是AL、BL、BH、CL、CH、DL、DH。
  5. 在80386以上CPU中,也可以是扩展的32位寄存器。
  6. 不允许的指令格式:段寄存器间直接传输,如MOV
    ES,DS;混合尺寸,如MOV BL,BX;代码段寄存器作为目标操作数,如MOV CS,AX;
1.	寄存器寻址举例
2.	MOV AL,BL;  
3.	MOV AX,BX;  
4.	MOV DX,AX;  
5.	MOV ESP,EDX; 

3.3操作数在存储器中:

  1. 需要用逻辑地址描述操作数所在的位置,用段基值:偏移量来描述操作数。
  2. 段基值存入段寄存器,偏移量用有效地址EA描述(effective address).
  3. 物理地址=段基值×16+EA。逻辑地址书写为段寄存器:[EA]。
  4. EA由三个地址分量合成,基址寄存器(BX或BP)内容、变址寄存器内容(SI或DI)、指令中给出的位移量三部分之和。
  5. 基址寄存器BP、BX只能选用其中一个,变址寄存器SI、DI也只能选用一个,
  6. 位移量n可以是0、8、16位二进制数,80386以上可为32位二进制数。EA中3个分量有4种组合方式,从而形成了4种寻址方式。
  7. 直接寻址:指令中直接给出操作数的有效地址,EA=n。直接寻址默认段寄存器为DS,可缺省,但是使用其他段寄存器必须指明。
1.	MOV AX,[200H];         将DS*16+200H所指向的字单元的内容传送到寄存器AX中  
2.	MOV AX,ES:[100H];      将ES*16+100H所指向字单元内容送入AX  
3.	MOV DA+3,CL;           将CL送到EA为DA+3,段基值为DS的存储单元中
3.3.1寄存器间接寻址:
  1. 操作数的有效地址EA直接从寄存器(BX、BP、SI、SD之一)中获得。
  2. 存放操作数有效地址的寄存器必须用[]括起来,表示寄存器内容为操作数的地址分量。
  3. 使用BP时默认段寄存器为SS,未使用BP时,默认段寄存器为DS。
1.	MOV AX,[BX];            DS和BX寻址的存储单元的字内容复制到AX中  
2.	MOV [BP],DL;            DL内容送到SS和BP寻址的存储单元  
3.	MOV ECX,SS:[EBX];       SS和EBX寻址的双字取出并送入32位寄存器ECX中  
4.	MOV DS:[BP],DL;         DL内容送到DS和BP寻址的存储单元,此时DS不能缺省  
3.3.2基址寻址和变址寻址:
  1. 操作数的有效地址EA是是基址寄存器(BP或BX)或变址寄存器(SI或DI)与指令中给出的位移量(0、8、16位数据)之和。
  2. 使用BP时默认段寄存器为SS,未使用BP时,默认段寄存器为DS。
1.	MOV AX,[DI+100H];      DS*16+DI+100H所指的存储单元的字送到AX  
2.	MOV BL,SETS[BP];       SS*16+SETS+BP所指的存储单元内容送到BL  
3.	MOV ARAY[EBX],AL;      AL内容送到DS*16+ARAY+EBX所指单元中
3.3.3基址变址寻址:
  1. 操作数的有效地址EA是三个地址分量之和,即一个基址寄存器内容,一个变址寄存器内容与指令中给出的位移量之和。
  2. 基址寄存器BX和BP只能选其中一个,变址寄存器SI和DI也只能选一个。
  3. 使用BP时默认段寄存器为SS,未使用BP时,默认段寄存器为DS。
1.	MOV DH,[BX+DI+20H];         DS*16+BX+DI+20H所指存储单元的内容送到DH  
2.	MOV AX,FILE[BX][SI]         DS*16+BX+SI+FILE所指的字存储单元内容送到AX  
3.	MOV ES:LIST[BP+DI],CL;      CL送到ES*16+BP+DI+LIST所指的存储单元中  
4.	MOV LIST[BP+SI+4],DH;       DH送到SS*16+BP+SI+4+LIST所指的存储单元中  
3.3.4串操作寻址:
  1. 源操作数为DS:[SI],目标操作数为 ES:[DI]。
  2. 串操作自动对SI、DI两个地址指针进行修改,使其指向下一单元,修改方向由标志寄存器FR中DF方向标志决定,DF=1,SI、DI自动减1或2;DF=0,SI、DI自动加1或2。
  3. 当字操作时指针增减量为2,当字节操作时指针增减量为1。
1.	MOVSB;    字节串传送,将DS:[SI]中的字节传送到ES:[DI]中,同时SI、DI自动减1(DF=1)或SI、DI自动加1(DF=0)2.	MOVSW;    字串传送,将DS:[SI]中的字节传送到ES:[DI]中,将DS:[SI+1]中的字节传送到ES:[DI+1]中,同时SI、DI自动减2(DF=1)或SI、DI自动加2(DF=0)

3.4操作数在I/O端口中:

  1. 分为8位地址直接寻址,16位地址DX间接寻址。
  2. I/O端口不分段,直接把输入/输出指令中给出的端口地址送上地址总线,数据只能由累加器AX或AL通过数据总线传输。
  3. I/O端口数据输入指令IN,I/O端口数据输出指令OUT。
1.	IN AL,n8;     将端口地址为n8的I/O端口中的8位数据读入AL中。  
2.	IN AX,n8;     将端口地址为n8的I/O端口中的16位数据读入AX中。  
3.	IN AL,DX;     将以DX内容为端口地址的I/O端口中的8位数据读入AL中。  
4.	OUT n8,AL;    将AL中的8位数据送到端口地址为n8的I/O端口中。  
5.	OUT n8,AX;    将AL中的16位数据送到端口地址为n8的I/O端口中。  
6.	OUT DX,AX;    将AX中16位数据从到以DX内容为端口地址的I/O端口中。  

4.目标地址寻址方式

目标地址寻址,操作数为目标地址,如转移指令中的目的地址、调用指令中的子程序入口地址等。

4.1直接程序寻址

  1. 指令中直接给出指令所需要的目标地址信息。
  2. 如果程序希望转移到1A000H处,目标地址以逻辑地址的形式跟在操作码后面,
  3. 如转移指令:JMP 1000H:A000H,由5个字节组成,1个字节为操作码,4个字节存放目标地址,执行指令时将1000H装入CS,A000H装入IP,使下一条指令从1A000H处执行。
  4. 汇编语言程序中,程序转移的目标地址通常不用实际的数字地址表示,而用叫做标号的内存地址名表示。
  5. JMP LP;跳转到标号LP处。CALL SUB1;调用标号为SUB1的子程序。

4.2相对程序寻址

  1. 指令书写时指明转移目标地址的IP值或标号,但是相应指令代码由操作码和1~2个字节位移量disp(补码)构成,
  2. disp=目标地址IP值-当前IP值,位移量disp是转移的目标地址相对于当前指令指针的距离信息。
  3. 例如JMP 0004H为2字节的相对转移指令,假设它已被存入偏移量为0000H的字单元中,取出该指令后的IP值=0002H为当前IP值,0004H为目标地址的偏移量,位移量disp=0004H-0002H=2,该指令的功能是将当前IP值加上disp,找到下一条程序指令所在单元的有效地址为0004H并存入IP中,使下条指令从1000H:0004H开始。

4.3间接程序寻址

  1. 指令中目标地址在寄存器中或在存储器中。
  2. 例如JMP [DI+2],指令的功能是转移到目标地址处,目标地址的有效值在DS:[DI+2]内存单元中,假设DS地址为1800H,DI为0100H。
  3. 第一步取指令,从当前的CS(1500H)和IP(0300H)内容指向的存储单元中取出3字节指令,取完指令IP=0303H称为当前IP值,CS值不变。
  4. 第二步寻找目标地址所在位置,物理地址:DS×16+DI+2=18102H。
  5. 第三步从物理地址指向的单元中取出里面的内容,假如是0A02H,放到IP中,从而使CP:IP指向下一条指令所在的位置1500H:0A02H。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机跨考土壤学,[北京林业大学]2005年土壤学复试办法_跨考网

[北京林业大学]2005年土壤学复试办法根据学校研究生院招生处关于落实《教育部关于做好2003年招收攻读硕士学位研究生工作的通知》通知的精神,土壤学科制定了本学科的《硕士研究生入学考试复试办法》。一、复试小组的组成原则和人数复式小组由…

信号与系统 傅里叶变换 拉普拉斯变换 z变换所有公式和性质 三个变换的联系 整理

这是我考研整理的笔记。基本上涵盖了信号与系统三大变换所有重要的公式。 1.傅里叶变换 2.拉普拉斯变换 3.Z变换 4.三大变换的关系

html表格支持响应,将表格响应转换为HTML表格

我试图将Fusion Table SQL响应转换为基本的HTML表格。这既适用于搜索引擎饲料,也适用于谷歌电子表格和它们的importhtml功能。将表格响应转换为HTML表格打开反应到表中的foreach都是一次调高一些不寻常的反应,就像1个字符?此外,答…

c语言内存分配与释放 不同类别变量的内存分配和释放的区别

1.不同变量使用内存的区别 静态存储类别的变量:内存数量在编译时确定,程序开始执行时创建,程序结束时销毁。(static、const)自动存储类别的变量:程序进入变量定义所在块时存在,离开块时销毁。新创建的变量按顺序加入内…

学计算机的一开学叫要带电脑吗,大一新生开学需要带电脑吗?辅导员给出建议,学生需提前了解...

高考已经落下帷幕,学生们在等待成绩的这段时间,可以适当的放松一些。其实考试成绩还未出来之前,很多同学心里都有底了。所以也开始考虑自己想要报考的专业与院校,甚至有些学生已经开始准备自己上大学需要带的各种用品。很多学生在…

方阵循环右移

题目 练习7-8 方阵循环右移 (20 分) 本题要求编写程序,将给定nn方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m1、⋯、n−1、0、1、⋯、n−m−1列。 输入格式: 输入第一行给出两个正整数m和n(1≤…

奥鹏17计算机应用基础离线,奥鹏《计算机应用基础》离线

期末作业考核《计算机应用基础》满分 100分一、判断对错(每小题1分,共10分)(√)1.冯.诺依曼提出的计算机体系结构奠定了现代计算机的结构理论基础。()2.DOS操作系统是一个单用户多任务操作系统。(√)3.没有装配软件系统的计算机不…

计算机专业对口升学模拟试题,2010对口升学模拟试题计算机专理论综合

对口升学模拟试题计算机专理论综合专业 计 算 机 学号 姓名 班级________________ 密 封 线2010年隆回九中计算机专业对口升学模拟试题计算机专业综合试题分第Ⅰ卷(选择题)和第Ⅱ卷(非选择题)两部分。满分390分,考试时间150分钟。第Ⅰ卷(选择题 共130分)注意事项&am…

c语言使用指针在被调函数中改变主调函数的变量 地址运算符 间接运算符

1.指针 用于存储变量的地址 指针是一个值为内存地址的变量。 2.&运算符(地址运算符) &后跟一个变量名,给出变量的地址 &a,表示变量a的地址3.*运算符(间接运算符/解引用运算符) *后跟一个指针名或地址,给出存储在指针指向地…

西电计算机学院导师苗启广,Xidian Media Lab

西电媒体实验室首位博士生简萌顺利通过博士学位论文答辩2015年11月27日上午,西电媒体实验室博士学位论文答辩会在北校区科技楼A301B会议室举行,郑喆坤教授指导的首位博士生简萌顺利通过博士学位论文答辩。本次答辩委员会主席由西北工业大学自动化学院副院…

C语言程序设计基础练习题

PTA上C语言程序设计练习题,包含 换硬币、水仙花数、最大公约数最小公倍数、高空坠球、猴子吃桃、兔子繁衍、出租车计价、三角形判断、简单计算器、平面向量加法。 这些题需要一些细节或思维。 1.换硬币: 习题4-5 换硬币 (20 分) 将一笔零钱换成5分、2…

使用zigbee的协议栈进行协调器路由器终端初始化

实验目的: 使用协议栈,外加自己写的数码管的代码模块 配置协调器路由器终端,各自对应数码管数字C,R,E。 本身不是很细致,只是把一些重要步骤截了一下,IAR工程什么的默认大家都会了。 zigbee协议栈的下载 下载完找以下文件夹 找…

工程用计算机是什么样子的,【2人回答】学软件工程的应该买什么样的处理器电脑?-3D溜溜网...

回答:1、荣耀MagicBook Pro 2020:,荣耀MagicBook Pro 2020还搭载了MX350独显,MX350基于同GTX 1050一样的GP107核心,让笔记本具备了一定的游戏能力,学习、办公之余的游戏场景也可以从容应对,编程…

zigbee无线通信数码管实验、usbDongle抓包、发字符串

文章目录无线通信数码管实验无线通信抓包usbDongle无线通信发字符串:无线通信数码管实验 给一个模块下载发送程序,模块数码管变为1,说明该模块已成为发送模块。 给一个模块下载接收程序,模块数码管变为2,说明该模块已…

计算机安全加固自动检查,Windows主机安全加固检查列表.doc

第 PAGE 13 页 共 NUMPAGES 13 页目 录TOC \o "1-3" \h \z \u HYPERLINK \l "_To 1账户管理 PAGEREF _To\h 3HYPERLINK \l "_To 1.1用户管理 PAGEREF _To\h 3HYPERLINK \l "_To 1.2弱口令修改 PAGEREF _To\h 3HYPERLINK \l "_To 1.3密码策略 PAG…

zigbee协议栈的系统相关函数的使用 仿照协议栈写事件

文章目录1.osal_set_event函数的使用2.osal_start_timerEx函数,数码管变成c,两秒钟以后,灯点亮。3.我们能不能自己添加一个事件而不用GENERICAPP_SEND_MSG_EVT事件。主要就是通过这个实验知道了:怎么在初始化时候干一些事情那些函…

老年人自学计算机,老年人怎样学电脑?请问从网上能找到学习资吗?

首先学一些基础的知识,这样入门之后其他的就好说了!推荐一些基础性的知识:计算机基础可以分为硬件和软件硬件:主板、CPU、硬盘、内存、显卡、机箱电源、鼠标键盘、光驱、音响等软件:WINDOWS系统、OFFICE等一般基本工具…

zigbee上位机通过vs2019的mfc实现

文章目录一、操作系统和输入输出设备的联系二、应用程序和操作系统的联系三、zigbee上位机具体实现结果:四、实现上位机的具体流程:五、通过windows API实现串口通信的原理:一、操作系统和输入输出设备的联系 操作系统能操纵输出设备执行特定…

网上读书关于软件测试,【读书笔记】之软件测试

1.引论1.1 什么是软件测试软件测试主要是对制作的软件产品进行检查和测试,及时地发现程序中的故障和逻辑错误,以保障软件产品的可靠性。软件测试是保证软件质量的关键步骤,也是提高软件可靠性的重要手段,因此它是软件工程的的重要…

matlab guide 自定义右键菜单

在一个gui图形显示界面上点击右键,出现一些选项可以进行操作。 实验效果: 找到菜单编辑器的上下文菜单: 我们看几个回调函数即可: function clear_Callback(hObject, eventdata, handles) cla; function gridoff_Callback(hObj…