第三章 8086的寻址方式和指令系统

合集下载

第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

第3章  8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。

第3章 8086的指令系统—3.1寻址方式

第3章 8086的指令系统—3.1寻址方式
EA=[基址寄存器]+([变址寄存器] *比例因子)+位移量 BX,BP SI,DI 1 0,8,16
例:(BX)=2000H,(SI)=1000H,偏移量=0250H,
则EA= 2000H+1000H+0250H=3250H
寻址目的
确定本条指令的操作数据 在指令中 PA:存储器内的绝对地址(20位) 在存储器中 EA:某个段内的相对地址(16位) 在寄存器中 确定下一条指令的地址 根据指令长度计算 根据转移指令的目标地址
寄存器名表示其内容(操作数)
MOV AX, BX
MOV AL, BH
;AX←BX
;AL←BH
演示
第3章: 3.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
演示
;AX←DS:[SI+06H]
第3章:4. 基址加变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
*微型计算机汇编语言特点 *微型计算机指令系统概述 *寻址方式
指令及其格式
指令及指令集 计算机能够识别和执行的基本操作命令
指令的作用
告诉CPU干什么?What? 告诉CPU从哪儿取数据?Where? 告诉CPU下一条指令在哪儿?Where? 操作码 操作数或操作数地址 指令的格式

微机原理与接口技术第3章 80x86指令系统

微机原理与接口技术第3章 80x86指令系统

52234H 89H (操作数低8位) 52235H 67H (操作数高8位)
……
运行结果:(AX) = 6789H
图3-11 基址变址寻址
图3-12 DEBUG下基址变址指令的输入、汇编及执行
5、相对基址变址寻址
EA = 基址 + 变址 + 位移量
例如:(DS)=5000H,(BX)=1234H,(SI)=1000H ,则: MOV AX,[BX+SI+2000H]
I/O端口寻址
间接端口寻址:采用这种寻址方式时,端口地址为16 位(0~0FFFFH)。
必须先将端口地址存放到寄存器DX中。
例如:
MOV DX,1000H ;端口地址为1000H OUT DX,AL ;间接端口寻址
小结
1. 立即寻址方式:MOV AX,0FF00H 2. 寄存器寻址方式: MOV DX,AX 3. 直接寻址方式: MOV AX,[2000H] 4. 寄存器间接寻址方式: MOV BX,[SI] 5. 寄存器相对寻址方式: MOV AL,COUNT[BX] 6. 基址变址寻址方式: MOV AX,[BX][SI] 7. 相对基址变址寻址方式:
SS
SP
栈顶(低地址)
堆 栈
已入栈 的数据
……

栈底(高地址)
图3-20 堆栈结构
➢ 指令格式:PUSH 16位/32位源操作数 POP 16位/32位目的操作数
源操作数:16位或32位通用寄存器、段寄存器或存储器操作 数
386以上系统允许PUSH指令的源操作数为立即数 目的操作数:16位或32位通用寄存器、段寄存器或存储器操 作数 只有386以上的处理器才能使用32位的操作数

3. 寻址方式与指令系统

3. 寻址方式与指令系统

算术运算类指令
加法指令(Addition) 带进位加法指令(Add with carry) 加1指令(Increment) 减法指令(Subtraction) 带借位减法(Subtract with borrow) 减1指令(Decrement) 求负数指令(Negative)
加法指令(Addition)
指令格式:add dest,src 功能:目的操作数和源操作数相加,其和数 存放在目的操作数中,源操作数原有内容不 变。 根据相加结果设置标志寄存器中的CF、PF、 AF、ZF、SF和OF。 Add指令可以进行字或字节操作。 对src和dest的具体内容的要求。
加法指令
Add ax,bx Add al,bl Add cx,20 Add cl,0A4h Add dl,da_byte Add da_word[si],dx 对于第四条指令,如果(cl) = 0e5h,
指令格式
双操作数指令:OPR DEST,SRC 单操作数指令:OPR DEST 无操作数指令:OPR
传送类指令
数据传送指令(move) mov dest,src 可以进行字节数据传送,也可以进行字数据 传送。 mov cl,05h ;字节传送 mov ax,1234h ;字传送 mov da_byte,12h ;字节传送 mov da_word,1234h ;字传送
位操作类指令
逻辑运算指令(Logical) 测试指令(Test) 移位/循环移位指令(shift/rotate) 处理器控制类指令
逻辑运算指令(Logical)
数据传送指令(move)
寄存器之间的传送 mov dl,cl ;字节传送 mov ax,bx ;字传送 mov ds,ax ;通用寄存器和段寄存器之间的 传送

