寻址方式与汇编语言

合集下载

汇编语言程序设计及上机指导第3章指令格式与寻址方式

汇编语言程序设计及上机指导第3章指令格式与寻址方式

高地址
(2)寄存器间接寻址
返回
操作数在存储器中,而操作数的有效地址EA却在指定的寄存器中,
即 EA=[寄存器]
1)16位寻址时,EA放在SI、DI、BP或BX中。
若以SI、DI、BX间接寻址,则默认操作数在DS段中。
MOV AX,[SI]
;默认DS为段基址
若以寄存器BP间接寻址,则默认操作数在堆栈段中。
BX,BP
SI,DI
不用该分量,默 认为1
0,8,16(位)
所有32位通用寄存器
除ESP外的所有32位 通用寄存器
1,2,4,8(倍)
0,8,32(位)
所有32位/64位通用寄存 器(16个)
所有32位/64位通用寄存 器(16个)
1,2,4,8(倍)
0,8,32,64(位)
如:ADD AX,20[BX][SI]
MOV ECX,[EBP+50] ;也可写成 MOV ECX,50[EBP]
MOV DX,[EAX+BASE] ;也可写成 MOV DX,BASE[EAX]
BASE是符号常量或变量
MOV ECX,[EBP+50]指令执行时,EBP寄存器内容为3000H,再加上 位移量50H之和为3050H,然后把由SS寄存器寻址的段中的3050H 单元的32位数据传送给ECX。
最常用的数据传送指令MOV的格式为: MOV DEST,SRC ;将源操作数SRC的值传送至目的操作数
【例】 MOV EAX,EBX ;将EBX的值送给EAX
2019/6/4
3.2.2 有效地址的概念
返回
在80X86系列CPU中,内存单元的地址由两部分组成:
段基地址和段内偏移地址(也称段内偏移量)

河北专接本微机原理简答题

河北专接本微机原理简答题

河北专接本微机原理简答题摘要:一、微机概述二、8086/8088微处理器三、半导体存储器四、寻址方式五、汇编语言六、中断技术七、输入输出设备八、IO接口九、操作系统正文:河北专接本微机原理简答题主要涉及微机的基本组成和功能,8086/8088微处理器,半导体存储器,寻址方式,汇编语言,中断技术,输入输出设备,IO接口以及操作系统等方面的知识。

首先,微机是由CPU、存储器、输入输出设备和系统总线等组成的。

其中,CPU是微机的核心,负责统一协调和控制系统中的各个部件;存储器用于存放程序和数据;输入输出设备和系统总线则负责实现微机的输入输出功能。

其次,8086/8088是常用的微处理器,它的内部集成了计数器、寄存器和运算器等组件。

它的工作原理是通过不断地取指令、执行指令来完成各种操作。

半导体存储器是微机中用于存储数据和程序的一种设备,它由大量的半导体芯片组成,每个芯片可以存储一定数量的数据。

寻址方式是CPU用于指定在存储器中存储的数据的地址的方式,它包括直接寻址、间接寻址、寄存器寻址和寄存器间接寻址等方式。

汇编语言是一种低级语言,它用助记符来代替机器码,用地址来表示操作数的地址。

汇编语言的程序需要经过汇编器编译成机器码才能被CPU执行。

中断技术是CPU在执行程序时,由外部设备或内部设备发出中断请求,CPU响应中断请求,暂停当前程序的执行,转去处理中断请求的过程。

输入输出设备是微机中用于与外部设备进行数据交换的设备,包括键盘、鼠标、显示器、打印机等。

IO接口是连接输入输出设备和CPU的桥梁,它负责实现数据在输入输出设备和CPU之间的传递。

操作系统是管理微机硬件和软件资源的程序,它提供了用户和计算机硬件的接口,用户通过操作系统来操作计算机。

汇编语言寻址方式

