立即寻址方式 3.2中为什么第五个是立即寻址方式

第3章 16位32位微处理器指令系统(寻址方式部分)-工作总结范文网
全站搜索:
您现在的位置:&>&&>&计算机硬件及网络
第3章 16位32位微处理器指令系统(寻址方式部分)
第3章 16位/32位微处理器指令系统指令:要求计算机执行各种特定操作的命令。 ?指令系统:微机能够识别和执行的全部指令集合。 ?不同的微处理器所对应的指令系统也不相同。?3.1 3.2 3.3指令的基本格式 的寻址方式 的指令系统 3.1 指令的基本格式3.1.1 指令的构成 3.1.2 的指令格式 3.1.1 指令的构成指令通常应提供的信息1. 做什么操作 2. 操作数从哪里来 3. 操作结果放在哪里?包括两部分: ? 操作码:表示操作性质 ? 操作数:给出操作对象。 MOV AX,1234HADD AX,1234H 3.1.2 的指令格式基本格式: [标号:] 操作码助记符 目的操作数,源操作 数 [;注释] ? 标号:为该条指令所在内存单元的符号地址, 后面要跟冒号。标号一般由字母开头,后跟字 母、数字或特殊字符,不允许使用保留字。 注意: ? 操作码助记符:指示 CPU执行什么样的操作。 1)有些指令操作数只有一个, ? 操作数:分目的操作数和源操作数两种。目的 如:INC 目标操作数 操作数是指令结果存放的位置,源操作数是指 2)有的指令形式上无操作数, 令操作的对象。 如:CLC,HLT等 ? 注释:说明本条指令或一段程序的功能,使程 序可读性强。汇编程序对其不进行处理。 3.2 的寻址方式寻址方式:操作数的寻址方式就是指寻 找操作数位置的方式。立即数寻址:操作数在指令中寻址方式寄存器寻址:操作数在寄存器存储器寻址:操作数在存储器中I/O端口寻址:操作数在外设 1.立即寻址?操作数包含在指令中,这种操作数称为立即数 ? 可以是8位数值(00H~FFH) ? 也可以是16位数值(0000H~FFFFH)?MOV AL,80H;将80H送入AL MOV AX,306AH;将306AH送入AX立即数寻址方式常用来给寄存器和存储单元赋值。 操作数直接在指令中取得,不需要使用另外的总线 周期,执行时间短、速度快。? ? 目的源example低地址MOV AL, 80H ; MOV AX, 3064H ;存储器操作 码AX64高地址代 码 段30 立即寻址?立即数可以为8位,也可以为16位。如果是16位数, 则“高位字节存放在高地址中,低位字节存放在低地址中。”立即寻址方式常用于给寄存器赋值,并且只能用于 源操作数,而不能用于目的操作数。 例如:MOV 12H,BH × 2.寄存器寻址???操作数在CPU的内部寄存器中: ? 8位寄存器: AH、AL、BH、BL、CH、CL、DH、DL ? 16位寄存器: AX、BX、CX、DX、SI、DI、BP、SP ? 4个段寄存器: CS、DS、SS、ES MOV AL,BL;将BL的内容传送到AL中 MOV BX,AX;将AX的内容传送到BX中 采用寄存器寻址的指令在执行时,操作数就在CPU中,不需 要访问存储器来取得
上一篇: 下一篇:
All rights reserved Powered by
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。一、课程简介(略)
二、指令的寻址方式
2.1 寻址方式
汇编指令由操作码字段和操作数字段构成。对于双操作指令,第一个操作数称为目的操作数,表示操作后的结果;第二个操作数称为源操作数,表示来源操作数。两者以逗号分隔。如:
所谓寻址方式,即指令中提供操作数或操作数地址的方式。通俗地说就是寻找操作数地址的方法。寻址方式的数量代表了微机系统对存储器管理能力的强弱,合理地使用寻址方式可以扩大访存空间,缩短指令长度,满足各种程序设计需要。与数据有关的寻址方式划分为三类:立即寻址方式,寄存器寻址方式,存储器寻址方式。
2.2 七种与数据有关的寻址方式
要求掌握下列七种与数据有关的寻址方式。其中后五种属于存储器寻址方式。
立即寻址方式(Immediate addressing)
寄存器寻址方式(Register addressing)
直接寻址方式(Direct addressing)
寄存器间接寻址方式(Register indirect addressing)
寄存器相对寻址方式(Register relative addressing)
基址变址寻址方式(Based indexed addressing)
相对基址变址寻址方式(Relative based indexed addressing)
我们看到,常用的寻址方式有7种之多,到底选择哪一种为好呢?选择寻址方式有两条原则:第一实用,第二有效。最终都应达到运行速度快、指令代码短的高效率目标程序的目的。立即寻址和寄存器寻址无论从指令长度和指令执行时间都比存储器寻址要好,但是也要根据具体情况选用。学会使用寻址方式是理解指令作用的关键,也是掌握程序设计技巧的一种途径。
1. 立即寻址方式
所要找的操作数直接写在指令中,这种操作数叫立即数。在中立即数是8位或16位的,在80386以上可以是32位的立即数。立即寻址方式用来表示常数。
在DEBUG下数据都是十六进制表示的,因此不需要用H标注,同时要把十进制变为十六进制才行。在DEBUG下执行:
MOV AX,3060
MOV BL,FF
MOV BX,A46D
MOV CX,17
接着用T命令单步执行,观察各寄存器的值。注意:执行T命令之前,指令指针寄存器IP的值要用R IP 修改成第一条指令的偏移地址,这样T命令才能从第一条指令开始执行。
2. 寄存器寻址方式
在寄存器寻址方式中,操作数在寄存器中,在指令中指定寄存器名即可。
在DEBUG下执行:
MOV BX,1234
MOV AX,BX
MOV CL,AH
MOV AX,4650
接着用T命令单步执行,观察各寄存器的值。要注意指令指针IP的值是否指向了要执行的指令。
3. 直接寻址方式
操作数存放在内存中。操作数的偏移地址(也称为有效地址EA)直接写在指令中。
(1)存储器读操作
MOV指令可以实现CPU对存储器的读写。若传送指令的目的操作数是CPU的寄存器,源操作数是存储单元,就完成了对存储器的读操作。
例1 MOV AX,DS:[2000H]该指令表示从数据段的2000H单元读出一个字送入AX。
(2)存储器写操作
如果要实现CPU写内存操作,只要把MOV指令的目的操作数变为存储单元,源操作数为CPU的寄存器即可。
例2 MOV DS:[4000H],AX将AX的值写入数据段的4000H单元。
在DEBUG下执行:
MOV AX,DS:[2000]
MOV DS:[4000],AX
接着用T命令单步执行,观察AX寄存器的值;用D DS:2000和D DS:4000命令观察这两个存储单元的值。
4. 寄存器间接寻址方式
操作数存放在内存中。指令形式如: MOV AX,[BX]操作数的EA在基址寄存器BX、BP或变址寄存器SI、DI中,而操作数的段地址在数据段DS或堆栈段SS中。如果有效地址由BX、SI、DI指出,则默认为对应于数据段,而用BP指出则对应于堆栈段。
思考一下,在DEBUG下执行时,如果按照上例给出的数据段地址和BX值来执行,如何实现呢?执行后怎样看到AX=2364H?
-R DS 1500
-D DS:4580
MOV BX,4580
MOV AX,[BX]
接着用T命令单步执行,观察AX寄存器的值。注意:指令指针IP的值是否指向了要执行的指令?
5. 寄存器相对寻址方式
操作数存放在内存中。指令形式如: MOV AX,[BX+1200H]操作数的EA是一个基址或变址寄存器的内容再加上8位或16位位移量之和。也就是说在寄存器间接寻址的基础上,增加一个相对量(位移量)。这个位移量可以是立即数,也可以是符号地址。
思考一下,如果按照上例给出的参数来执行,在DEBUG下执行时如何修改指令呢?执行后怎样看到AX=2428H?提示:符号地址TOP直接用25H表示。
-R DS 1500
-D DS:7335
MOV SI,7310
MOV AX,25[SI]
接着用T命令单步执行,观察AX寄存器的值。注意:执行T命令之前,指令指针寄存器IP的值要用R IP 修改成第一条指令的偏移地址。
6. 基址变址寻址方式
操作数存放在内存中。指令形式如: MOV AX,[BX+SI]操作数的EA为一个基址寄存器和一个变址寄存器的内容之和。 自己做:按照上例给出的参数来执行,在DEBUG下执行指令后能看到AX=9534H。
7. 相对基址变址寻址方式
操作数存放在内存中。指令形式如: MOV AX,[BX+SI+1200H]操作数的EA为一个基址寄存器加一个变址寄存器再加一个位移量,三者之和。可用于二维表查表和栈处理。自己做:自定各个寄存器的参数,在DEBUG下执行指令后得到AX=3568H。
三、寻找操作数
本节实验取自教材中第三章的《实例三 寻找操作数》。
3.1 实验示例
根据题目要求,写出相应的汇编指令:
AX、BX寄存器分别赋值为0008H和0006H
AX和BX的内容相加,结果在AX中
用寄存器间接寻址将相加的结果保存到6号单元,指令如下:
MOV AX,0008H
MOV BX,0006H
ADD AX,BX
MOV [BX],AX
;停机指令
在DEBUG下,用A命令输入上述四条指令,再用R命令显示寄存器的情况:
用T命令单步执行(注意:第一条指令的偏移地址是0100,IP寄存器的值也应是0100);用D命令观察结果:
实验结果分析如下:
执行两次T命令后,AX=0008H, BX=0006H。
执行加法命令后,AX=000EH;相应的标志位:进位标志NC,即CF=0;符号标志PL,即SF=0;零标志NZ,即ZF=0;溢出标志NV,即OF=0;表示运算结果无进位、不溢出、结果不为0、结果是正数。
[BX]寄存器间接寻址方式对应的存储单元为6号,逻辑地址为DS:0006,该单元原来的值为FEEEH。
执行完MOV [BX],AX指令后,DS:0006单元中的内容变为000EH了(用D DS: 6 命令查看DS段的6号和7号单元)。
3.2 实验任务
1. 实验目的
通过实验观察和分析在不同的寻址方式下存储单元逻辑地址的表示以及指令的执行结果。熟练掌握DEBUG的R命令、A命令、T命令和D命令的用法。
2. 实验内容
参考示例一和各种寻址方式完成下列实验内容:
(1)两个操作数相减运算,结果放在数据段的16号单元。
1)AX、BX寄存器分别赋值为0008H和0010H。
2)AX和BX的内容相减(SUB指令),结果在AX中。
3)用直接寻址方式将相减的结果保存到16号单元。
(2)两个操作数相加运算,结果放在附加段的0020H号单元。
1)AX的值为0034H。
2)AX和65相加,结果在AX中。
3)用寄存器间接寻址方式(段超越)保存运算结果。
(3)将AX寄存器中的1234H写入数据段的2号单元,读出3号单元的12H传送给BL寄存器。(寻址方式自定)
3. 实验要求
(1)写出相关命令及操作步骤
(2)实验内容用截图形式记录实验结果
(3)写出实验结果分析。
提示:减法的结果以补码形式表示,对应的真值为负数。标志位发生了改变。
4. 实验拓展
(1)根据自己的理解和偏好,设计并完成其他寻址方式的指令。
(2)这些实验对你有何启发?
阅读(...) 评论()【图文】第三章 寻址方式_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
第三章 寻址方式
&&微机接口课件
大小:517.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢【图文】3.1-3.2寻址方式_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
3.1-3.2寻址方式
&&单片机原理及应用
大小:298.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
寻址方式课程.ppt 82页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:180 &&
你可能关注的文档:
··········
ADD A,#data
; A+data→A
ADD A,direct
; A+(direct )→A
; A+Rn→A
ADD A,@Ri
; A+(Ri)→A 用途:将A中的值与源操作数所指内容相加,最终结果
存在A中。 1.不带进位位的加法指令(4条) 例1:ADD A,#47H
ADD A,34H
ADD A,@R0
MOV A,#0AEH-82D
ADD A,#81H-127D 则执行完本条指令后,A中的值为2FH; C=1,AC=0,OV=1,P=1。 对无符号数:结果为12FH; 带符号数运算:OV=1,有错。 实验验证一下本例 2.带进位位的加法指令(4条)
ADDC A,Rn
; A+Rn+CY→A
ADDC A,direct ; A+(direct )+CY→A
ADDC A,@Ri ; A+(Ri)+CY→A
ADDC A,#data ; A+data+CY→A 用途:将A中的值和其后面的值以及进位位C中的值相加,
最终结果存在A,常用于多字节数运算中。 说明:由于51单片机是一种8位机,所以只能做8位的数学运算,但8位运算的范围只有0~255,这在实际工作中是不够的,因此就要进行扩展,一般是将2个8位(两字节)的数学运算合起来,成为一个16位的运算,这样,可以表达的数的范围就可以达到0~65535。 例:
先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1则到了PSW中的CY位了。换言之,CY就相当于是100H。
然后再做10H + 30H + CY,结果是41H,所以最终的结果是4107H。 H 10
00 H 30A0H 4107H 设:1067H存在R1R0中, 30A0H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。 MOV
;R0+R2→A和CY MOV R4,A MOV
A,R1 ADDC A,R3
;R1+R3+CY→A和CY MOV R5,A 又例:
先做67H+20H=87H,没有超过0FFH,因此最终保存在A中的是87H,而PSW中的CY=0。
然后再做10H + 30H + CY,结果是40H,所以最终的结果是4087H。 H 10
00 H H 实验验证一下本例 设:1067H存在R1R0中, 3020H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。 3. 加1指令(5条) INC
;A+1→A,影响P标志 INC
;Rn+1→Rn INC
;(direct)+1→(direct) INC
;(Rn)+1→(Rn) INC
;DPTR+1→DPTR 功能很简单,就是将后面目标中的值加1。 例:A=12H,R0=33H,(21H)=32H,
(34H)=22H,DPTR=1234H。 连续执行下面的指令:
INC DPTR ; A=13H ; R0=34H ;(21H)=33H ;(34H)=23H ; DPTR=1235H DA
A 在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用来对BCD码加法运算结果进行自动修正。 例:A=BCD(代表十进制数15)
ADD A,#8 4. 十进制调整指令(1条) ; A=1DH,按二进制规律加 ; A=23H,按十进制规律加 DA
A 3.4. 减法指令(8条) SUBB A,Rn
; A-Rn-CY→A SUBB A,direct
; A-(direct )-CY→A SUBB A,@Ri
; A-(Ri)-CY→A SUBB A,#data ; A-data-CY→A 将A中的值减去源操作数所指内容以及进位位C中的 值,最终结果存在A中。 如: SUBB A,R2 设: A=C9H,R2=55H,CY=1, 执行指令之后,A中的值为73H。 1. 带借位的减法指令(4条) 说明:没
正在加载中,请稍后...
47页230页41页15页26页444页47页29页51页82页

我要回帖

更多关于 立即寻址 的文章

 

随机推荐