第三章 8086的寻址方式和指令系统[3-4]

第三章 8086的寻址方式和指令系统[3-4]

§3-3 8086的指令系统
3、循环控制指令(Iteration Control)
通常的循环控制
MOV CX, N ; N为循环次数 BEGIN: …. …. …. DEC CX JNZ BEGIN 用LOOP BEGIN替换
循环体
有了循环控制指令,上面程序简化为: MOV CX, N BEGIN: ……
单字节指令,总是被安排在中断服务程序的出口处。
任何中断服务程序不管是外部中断引起的,还是内部中断引起的 , 最后都要
用IRET返回。
举例:
主程序: CODE START: SEGMENT ASSUME CS:CODE, DS:CODE …… STI . . . ENDS END START 中断子程序: …… STI . . . CLI … STI IRET
微型计算机原理与接口技术
第 8讲 佘青山
86919130 qsshe@
There’s always more to learn, and there are always better ways to do what you’ve done
( 1 )无符号数比较测试指令中,指令助记符中的“ A”是英文 Above的缩写, 表示“高于”之意,“B”是英文Below的缩写,表示“低于”之意;
(2)带符号数比较测试指令中,指令助记符中的“G”(Great than)表示大于, “L”(Less than)表示小于。
12:16
17
§3-3 8086的指令系统
24
CODE
12:16
§3-3 8086的指令系统
6类指令系统:
数据传送指令 算术运算指令 逻辑运算和移位指令 字符串处理指令

微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统

微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统

4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存器 间接给出。 例: MOV SI , 61A8H MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing) 位移量是一带符号的16位16进制数。当 使用BX或BP寄存器时,称基址寻址;使用SI 或DI寄存器时,称变址寻址。 例: MOV CX , 36H[BX] MOV -20[BP] , AL
2、MOV数据传送指令 其格式为: MOV 目的操作数,源操作数 • 目的操作数和源操作数均可采用不同的寻 址方式, • 两个操作数的类型必需一致。
二、寻址方式介绍பைடு நூலகம்
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后面, 作为指令一部分存放在内存的代码段中,这 种操作数称为立即数。 例: MOV AX , 34EAH MOV BL , 20H
3)、段间直接转移 JMP far PTR 目标地址 4)、段间间接转移 JMP WORD PTR[BX][SI]
2、条件转移指令
1)、单条件转移指令 ① JC ② JNC ③ JE/JZ ④ JNE/JNZ ⑤ JS ⑥ JNS ⑦ JO ⑧ JNO ⑨ JP/JPE ⑩ JNP/JPO ;CF标志为1,则转移 ;CF标志为0,则转移 ;ZF标志为1,则转移 ;ZF标志为0,则转移 ;SF标志为1,则转移 ;SF标志为0,则转移 ;OF标志为1,则转移 ;OF标志为0,则转移 ;PF标志为1,则转移 ;PF标志为0,则转移
3、目标地址传送指令
这类指令有: 1)LEA 有效地址传送到寄存器 2)LDS 装入一个新的物理地址 3)LES 装入一个新的物理地址

寻址方式和指令系统

寻址方式和指令系统