汇编语言寻址方式
80x86的寻址方式
计算机是通过执行指令序列来解决问题的,因此每种计算机都 有一组指令系统提供给用户使用,这组指令集就称为计算机的 指令系统。 计算机中的指令由操作码字段和操作数字段两部分组成。 操作码 操作数 ... 操作数
指令的操作码字段在机器里面的表示比较简单,只需对每一种 操作指定确定的二进制代码就可以了。 指令的操作数字段情况较为复杂。 确定指令中用于说明操作数所在地址的方法称为寻址方法。 8086/8088有七种基本的寻址方式。
1.立即寻址方式 操作数就包含在指令中,它作为指令的一部分,跟在操作后存 放在代码段,这种操作数就称为立即数。 立即数可以是8位的,也可以是16位的。 如果是16位立即数,按“高高低低”原则进行读取。 例如:MOV AX, 1234H
再如:MOV AL, 5 MOV BX, 2064H
则执行指令后(AL)=05H 则执行指令后,(BX)=3064H
指令中也可指定段超越前缀来取得其它段中的数据。 如,MOV AX , ES : [BX] 引用的段寄存器是ES 请熟悉下面的表达形式: MOV [SI] , AX ; 目的操作数间接寻址 MOV [BP] , CX ;目的操作数引用的段寄存器是SS MOV SI , AX; 目的操作数寄存器寻址
5.寄存器相对寻址方式 操作数在存储器中,操作数的有效地址是一个基址寄存器 (BX、BP)或变址寄存器(SI、DI)内容加上指令中给定的8 位或16位位移量之和。 即:
7.相对基址加变址寻址方式 操作数在存储器中,操作数的有效地址是由: 基址寄存器之一的内容与变址寄存器之一的内容 及指令中给定的8位或16位位移量相加得到。 即:
在一般情况下,如果BP之内容作为有效地址的一部分,那么 引用的段寄存器是SS;否者以DS之内容为段值。 在指令中给定的8位或16位位移量采用补码形式表示。在计算 机有效地址时,如果位移量是8位,那么被带符号扩展成16位。 当所取得的有效地址超过FFFFH是,就取64K的模。

汇编语言--操作数的寻址方式(三)

汇编语言--操作数的寻址方式(三)

汇编语⾔--操作数的寻址⽅式(三)三、操作数的寻址⽅式操作数是指令或程序的主要处理对象。

如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。

在CPU的指令系统中,除NOP(空操作指令)、HLT(停机指令)等少数指令之外,⼤量的指令在执⾏过程中都会涉及到操作数。

所以,在指令中如何表达操作数或操作数所在位置就是正确运⽤汇编指令的⼀个重要因素。

在指令中,指定操作数或操作数存放位置的⽅法称为寻址⽅式。

操作数的各种寻址⽅式是⽤汇编语⾔进⾏程序设计的基础,也是本课程学习的重点之⼀。

微机系统有七种基本的寻址⽅式:⽴即寻址⽅式、寄存器寻址⽅式、直接寻址⽅式、寄存器间接寻址⽅式、寄存器相对寻址⽅式、基址加变址寻址⽅式、相对基址加变址寻址⽅式等。

其中,后五种寻址⽅式是确定内存单元有效地址的五种不同的计算⽅法,⽤它们可⽅便地实现对数组元素的访问。

另外,在32位微机系统中,为了扩⼤对存储单元的寻址能⼒,增加了⼀种新的寻址⽅式——32位地址的寻址⽅式。

为了表达⽅便,我们⽤符号“(X)”表⽰X的值,如:(AX)表⽰寄存器AX的值。

1、⽴即寻址⽅式操作数作为指令的⼀部分⽽直接写在指令中,这种操作数称为⽴即数,这种寻址⽅式也就称为⽴即数寻址⽅式。

⽴即数可以是8位、16位或32位,该数值紧跟在操作码之后。

如果⽴即数为16位或32位,那么,它将按“⾼⾼低低”的原则进⾏存储。

