第四章8086的寻址方式与指令系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章:例4.2 数据交换
mov ax,1199h
;ax=1199h
xchg ah,al
;ax=9911h
;等同于 xchg al,ah
mov wvar,5566h
;wvar是一个字量变量
xchg ax,wvar
;ax=5566h,wvar=9911h
;等同于 xchg wvar,ax
xchg al,byte ptr wvar+1
MOV指令
第4章:4.1.1 立即数寻址方式
指令中的操作数直接存放在机器代码中,紧跟在 操作码之后(操作数作为指令的一部分存放在操 作码之后的主存单元中) 这种操作数被称为立即数imm
可以是8位数值i8(00H~FFH) 也可以是16位数值i16(0000H~FFFFH) 立即数寻址方式常用来给寄存器和存储单元赋值, 多以常量形式出现
MOV AX, [BX+DI+6] ;AX←DS:[BX+DI+6]
演示
MOV AX, 6[BX+DI] MOV AX, 6[BX][DI]
第4章:存储器寻址方式中的变量
➢ 变量指示内存中的数据,变量名具有地址属性。 存储器寻找方式中经常采用变量形式
➢ 变量的定义
WVAR DW 1234H ;定义16位变量WVAR,具有初值1234H ;假设其偏移地址为10H
第4章 8086的寻址方式 与指令系统
第4章:8086的寻址方式与指令系统-教学重点
8086的寻址方式 8086的基本指令
数据传送 加减运算 逻辑运算、移位 控制转移、功能调用
第4章:4.1 8086的数据寻址方式
从8086的指令格式入手,论述:
立即数寻址方式 寄存器寻址方式 存储器寻址方式
进而熟悉8086汇编语言指令格式,尤其是 其中操作数的表达方法 为展开8086指令系统做好准备
操作码 操作数1,操作数2
;注释
操作数2,常被称为源操作数src,它表示参与指 令操作的一个对象 操作数1,成被称为目的操作数dest,它不仅可以 作为指令操作的一个对象,还可以用来存放指令 操作的结果 分号后的内容是对指令的解释
汇编语句格式
第4章:指令的操作码和操作数
每种指令的操作码:
用一个助记符表示(指令功能的英文缩写) 对应着机器指令的一个或多个二进制编码
MOV AX, 0102H
;AX←0102H 演示
第4章:4.1.2 寄存器寻址方式
操作数存放在CPU的内部寄存器reg中:
8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL
16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP
4个段寄存器seg: CS、DS、SS、ES
➢ 在寄存器相对和相对基址变址寻址方式中,其位 移量不仅可用常量表示,也可用符号表示
➢ 这个符号可以是变量名,例如WVAR变量,而且 支持多种表达形式
MOV AX, [DI+WVAR] ; ;等同于 MOV AX, WVAR[DI] MOV AX,[BX+SI+WVAR]
;等同于 MOV AX, [SI+WVAR] ;等同于 MOV AX, WVAR[BX+SI] ;等同于 MOV AX, WVAR[BX][SI]
演示
;AX←DS:[SI+06H]
第4章:4. 基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
;段寄存器送寄存器或主存
演示
第4章:MOV指令--立即数传送
mov cl,4 ;cl←4,字节传送 mov dx,0ffh ;dx←00ffh,字传送 mov si,200h ;si←0200h,字传送 mov bvar,0ah ;字节传送 ;假设bvar是一个字节变量,定义如下:bvar db 0 mov wvar,0bh ;字传送 ;假设wvar是一个字变量,定义如下:wvar dw 0
;ax=5599h,wvar=6611h
;“byte ptr wvar+1”强制为字节量,只取高字 节与AL类型交换,否则数据类型不匹配
第4章:3. 换码指令XLAT(translate)
将BX指定的缓冲区中、AL指定的位移处的一个 字节数据取出赋给AL
XCHG
MOV
XLAT
XCHG
XLAT
第4章:1. 传送指令MOV(move)
把一个字节或字的操作数从源地址传 送至目的地址
MOV reg/mem,imm
MOV reg/me;m立/s即eg数,r送eg寄存器或主存
MOV ;re寄g/存se器g送,m(em段)寄存器或主存
MOV reg/mem,;s主eg存送(段)寄存器
➢ 单独引用变量名是直接寻址方式
MOV AX,WVAR ;指令功能:AX=1234H ;等同于 MOV AX,[0010H]
➢ 相对寻址方式中,变量名表示其偏移地址,相当 于位移量
MOV AX, [DI+WVAR] ;= MOV AX,WVAR[DI] ;等同于 MOV AX,[DI+0010H]
第4章:相对寻址方式中的位移量
数据传送是计算机中最基本、最重要的一种操作, 传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握
MOV XCHG XLAT PUSH POP LEA
第4章: 4.2.1 通用数据传送指令
提供方便灵活的通用传送操作
有3条指令
MOV
;mov ax,100h
;mov ds,ax
MOV CS, [SI]
;非法指令
;指令存在,但不能执行
第4章:2. 交换指令XCHG(exchange)
把两个地方的数据进行互换
XCHG reg,reg/mem ;reg reg/mem
寄存器与寄存器之间对换数据
演示
寄存器与存储器之间对换数据 不能在存储器与存储器之间对换数据
第4章:指令的组成
操作码 操作数
指令由操作码和操作数两部分组成
操作码说明计算机要执行哪种操作,如传送、运算、 移位、跳转等操作,它是指令中不可缺少的组成部 分 操作数是指令执行的参与者,即各种操作的对象 有些指令不需要操作数,通常的指令都有一个或两 个操作数,也有个别指令有3个甚至4个操作数
第4章:指令的助记符格式
指令中的操作数:
可以是一个具体的数值 可以是存放数据的寄存器 或指明数据在主存位置的存储器地址
第4章:操作数的寻址方式
指令系统设计了多种操作数的来源 寻找操作数的过程就是操作数的寻址 把寻找操作数的方式叫做(操作数)寻址方式 理解操作数的寻址方式是理解指令功能的前提 操作数采取哪一种寻址方式
一方面,会影响处理器执行指令的速度和效率 另一方面,对程序设计也很重要
寄存器名表示其内容(操作数)
MOV AX, BX
;AX←BX
演示
第4章: 4.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8086采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
8086设计了多种存储器寻址方式
有效地址是寄存器内容与有符号8位或16位位移 量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量 段地址对应BX/SI/DI寄存器默认是DS,对应BP 寄存器默认是SS;可用段超越前缀改变
MOV AX, [SI+06H] MOV AX, 06H[SI]
;AX←DS:[SI+06H]
;mov al,buf1
;mov buf2,al
第4章:非法指令--段寄存器的操作有一些限制
➢ 8086指令系统中,能直接对段寄存器操作的指令 只有MOV等个别传送指令,并且不灵活
MOV DS, ES
;非法指令,修正:
;mov ax,es
;mov ds,ax
MOV DS, 100H
;非法指令,修正:
;AX←DS:[2000H]
演示
MOV AX, ES: [2000H] ;AX←ES:[2000H]
第4章:2. 寄存器间接寻址方式
有效地址存放在基址寄存器BX或变址寄存 器SI、DI中 默认的段地址在DS段寄存器,可使用段超 越前缀改变
MOV AX, [BX]
;AX←DS:[BX]
演示
第4章:3. 寄存器相对寻址方式
第4章:操作数的表达符号(2)
操作数符号
含义(寻址方式)
m8
一个8位存储器操作数单元(包括所有主存
寻址方式)
m16 一个16位存储器操作数单元(包括所有主存 寻址方式)
mem dest src
代表m8或m16 目的操作数 源操作数
掌握操作数的寻址方式后,进入指令学习
第4章:4.2 数据传送类指令
mov [si],ds mov ax,ds mov es,ax
;ax←ds ;es←ax←ds
对段寄存器的操作不灵活
第4章:MOV指令传送功能图解
立即数
MOV指令也并非任意传送!