寻址⽅式和指令系统《微机原理》复习思考题第3章 8086的寻址⽅式和指令系统3.1 8086汇编语⾔指令的寻址⽅式有哪⼏类?⽤哪⼀种寻址⽅式的指令执⾏速度最快?3.2 直接寻址⽅式中,⼀般只指出操作数的偏移地址,那么,段地址如何确定?如果要⽤某个段寄存器指出段地址,指令中应如何表⽰?3.3 在寄存器间接寻址⽅式中,如果指令中没有具体指明段寄存器,那么,段地址如何确定?3.4 ⽤寄存器间接寻址⽅式时,BX,BP,SI,DI分别针对什么情况来使⽤?这四个寄存器组合间接寻址时,地址是怎样计算的?举例进⾏说明。

3.5 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下⾯两条指令所进⾏的具体操作:MOV BYTE PTR [BP], 2000MOV WORD PTR [BX], 20003.6 使⽤堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内容操作数时分别要注意什么问题?3.7 下⾯这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。

XCHG CS, AXMOV [BX], [1000]XCHG BX, IPPUSH CSPOP CSIN BX, DXMOV BYTE[BX], 1000MOV CS, [1000]3.8 8086系统中,当对SS和SP寄存器的值进⾏修改时,有什么特殊规定?这样做的原因是什么?[解答] 凡是遇到给SS寄存器赋值的传送指令时,系统会⾃动禁⽌外部中断,等到本条指令和下条指令执⾏之后,⼜⾃动恢复对SS寄存器赋值前的中断开放情况。

这样做是为了允许程序员连续⽤两条指令分别对SS和SP寄存器赋值,同时⼜防⽌堆栈空间变动过程中出现中断。

3.9 以下是格雷码的编码表0——0000 1——0001 2——0011 3——0010 4——01105——0111 6——0101 7——0100 8——1100 9——1101请⽤换码指令和其他指令设计⼀个程序段,实现格雷码往ASCII的转换。

第3章8086寻址方式和指令系统-题

第3章8086寻址方式和指令系统-题

第3章8086寻址⽅式和指令系统-题第3章8086寻址⽅式和指令系统⼀、单项选择题(共50⼩题)1、指令MOV AX,[3070H]中源操作数的寻址⽅式为()A、寄存器间接寻址B、⽴即寻址C、直接寻址D、变址寻址2、DS是()A、数据段寄存器B、代码段寄存器C、堆栈段寄存器D、附加数据段寄存器3、CF是()A、进位标志位B、辅加进位标志位C、符号标志位D、全零标志位4、SS是_()A、数据段寄存器B、代码段寄存器C、堆栈段寄存器D、附加数据段寄存器5、指令MOV [BX],AX中A、⽬的操作数是寄存器操作数B、源操作数是存储器操作数C、⽬的操作数是存储器操作数D、源操作数是⽴即操作数6、CS是()A、数据段寄存器B、代码段寄存器C、堆栈段寄存器D、附加数据段寄存器B、源操作数存于堆栈段C、⽬的操作数存于数据段D、⽬的操作数存于堆栈段8、BX是()A、8位通⽤寄存器B、16位通⽤寄存器C、16位段寄存器D、16位变址寄存器9、ZF是()A、进位标志B、⽅向标志C、符号标志D、零标志10、IP是()A、指令指针寄存器B、堆栈指针寄存器C、通⽤寄存器D、变址寄存器11、SI是()A、8位通⽤寄存器B、16位通⽤寄存器C、16位段寄存器D、指令指针寄存器12、DL是()A、16位段寄存器B、16位通⽤寄存器C、8位通⽤寄存器D、16位标志寄存器13、指令IDIV BX 的含义是()A、(AX)/(BX)B、(DX:AX)/(BX)C、(AL)/(BX)D、(AL)/(BL)B、DXC、BPD、DI15、设SS=2000H,执⾏下列程序段后SP=()MOV SP,2000HPUSH AXA、21FFEHB、20000HC、22000HD、22002H16、寄存器间接寻址⽅式中,操作数在( )中。