例如:MOV AH, 80H ADD AX, 1234H MOV ECX, 123456HMOV B1, 12H MOV W1, 3456H ADD D1, 32123456H其中:B1、W1和D1分别是字节、字和双字单元。

以上指令中的第⼆操作数都是⽴即数,在汇编语⾔中,规定:⽴即数不能作为指令中的第⼆操作数。

该规定与⾼级语⾔中“赋值语句的左边不能是常量”的规定相⼀致。

⽴即数寻址⽅式通常⽤于对通⽤寄存器或内存单元赋初值。

图3.1是指令“MOV AX, 4576H”存储形式和执⾏⽰意图。

汇编语言第3章 指令系统和寻址方式

汇编语言第3章 指令系统和寻址方式

5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)

汇编语言-寻址方式

汇编语言-寻址方式

在一般情况下,如果BP之内容作为有效地址的一部分,那么 引用的段寄存器是SS;否者以DS之内容为段值。
例如:如果(DS)=2100H ,(BX)=0158H,(DI)=10A5H MOV AX, [BX][DI] 假设该字存储单元的内容如下,则(AX)=1234H
下面两种表示方法是等价的: MOV AX , [BX + DI] MOV AX , [DI][BX] 下面指令中,目的操作数采用基址加变址寻址,引用的段寄存 器是DS。 MOV DS :[BP + SI] , AL 下面指令中,源操作数采用基址加变址寻址,引用的段寄存器 ES。 MOV AX , ES :[BX + SI] 这种寻址方式适用于处理数据或表格。用基址寄存器存放数组 首地址,而用变址寄存器来定位数组中的各元素。或反之。 由于两个寄存器都可改变,所以能更加灵活地访问数组或表格 中的元素。
80x86的寻址方式
计算机是通过执行指令序列来解决问题的,因此每种计算机都 有一组指令系统提供给用户使用,这组指令集就称为计算机的 指令系统。 计算机中的指令由操作码字段和操作数字段两部分组成。 操作码 操作数 ... 操作数
指令的操作码字段在机器里面的表示比较简单,只需对每一种 操作指定确定的二进制代码就可以了。 指令的操作数字段情况较为复杂。 确定指令中用于说明操作数所在地址的方法称为寻址方法。 8086/8088有七种基本的寻址方式。
请熟悉下面的写作形式: MOV BX , [BP-4] 源操作数间接相对寻址,引用的段寄存器是SS。 MOV ES : [BX + 5] , AL 目的操作数采用寄存器相对寻址,引用的段寄存器是ES。 指令MOV AX , [SI + 3]与MOV AX , 3[SI]是等价的。

汇编的寻址方式

汇编的寻址方式

在汇编语言中,寻址方式指的是指令如何访问内存中的操作数或数据。

不同的处理器体系结构支持不同的寻址方式。

以下是一些常见的寻址方式:立即寻址(Immediate Addressing):操作数直接包含在指令中。

例如:MOV AX, 5 ; 将寄存器AX 设置为立即数5寄存器寻址(Register Addressing):操作数位于寄存器中。

例如:MOV AX, BX ; 将寄存器BX 的值移动到寄存器AX直接寻址(Direct Addressing):操作数的地址直接指定在指令中。

例如:MOV AX, [1234] ; 将内存地址1234 处的数据移动到寄存器AX寄存器间接寻址(Register Indirect Addressing):指令中包含一个寄存器,该寄存器包含操作数的地址。

例如:MOV AX, [BX] ; 将寄存器BX 中存储的地址处的数据移动到寄存器AX基址寻址(Base Addressing):使用基址寄存器加上一个偏移量来计算内存地址。

例如:MOV AX, [BX + 10] ; 将寄存器BX 加上偏移量10 后的地址处的数据移动到寄存器AX相对寻址(Relative Addressing):操作数的地址是相对于当前指令位置的偏移量。

