第三章 操作数的寻址方式
- 格式:ppt
- 大小:82.50 KB
- 文档页数:22


汇编语言复习辅导
第三章 8086指令系统和寻址方式
应掌握编写一个完整的汇编语言程序所必需的知识及其相应概念:
(1)汇编语言程序的格式
(2)常用伪指令(伪操作)
(3)8086寻址方式
(4)8086指令系统
1 汇编语言程序格式. 80x86的逻辑段:堆栈段、数据段、附加段、代码段
(1) 完整段定义 ;- - - - - - - - - - - - - - - - - - - - - - - STSEG SEGMENT ;定义堆栈段 DB 64 DUP(?) STSEG ENDS ;- - - - - - - - - - - - - - - - - - - - - - - DTSEG SEGMENT ;定义数据段 DATA1 DB 36H DATA2 DB 4BH SUM DB ? DTSEG ENDS ;- - - - - - - - - - - - - - - - - - - - - - - CDSEG SEGMENT ;定义
代码段 MAIN PROC FAR ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG START: MOV AX,DTSEG MOV DS,AX ;设置数据段地址
MOV AL,DATA1 ;用户程序 MOV BL,DATA2 ADD AL,BL MOV SUM,AL MOV AH,4CH ;返回DOS INT 21H MAIN ENDP CDSEG ENDS END START ;汇编结束(2) 简化段格式:
·MODEL SMALL ;存储模型
·STACK 100H ;定义堆栈段及大小
·DATA ;定义数据段 VAR1 DB ? ·CODE ;定义代码段
MAIN PROC FAR ;定义过程START: MOV
DX,@DATA ;设置数据段 MOV DS,AX ; 地址
…MOV AX,4COOH ;返回DOS INT 21H MAIN ENDP ;过程结束
交通信息与控制工程系教案(理论教学用)
课程名称 微机原理与接口技术 第 8 次 第 4 周 2 学时
上课教室 WM1310 课程类型 专业基础课 授课对象 自动化专业
章节名称 第三章 寻址方式和指令系统(3.3)
教学目的
和要求 1. 掌握8086的基本指令,如逻辑运算和移位指令、串操作指令、程序控制指令等。
讲 授
主要内容及时间分配 1. 逻辑运算和移位指令;(35min)
2. 串操作指令;(20min)
3. 程序控制指令;(25min)
4. 处理器控制指令。(10min)
教学重点
与难点 重点:
1.逻辑运算和移位指令的基本功能和格式;
2.串操作指令的基本功能和格式;
3.程序控制指令的基本功能和格式。
难点:
逻辑运算和移位指令的基本功能和格式。
要求掌握知识点和分析方法 1.逻辑运算和移位指令的格式、功能及应用方法;
2.串操作指令的格式、功能及应用方法;
3.程序控制指令的格式、功能及应用方法。
启发与提问 1.逻辑移位和算术移位指令的区别?
教学手段 多媒体+板书
作业布置 思考题:
1.远跳转和近跳转的区别?
3.2, 3.5
3.9, 3.11
3.12, 3.14
主 要
参考资料
备注
注:教案按授课次数填写,每次授课均应填写一份。重复班授课可不另填写教案。 长安大学讲稿(第八讲)
讲 授 内 容
三、逻辑运算和移位类
1.逻辑运算
逻辑运算指令对操作数的要求大多与MOV指令相同。
逻辑运算是按位操作的,它包括AND(与)、OR (或)、NOT(非)、XOR(异或)和TEST(测试)指令。
除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0,AF位无定义,SF、ZF和PF根据运算结果设置。
“与”运算指令
格式: AND OPRD1,OPRD2
操作: 两操作数相“与”,结果送目标地址。
【例】 要屏蔽AL中的高4位。
汇编语⾔--操作数的寻址⽅式(三)
三、操作数的寻址⽅式
操作数是指令或程序的主要处理对象。如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。在CPU的指令系统中,除NOP(空操作指令)、HLT(停机指令)等少数指令之外,⼤量的指令在执⾏过程中都会涉及到操作数。所以,在指令中如何表达操作数或操作数所在位置就是正确运⽤汇编指令的⼀个重要因素。
在指令中,指定操作数或操作数存放位置的⽅法称为寻址⽅式。操作数的各种寻址⽅式是⽤汇编语⾔进⾏程序设计的基础,也是本课程学习的重点之⼀。
微机系统有七种基本的寻址⽅式:⽴即寻址⽅式、寄存器寻址⽅式、直接寻址⽅式、寄存器间接寻址⽅式、寄存器相对寻址⽅式、基址加变址寻址⽅式、相对基址加变址寻址⽅式等。其中,后五种寻址⽅式是确定内存单元有效地址的五种不同的计算⽅法,⽤它们可⽅便地实现对数组元素的访问。
另外,在32位微机系统中,为了扩⼤对存储单元的寻址能⼒,增加了⼀种新的寻址⽅式——32位地址的寻址⽅式。
为了表达⽅便,我们⽤符号“(X)”表⽰X的值,如:(AX)表⽰寄存器AX的值。1、⽴即寻址⽅式
操作数作为指令的⼀部分⽽直接写在指令中,这种操作数称为⽴即数,这种寻址⽅式也就称为⽴即数寻址⽅式。
⽴即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果⽴即数为16位或32位,那么,它将按“⾼⾼低低”的原则进⾏存储。例如:MOV AH, 80H ADD AX, 1234H MOV ECX, 123456H
MOV B1, 12H MOV W1, 3456H ADD D1, 32123456H
其中:B1、W1和D1分别是字节、字和双字单元。
以上指令中的第⼆操作数都是⽴即数,在汇编语⾔中,规定:⽴即数不能作为指令中的第⼆操作数。该规定与⾼级语⾔中“赋值语句的左边不能是常量”的规定相⼀致。
⽴即数寻址⽅式通常⽤于对通⽤寄存器或内存单元赋初值。图3.1是指令“MOV AX, 4576H”存储形式和执⾏⽰意图。2、寄存器寻址⽅式
[转载]操作数的寻址⽅式
寻址⽅式就是在汇编语⾔程序中寻找操作数或操作数地址的各种⽅法。
8086提供了与操作数有关和与I/O端⼝地址有关的两类寻址⽅式。
与操作数有关的寻址⽅式有七种,分别是:1)⽴即寻址,2)寄存器寻址,3)直接寻址,4)寄存器间接寻址,5)寄存器相对寻址,6)
基址加变址寻址,7)相对基址加变址寻址,8)基址变址⽐例相对寻址;
与I/0端⼝有关的寻址⽅式有1)直接端⼝寻址和2)间接端⼝寻址⽅式。
1. ⽴即寻址
⽴即(Immediate)寻址,就是在指令中使⽤的操作数是常数,这个常数(即⽴即数)就包含在指令中。
MOV AX,2345H
MOV AL,0EH
2. 寄存器寻址
寄存器(Register)寻址⽅式的操作数在CPU内部的寄存器中。使⽤寄存器寻址,CPU不⽤访问内存就可以取得或修改操作数。
MOV BL,80 ;⽬标操作数BL是寄存器寻址
MOV EAX,EBX ;源操作数EBX和⽬标操作数EAX都是寄存器寻址
3. 直接寻址
除了⽴即寻址和寄存器寻址⽅式外,其他的⼏种寻址⽅式的操作数都在内存单元中,寻址⽅式要说明的是CPU如何确定内存操作数的地址,
然后CPU再对该内存单元中的操作数进⾏处理。直接寻址(Direct)寻址就是指令中直接给出了操作数的地址。指令中使⽤变量时,就是直接
寻址。
MOV EAX,dVal
MOV dVal,EBX
在翻译成机器指令后,变量是⽤它的地址⽽不是它的名字来表⽰的。地址外⾯加⼀对⽅括号,表⽰取这个地址中的内容。
00401010 A1 11 40 40 00 MOV EAX,[00404011]
00401015 89 1D 11 40 40 00 MOV [00404011],EBX
CPU在执⾏指令的时候,可以直接从指令码中取出地址,⽽不必经过计算或其他操作,所以叫做直接寻址。
4. 寄存器间接寻址
采⽤寄存器间接(Indirect)寻址⽅式的操作数的地址放在寄存器中。