A、通⽤寄存器B、堆栈C、内存单元D、段寄存器17、JMP WORD PTR[DI]是( )A、段内间接转移B、段间间接转移C、段内直接转移D、段间直接转移18、堆栈指针SP的作⽤是( )。

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

汇编语言 第3章1 80x86的指令系统和寻址方式
– 4个段寄存器seg:
CS、DS、SS、ES
寄存器寻址指令
MOV AX,1234H MOV BX,AX ;AX←1234H ;BX←AX
寄存器寻址
3.1.4 存储器寻址方式
指令中给出操作数的主存地址信息(偏移
地址,称之为有效地址EA),而段地址在 默认的或用段超越前缀指定的段寄存器中
8086设计了多种存储器寻址方式
量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP
寄存器默认是SS;可用段超越前缀改变 MOV AX,[DI+06H]; mov ax,table[di] ;AX←DS:[DI+06H] MOV AX,[BP+06H] ;AX←SS:[BP+06H] 相对寻址
;AX←DS:[BX+SI+06H]
相对基址变址
位移量可用符号表示 同一寻址方式有多种表达形式
指令操作数的表达-寄存器
r8——任意一个8位通用寄存器
AH AL BH BL CH CL DH DL
r16——任意一个16位通用寄存器
AX BX CX DX SI DI BP SP
reg——代表r8或r16
(4)基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上
变址寄存器(SI或DI)的内容构成:
有效地址=BX/BP+SI/DI
段地址对应BX基址寄存器默认是DS,对应BP
基址寄存器默认是SS;可用段超越前缀改变 MOV AX,[BX+SI] ;AX←DS:[BX+SI] MOV AX,[BP+DI] ;AX←SS:[BP+DI] MOV AX,DS:[BP+DI] ;AX←DS:[BP+DI]

第三章 8086的寻址方式

第三章 8086的寻址方式
7
8086/8088指令概述
操作数的一般形式: 3、存储器操作数:这类操作数是指定存储单元 的内容或该单元的地址.
例1:MOV DS:[1000H], AL 其意义是将AL的内容送存储器数据段中偏移地址为 1000H的单元中去。
例2: 若指令改写为MOV AL,DS: [1000H]
指令意义为将数据段中偏移地址为 1000H 单元中的 内容送AL寄存器。前者指的是存储单元的地址,后者指 的是存储单元的内容
22
3.1 寻址方式
直接寻址: 符号地址:
8086/8088指令寻址方式
例3 :AREA1 EQU 0867H ; 等值伪指令EQU给常数0867H定义 一个符号AREA1 MOV AX,AREA1 ;AX=0867H 例4:AREA1 DW 0867H ;DW伪指令用来定义变量,
变量用来表示存储器中的数据。变量名AREA1表示内存中 一个数据区的名字,也就是符号地址,该地址单元存放一个字 数据0867H。 MOV AX,AREA1 ;
4、隐含操作数:这类操作数被操作助记符隐含着。 如,对压缩BCD加法结果进行调整的DAA,其操 作数就是隐含操作数AL。
5 、I/O端口操作数:可以作源操作数或目的操作数。 (I/O端口地址,可以直接或寄存器间接给出)
如: IN AL, 44H
OUT 量和常量三个概念:
例如:MOV AX,BX
3
8086/8088指令概述
例如:MOV AX,BX
用 MOV表示进行数据传送的操作码,用 AX、 BX表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。

ch3 8086指令系统(寻址方式)