例如:JMP label_name ; 无条件跳转到标签label_name 处变址寻址(Indexed Addressing):使用一个寄存器的值作为基址,另一个寄存器的值作为偏移量。

例如:MOV AX, [SI + DI] ; 将寄存器SI 和DI 中的值相加,然后将结果作为地址处的数据移动到寄存器AX相对基址寻址(Relative Base Addressing):使用基址寄存器和相对偏移量的组合。

例如:MOV AX, [BX + 10] ; 将寄存器BX 加上偏移量10 后的地址处的数据移动到寄存器AX这只是一些基本的寻址方式,具体的汇编语言和处理器架构可能会有其他特定的寻址方式。

汇编语言2-1寻址方式

汇编语言2-1寻址方式

EA =
+
பைடு நூலகம்
注意: 允许段超越。 注意:①允许段超越。 ②[BX+BP]或[SI+DI]是非法搭配 或 是非法搭配
例: MOV AX, [BX] [SI] MOV AX, [BX+SI] MOV AX, DS: [BP] [DI] 错误例: 错误例: × MOV AX, [BX] [BP] × MOV AX, [DI] [SI]
指令操作例:MOV AX,DATA[DI][BX] 指令操作例: , 操作例 若DS=8000H, BX=2000H, DI=1000H, DATA=200H 则指令执行后AH=[83201H], AL=[83200H] 则指令执行后
目的 源
指令举例:
MOV AX , BX 操作码 操作数 ADD AX,[SI+6] INC HLT [BX]
二、8086的操作数分类
立即数(常数) 1、立即数(常数)
取值范围如下表: 取值范围如下表 8位 无符号数 00H-FFH(0-255)
带符号数80H-7FH(-128~127)
16位 0000H-FFFFH(0-65535)
存储器寻址方式
1、 立即寻址 、
直接把参与操作的数据写在指令中,是指令的一部分, 直接把参与操作的数据写在指令中,是指令的一部分,该数 据称为立即数。操作数可以是各种数制下的数值(相当于8位 据称为立即数。操作数可以是各种数制下的数值(相当于 位 位二进制数),也可以是带单引号的字符。 或16位二进制数),也可以是带单引号的字符。 位二进制数),也可以是带单引号的字符 强调: 强调:立即寻址只能用于源操作数 例如: 2050H,执行后, 执行后, 例如: MOV AX,2050H ; AX , 执行后 MOV AL,05H , ;AH = 20H,AL = 50H , MOV AL,‘A’ , 观察指令: 观察指令: MOV 05H,AL MOV BL,324D , , MOV CH,2050H MOV DL,‘25’ , , 注意: 立即数永远不能作目的操作数。 注意:1. 立即数永远不能作目的操作数。 2. 源操作数和目的操作数要互相匹配。 源操作数和目的操作数要互相匹配。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不易记忆,十分繁琐。
2. 汇编语言
用机器指令系统的助记符(能反映指令特征和操作 性质的英文单词或英文缩写),用符号代替操作数来编 写的程序称为汇编语言程序。
•功能:将累加器A赋值1
•汇编语言: LDAA #$1
•LDDA:LOAD Accumulator A
特点:
•#$1:就是数1
用汇编语言编写的程序不仅执行速度快,又可以有效地
$491单元
数学运算指令
• 加法指令ADD:
– 8位加法指令ABA、 ADDA、 ADDB、 ADCA、ADCB – 16位加法指令ABX、ABY、 ADDD
• 减法指令SUB:
– 8位减法指令SBA、SUBA、SUBB、SBCA、SBCB – 16位减法指令SUBD
• 十进制调整指令:DAA (只能用在结果在A中的 加法指令)
• 如: •
若X=$1000 LDAB A,X LDAA D,X
;B=[X+A] ;A=[X+D]
8.带自动加减的5位偏移量间接寻址
• 有“先加、先减、后加、后减”四种方式。 • 基址寄存器可以是X,Y,SP。 • 主要用于数据块复制。 • 如: MOVW 2, X+, 4, +Y • ;执行该指令,将X开始单元的两个单元内
• 加一指令:INC、INCA、INCB、INS、INX、INY • 减一指令:DEC、DECA、DECB、DES、DEX、
DEY
数学运算指令
• 乘法指令MUL:
– 无符号16位数乘法EMUL
(D)×(Y)送Y:D
– 有符号16位数乘法EMULS
(D)×(Y)送Y:D
– 无符号8位数乘法MUL
(A)×(B)送
如PSHD指SP减二,D数据高位(A)传送到SP指 向单元,低位(B)传送到SP+1指向单元。
PULD指SP指向单元数据传送到D高位(A), SP+1指向单元数据传送到低位(B), SP加二。
数据传输指令举例
;++++加载/存储++++
LDAA #$55
;A累加器加载$55
STAA $480
;把A的内容存到内存$480
• 立即数寻址方式常用来给寄存器赋值。 • 注:立即数前加#
• LDAA #$55;
– 表示将十六进制立即数55加载到累加器A中
• LDX #1234;
– 表示将十进制数1234加载到X中
• LDY #%01010101;
– 表示将二进制数00100110加载到Y中
3. 直接寻址
• 操作数是单字节地址(8位),范围是$00~$FF, 共256个单元,一般访问I/O寄存器。
STAA:Store Accumulator A
5. 相对寻址
• 相对转移指令。操作数为单字节
• 如:
LABEL1: …