通用寄存器

AX BX CX DX

BP SP SI DI
段寄存器 CS DS ES SS
非法指令的主要现象: 两个操作数的类型不一致 无法确定是字节量还是字量操作 两个操作数都是存储器 段寄存器的操作有一些限制
寄存器具有明确的字节和字类型
第4章:MOV指令--存储器传送
mov al,[bx] mov dx,[bp] mov dx,[bp+4] mov es,[si]
;al←ds:[bx] ;dx←ss:[bp+0] ;dx←ss:[bp+4] ;es←ds:[si]
不存在存储器向存储器的传送指令
第4章:MOV指令--段寄存器传送
1、直接寻址方式 2、寄存器间接寻址方式 3、寄存器相对寻址方式 4、基址变址寻址方式 5、相对基址变址寻址方式
第4章:1. 直接ቤተ መጻሕፍቲ ባይዱ址方式
直接寻址方式的有效地址在指令中直接给出 默认的段地址在DS段寄存器,可使用段超越前 缀改变 用中括号包含有效地址,表达存储单元的内容
MOV AX, [2000H]
第4章:非法指令--无法确定是字节量还是字量操作
➢ 当无法通过任一个操作数确定是操作类型时,需 要利用汇编语言的操作符显式指明 MOV [BX+SI], 255 ;非法指令,修正:
;mov byte ptr [bx+si],255
;byte ptr 说明是字节操作
;mov word ptr [bx+si],255
;word ptr 说明是字操作
第4章:非法指令--两个操作数都是存储器
➢ 8086指令系统除串操作指令外,不允许两个操作 数都是存储单元(存储器操作数)
MOV buf2, buf1
;非法指令,修正:
;假设buf2和buf1是两个字变量
;mov ax,buf1
;mov buf2,ax
;假设buf2和buf1是两个字节变量
以字母开头的常数要有明前确导指0令是字节操作还是字操作
第4章:MOV指令--寄存器传送
mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov [bx],al
;ah←al,字节传送 ;bvar←ch ,字节传送 ;ax←bx,字传送 ;ds←ax,字传送 ;[bx]←al,字节传送
第4章:非法指令--两个操作数类型不一致
➢ 在绝大多数双操作数指令中,目的操作数和源操 作数必须具有一致的数据类型,或者同为字量, 或者同为字节量,否则为非法指令
MOV AL, 050AH
;非法指令,修正:
;mov ax,050ah
MOV SI, DL
;非法指令,修正:
;mov dh,0
;mov si,dx
;AX←DS:[BX+SI]
演示
;AX←DS:[BX+SI]
第4章:5. 相对基址变址寻址方式
有效地址是基址寄存器(BX/BP)、变址寄存器 (SI/DI)与一个8位或16位位移量之和: 有效地址=BX/BP+SI/DI+8/16位位移量 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
第4章:操作数的表达符号(1)
操作数符号 i8 i16
imm r8
r16
reg seg
含义(寻址方式) 一个8位立即数 一个16位立即数 代表i8或i16
任意一个8位通用寄存器 AH, AL, BH, BL, CH, CL, DH, DL 任意一个16位通用寄存器 AX, BX, CX, DX, SI, DI, BP, SP 代表r8或r16 段寄存器CS、DS、ES、SS
相关文档
最新文档