ch3 8086指令系统(寻址方式)
本例执行完后, AX=3050H
第三章 8086/8088 指令系统
A1 34 12 ... 50 30 ... ...
... 指令
代码段
设DS=3000H DS16 = 3000H×16 =30000H 30000H + 1234H
31234H
30 56
AH
EA=1234H
31234H
AX
数据段
代码段
DS16
AH AX AL
20000H EA=BX(=1000H) 数
21000H
50
A0
A0 50
据 段
这种寻址方式的优点就在于可以随时修改 BX寄存器的内 容,而指向不同的存储单元。故BX又称为基址指针寄存器。
第三章 8086/8088 指令系统
例:ADD AX,[SI] EA=SI 操作:以 EA 作为有效地址,在数据段中 找到某个操作数,再将该操作数与 AX 的内容 相加,结果存放在AX中。
授课教师:王磊 齐鲁工业大学电气学院 办公室:机电楼C320 E-mail:wanglei@
第三章 8086/8088 指令系统
回顾
第三章 8086/8088 指令系统
第三章 8088/8086指令系统
学习内容
指令的基本概念和指令所包含的基本内容。 8086指令的格式及编码方式。 8086指令的寻址方式及寻址过程。 8086指令系统的分类、功能及操作过程,每条指令的
3.1 概述
指令操作数
零操作数指令: 操作码 单操作数指令: 操作码 [操作数] 双操作数指令: 操作码 [操作数] , [操作数] 多操作数指令: 三操作数及以上

MOV AX,1234H 指令操作:把数1234H传送到寄存器AX

第3章 8086指令系统(最后有练习题)

第3章  8086指令系统(最后有练习题)


开 始
8086CPU的指令系统的基本指令

包括数据传送类指令、算术运算类指令、 位操作类指令、串操作类指令、控制转移 类指令、处理机控制类指令。后几节将分 别介绍这些指令的语句格式和功能。
3.1 8086的寻址方式

3.1.1 数据的寻址方式 3.1.2 程序转移地址的寻址方式 3.1.3 对端口的寻址方式
3.1.2 程序转移地址的寻址方式
用来确定转移指令及CALL指令的转向地址。
段内寻址
段内直接寻址 段内间接寻址 段间直接寻址 段间间接寻址
段间寻址
段内:转移指令与转向的目标指令在同一代码段 中,(CS)不变。
段间:转移指令与转向的目标指令在两个代码段中, (CS) 变化。
表示转移距离(称为位移量)的操作符:
返回本节
2 . 寄存器寻址


寄存器寻址方式的操作数在指令指明的寄 存器中。 汇编格式:R ,其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 例如:MOV AL,BL
【例3-2】下列程序执行后,(AX)=?,
(BX)=?
MOV AX,1234H
MOV BX,5678H
ADD AX,BX 执行:1234H→AX 5678H→BX (AX)+(BX)→AX 执行后:(AX)=68ACH,(BX)=5678H
3 . 直接寻址




特点:操作数在内存中。 汇编格式:①含有变量的地址表达式。 ②段寄存器名:[EA] 。 功能:指令下一字单元的内容是操作数的偏 移地址EA。 图形表示:
【例3-3】
寄存器和存储器内容为:(AX)=1212H, (DS)=3000H,(32000H)=45H, (32001H)=46H。 执行指令:MOV AX ,[2000H] 问执行后:(AX)=? Step1:计算地址DS*16+2000H=32000H Step2:找内容(32000H),(32001H) 所以执行后:(AX)=4645H

第3章(指令系统1)

第3章(指令系统1)

0000 0100 + 0000 1011 0000 1111
带:( +4 ) + ( +11 ) = +15 OF = 0 无:4 + 11 = 15 CF = 0 带符号数和无符号数都不溢出
0000 0111 + 1111 1011 0000 0010
带:( +7 ) + ( -5 ) = +2 无:7 + 251 = 2 无符号数溢出
短格式: OUT DX , AL (字节) OUT DX , AX (字) 执行操作: ( ( DX ) ) ( AL ) (字节) ( ( DX ) + 1 , ( DX ) ) ( AX ) (字) 注意: * 不影响标志位 * 前256个端口号 00H ~ FFH 可直接在指令中指定(长格式) * 如果端口号 256,端口号 DX(短格式)
40 H 00 H 00 H 30 H
MOV BX , OFFSET TABLE LEA BX , TABLE LDS BX , TABLE
LES BX , TABLE
例: LEA BX , [ BX + SI + 0F62H ] LDS SI , [ 10H ] LES DI , [ BX ] 注意: * 不影响标志位 * REG 不能是段寄存器 * SRC 必须为存储器寻址方式
POP BX 执行后
( BX ) = 2107H
汇编 语言
进栈指令push和出栈指令pop的用法:
例: PUSH DS SUB AX , AX PUSH AX …… …… RET 例: PUSH PUSH PUSH …… POP POP POP
汇编 语言