BRA
LABEL1


BRA:Branch always
6. 变址寻址
• 操作数由基地址寄存器(X、Y、 NhomakorabeaP、PC) 加偏移量构成。
• 如: 若X=$1000 LDAA 0,X LDAA 7,X
LDAB $480
;$480内容加载到B
INCB
;B内容自加1
STD $485
;D内容送$485
;++++传送交换指令++++
LDAB #$AA ;立即数$AA送B
TAB
;A送B
LDAB #$AA ;立即数$AA送B
EXG A,B
;A B交换
;++++MOVE指令++++
MOVW #$1234,$490;立即数$1234传送到$490和
• NOP是单字节指令,只让程序计数器PC加1 • PSHA首先移动SP指针,再压入数值
2. 立即数寻址
• 在立即数寻址方式下,指令中的操作数 (参与运算的数)就直接存放在机器代码 中,紧跟在操作码之后。
• 这条指令汇编成机器代码后,操作数作为 指令的一部分存放在操作码之后的主存单 元中。称这种操作数为立即数
1. 隐含寻址
• 定义:只有操作码,没有操作数或操作数为寄 存器,不显示操作数。
• 如:NOP(单片机延时用)PSHA、PSHB、 PSHX、PSHY,隐含操作数分别为无、A、B、 X、Y。
• 一般是单字节指令
隐含寻址举例
NOP PSHA
;PC=C003,A=CB,SP=500 ;PC=C004,A=CB,SP=500 ;A=CB,SP=4FF(说明:500-1),[4FF]=CB
A:B
• 除法指令DIV:
– 无符号32位数除以16位数EDIV
– 有符号32位数除以16位数EDIVS
– 无符号16位数除以16位数的小数除法FDIV
– 无符号16位数除以16位数IDIV
– 有符号16位数除以16位数IDIVS
• 乘加指令EMACS
数学运算指令
• 最大、最小值指令
– MAXA、 MINA :A中数据与内存单元字节型数据比 较,较大的传送到A
寻址方式与汇编语言
2010年7月 控制科学与工程学院
汇编语言的指令格式 寻址方式 汇编语言
单片机语言
1. 机器语言
用机器能够直接识别的二进制指令代码(即机器码或 可执行的目标代码)编写的程序称为机器语言。
•功能:将累加器A赋值1 •机器码:86 01
•86:告诉单片机要实现什么功能 •01:就是数1 特点: 执行速度快
执行TAB指令后,累加器B中的数据为$55。
• EXCHANGE交换指令指寄存器的数据与寄存器数据交 换:
– EXG、XGDX、XGDY、SEX – 如: 若A中数据为$55,B中数据为$aa
执行EXG A,B后,A中数据为$aa,B中数据为$55。
• LEA有效地址加载指令:
– LEAS、LEAX、LEAY – 如: LDY #$2000 LEAS 4,Y+
– BSET:将立即数与内存单元M内容或操作,将结 果送内存单元
• 逻辑左移指令:LSL、LSLA、LSLB、LSLD
– 将内存字节、A、B、D内容带C左移
• 逻辑右移指令:LSR、LSRA、LSRB、LSRD
– 将内存字节、A、B、D内容带C右移
逻辑运算指令
• 算术左移指令:ASL、ASLA、ASLB、ASLD
– MAXM、 MINM:A中数据与内存单元字节型数据比 较,较大的传送到内存单元
– EMAXD、 EMIND :D中数据与内存单元中两个相临 字节型数据组成的字数据比较,大者送D
– EMAXM 、EMINM:D中数据与内存单元中两个相临 字节型数据组成的字数据比较,大者送内存单元
数学运算综合举例
• FREESCALE的MCU采用“低字节数放高 位地址单元,高字节数放低位地址单元”。
• (1)若:[$4000]=$12, [$4001]=$34