第3章80888086指令系统(老师用的课件哦)

第3章80888086指令系统(老师用的课件哦)

第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。

8086的寻址方式和指令系统第三章作业

8086的寻址方式和指令系统第三章作业

MOV RESULT , AX MOV AX , X1+2
SUB AX , X2
ADC AX , X2+2
MOV RESULT, AX (4)MOV AX ,X1
MOV RESULT+2,AX
XCHG AX ,X2 XCHG AX ,X1
3-10.
3-11.
LEA SI ,ARRAY LEA DI ,NEW MOV CX ,7 MOV WORD PTR SUM ,0 LA: MOV AL ,[SI] ADD SUM ,AL ADC SUM+1 ,0 ADD AL ,5 MOV [DI],AL INC SI INC DI LOOP LA MOV AX ,SUM MOV CL ,7 DIV CL MOV AVERAGE ,AL
MOV DX ,X+2
MOV AX ,X
ADD AX ,X
ADC DX ,X+2
CMP DX ,Y+2
([有符号数]JG/JA[无符号数]) L2 ([有符号数]JL/JB[无符号数]) L1
CMP AX , Y ([有符号数]JG/JA[无符号数]) L2
L1: MOV AX , 1 JMP EXIT
(11)BX=1E6CH CF=0
3-13.
3-14.
(12)DX=4186H CF=0
3-15. (1)逻辑地址 1200H:0278H PA=12278H (2)逻辑地址 1200H:0300H PA=12300H (3)逻辑地址 1200H:4800H PA=16800H (4)逻辑地址 3400H:0ABCH PA=34ABCH (5)逻辑地址 00FFH:4800H PA=058F0H 3-16. (1)AX=5H BX=10H CX=0 DX=0 (2)AX=2H BX=4H CX=3H DX=1H (3)AX=3H BX=7H CX=2H DX=0

第三章(寻址方式)

第三章(寻址方式)
MOV AX , [ BX ] MOV AX , ES: [ BX ] MOV AX , [ BP ] PA = 16d × ( DS ) + ( BX ) PA = 16d × ( ES ) + ( BX ) PA = 16d × ( SS ) + ( BP )
* 不允许使用AX、CX、DX 存放 EA MOV AX , [ CX ] * SRC 和 DST 的字长一致 MOV DL , [ BX ] MOV DX , [ BX ] * 适于数组、字符串、表格的处理
(3) 直接寻址方式 * —— 有效地址 EA 由指令直接给出
例:MOV AX , [ 2000H ] EA = 2000H , 假设 (DS) = 3000H , 那么 PA = 32000HAH ALFra bibliotek3050
32000
50H 30H (AX) = 3050H
* 隐含的段为数据段 DS * 可使用段跨越前缀
loop next
(3) 寄存器相对寻址
mov cx, count mov si, 0 next : mov dl, string [ si ] mov ah, 2 int 21h inc si loop next
; mov dl, [ string + si ] ; 显示一个字符 ; mov cx, 17
访问存储器的方式
取指令 堆栈操作 一般数据访问 BP 作为基址的寻址 串操作的源操作数 串操作的目的操作数
默认的 段寄存器
CS SS DS SS DS ES
可跨越的 段寄存器
无 无 CS ES SS CS DS ES CS ES SS 无
偏移地址
IP SP 有效地址 EA BP SI DI
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题 CH3 寻址方式和指令系统
计算机的指令通常包含 操作码 和 操作数 两部分。
设SP为0100H,SS为1000H,则执行PUSH AX 后,
00FE H,SS= 1000 H。 8086系统中,栈底在堆栈的 最高地址 (最高地址端、 最低地址端)。
如果VAL为数据段中0056H单元的符号名,其中存放
16
习题 CH3 寻址方式和指令系统
(6)MOV [SI],[BX] 源、目的操作数不能同时为存储单元 (7)MOV DS,0200H 立即数不能直接送给段寄存器 (8)IN BL,05H BL不能作为IN指令的目的操作数 (9)MOV AX,IP IP不能作为操作数 (10)MOV SI,[DX] DX不能进行寄存器间接寻址 (11)PUSH AL PUSH指令以字为操作单位
用单条指令或程序片段,实现下述功能
(1)将AX高8位取反,低四位置1,其余位不变。
XOR AX, 0FF00H
OR AX, 0FH (2)将AL的高四位与低四位互换。 MOV CL, 4 ROL AL, CL
(3)将BX、AX内容互换。
XCHG AX, BX
12
习题 CH3 寻址方式和指令系统
[BP+SI+4]源操作数的有效地址为
地址为 数的有效地址为
,物理 0214H 24514H 。指令MOV AX,[DI+100H]源操作
0306H,物理地址
为 24306H 。 设AX=2000H,BX=2002H,则在执行了指令CMP AX,
BX后,标志位CF为

1 , AX=
。 2000H
基址变址寻址
(5)MOV AX,10[BX][DI] 相对基址变址寻址
14
习题 CH3 寻址方式和指令系统
(6)MOV AX,10[SI] 寄存器相对寻址 (7)MOV AX,[DI] 寄存器间接寻址 (8)JMP BX 段内间接寻址 (9)IN AL,23H 直接端口寻址 (10)IN AL,DX 间接端口寻址
D 。 A.溢出标志
B.符号标志
C.零标志
D.方向标志
10
习题 CH3 寻址方式和指令系统
设AX=0ABDFH,则在执行指令“AND AX,0001H”后,
AX寄存器的内容为: C

A.ABDEH
B.FFFFH
C.0001H
D.0000H
在堆栈内,有效地址为2500H到2505H单元内依次存放
A.CF=0,PF=0
C.CF=0,PF=1
B.CF=1,PF=0
D.CF=1,PF=1
9
习题 CH3 寻址方式和指_条。 C
CMP AL,AL ; SUB AL,AL ;
XOR AL,AL ; MOV AL,0
A.1 是 B.2 C.3 D.4
CPU执行算术运算指令一定不会影响的标志位
6
习题 CH3 寻址方式和指令系统
下列8086指令中,对AX的结果与其他三条指令不
同的是 D

A.MOV AX,0
C.SUB AX,AX
假设VAR为变量,MOV
B.XOR AX,AX
D.OR AX,0
BX,OFFSET VAR的寻址方
式是: C 。 A.直接寻址 C.立即寻址
B.间接寻址 D.存储器寻址
7
习题 CH3 寻址方式和指令系统
基址加变址的寻址方式中,基址寄存器是指 1. ,
变址寄存器是指 2.,如执行指令MOV AX, B A [BX+SI+2]后,源操作数的地址位移量EA为 3 , 其实际物理地址4.。 D B 1.A.AX B.BX C.CX D.SI 2.A.SI B.AX C.BX D.DX 3.A.EA=AX+BX+2 B.EA=BX+SI+2 C.EA=AX+SI+2 D.EA=BX+SI 4.A.SS+EA B.ES*10H+EA C.CS+EA*10H D.DS*10H+EA
15
习题 CH3 寻址方式和指令系统
指出下列指令的错误
(1)MOV AH,BX 源、目的操作数长度不一致 (2)ADD 15H,BX 立即数不能作为目的操作数 (3)MOV CS,AX CS不能作为目的操作数 (4)MOV AX,[SI][DI] SI、DI不能同时出现在一个[]内 (5)MOV BYTE PTR[BX],1000 源、目的操作数长度不一致
17
用BX的寄存器间接寻址 用BX的寄存器相对寻址
32000 H 36000 H
。 。
用BP和SI的基址+变址寻址 45000 H
用BX和SI的基址+变址且相对寻址 38000 H