执行 LDX $4000 指令后,

XH(高8位)=$12, XL=$34
• (2)又如: STAA $4000
• ;执行结果为A的内容存到$4000单元
• 在$2000单元开始存放字节型数据 $10,$30,$04,$A0,在$2010单元开始存放 字节型数据$11,$1A,$09,$1F,分别使用加、 减、乘、除四中运算处理对应位置的数据。 并把结果存到$2020开始的内存单元中。
• 例子程序见word文档 • 实际程序见:2-shuxue-example
LDX $2000 ;将$2000和$2001单元数据加载到X
• STORE指令指从寄存器到内存数据传送
– STAA、STAB、STD、STS、STX、STY – 如:STAA $1000 ;将A的内容存到$1000单元
STY $2000 ;将Y的内容存到$2000和$2001单元
• MOVE指令指从内存到内存数据传送
容(一个字)传送到Y+4开始的两个单元, 传送完成后X内容加2。
MOVW: move a word (两字节) of data from one memory location to another
指令系统
• 数据传输(加载寄存器、传送到内存、内存之间的传 输、寄存器间的传输、数据交换、加载有效地址、堆 栈操作)指令
‘jkl”990’、”ADDX00’8”
(汇编语言中字符串单引号与双引号无区别,内部有双引 号就用单引号,反之亦然。)
寻址方式
• 寻址:操作数指定了参与运算的数或者 数所在的地址。在单片机的存储空间中, 寻找指令规定的操作数的地址。
• 9S12内核有8种寻址方式。
• 隐含寻址 • 立即数寻址 • 直接寻址 • 扩展寻址 • 相对寻址 • 变址寻址 • 累加器变址寻址 • 带自动加、减的5位偏移量变址寻址
• 如: LDAA $55
表示将$55内存单元的数据加载到累加器A。
执行前:[55]=0,A=CB 执行后:[55]=0,A=0 A指八位
4. 扩展寻址
• 操作数为16位(双字节)地址,可访问64K空间。 • 如: LDX $4000
将$4000和$4001内存单元的数据加载到X。 (X表示16位)
• 取反指令:COM、COMA、COMB
– 对内存单元、A、B进行取反运算并存储
• 求补指令:NEG、NEGA、NEGB
– 对内存单元、A、B进行求补运算并存储
逻辑运算指令
• 位测试指令:BITA、BITB
– 将A或B与内存单元内容作与操作,改变标志位
相关文档
最新文档