4
习题 CH3 寻址方式和指令系统

已知8086-CPU寄存器的内容如下: AX=0123H,BX=1234H, CX=4567H,DX=9ABCH,DS=2300H, SS=3000H,ES=2800H, DI=1F00H,SP=1000H,BP=0010H,SI=0000H,写出下列过程每 条指令执行后,有关寄存器和内存单元的内容。(5分) (注:无变化的不要标出,内存单元地址用逻辑地址表示)。 LLL PROC FAR MOV WORD PTR [BP],23H (3000:0010H)=0023H PUSH CX SP-2→SP, SP=0FFEH,(3000:0FFE)=4567H MOV [DI+2800H],DX (2300:4700H)= 9ABCH PUSH BX SP-2→SP, SP=0FFCH,(3000:0FFC)=1234H RET IP=1234H,CS=4567H, SP=1000H LLL EDNP
10H、20H、30H、40H、50H、60H六个数,已知
SP=2502H,执行POP BX指令后,有 B
A.SP=2502H,BX=1020H

B.SP=2504H,BX=4030H
C.SP=2504H,BX=3040H D.SP=2500H,BX=2010H
11
习题 CH3 寻址方式和指令系统
该指令之前将相应的端口地址送入 DX 器中。
寄存
3
习题 CH3 寻址方式和指令系统
转移指令的寻址主要为CPU提
供 转移地址 或 新的程序入口地址 。 已知当前CPU各寄存器和有关内容,BX=1000H, SI=2000H,BP=3000H,SS=4000H,位移量=4000H, DS=3100H,写出下列寻址方式形成的物理地址。
5
习题 CH3 寻址方式和指令系统
下列指令中,不合法的指令是: A

A.PUSH BL
B.ADD
BX,[DI]
C.INT 21H
指令是: C 。
D.IN
AX,09H
完成将AX清零,并使标志位CF清零,下面错误的
A.SUB AX,AX B.XOR AX,AX
C.MOV AX,00H
D.AND AX,00H
8
习题 CH3 寻址方式和指令系统
设(AX)=1000H,(BX)=2000H,则在执行了
指令“SUB AX,BX”后,标志位CF和ZF的值分别
为: C
A.0,0 0

B.0,1 D.1,1 C.1,
已知CF=0,PF=0,AX=0FFFFH,则执行语句INC
C AX后,标志位情况为________。
SP=
的内容为0FF2H,当执行指令: ; 0FF2H 而执行: LEA BX,VAL后,则BX= 0056H 。
1
MOV BX,VAL后,BX=
习题 CH3 寻址方式和指令系统
设CS=2500H,DS=2400H,SS=2430H,ES=2520H,
BP=0200H,SI=0010H,DI=0206H则:指令MOV AX,
堆栈存储区由哪两个寄存器管理?简述数据压栈
和弹栈的过程。
输入输出的寻址方式有哪几种?举例说明
直接端口寻址: 间接端口寻址:
IN IN
AL, 30H AL,DX
MOV DX,0200H
13
习题 CH3 寻址方式和指令系统

分别指出下列指令中的源操作数的寻址方式。
直接寻址
(1)MOV CX,[300H] (2)MOV [BP][DI],300H 立即寻址 (3)MOV AX,BX 寄存器寻址 (4)MOV AX,[BP+DI]
2
习题 CH3 寻址方式和指令系统
执行指令“XOR AX,AX”后,标志位ZF的值

1

若AL=10011000B,BL=01100111B,则执行指令
0FFH ;执行指令“AND “ADD AL,BL”后,AL=
AL,BL”后,AL= 00H 。
在使用8086间接输入/输出指令时,必须在执行
相关文档
最新文档