四川大学微机原理与接口技术_何小海_第三章指令系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+DI+6] ;AX←DS:[BX+DI+6]
MOV AX, 6[BX+DI] MOV AX, 6[BX][DI]
相对寻址方式中的偏移量
在寄存器相对和相对基址变址寻址方式中,其偏 移量不仅可用常量表示,也可用符号表示
;非法指令,修正:
;mov ax,050ah
MOV SI, DL
;非法指令,修正:
;mov dh,0
;mov si,dx
非法指令—无法确定是字节还是字操作
当无法通过任一个操作数确定是操作类型时,需 要利用汇编语言的操作符显式指明 MOV [BX+SI], 255 ;非法指令,修正:
;mov byte ptr [bx+si],255
不存在存储器向存储器的传送指令
MOV指令—段寄存器传送
mov [si],ds mov ax,ds ;ax←ds mov es,ax ;es←ax←ds
对段寄存器的操作不灵活
MOV指令传送功能图解
立即数
MOV指令也并非任意传送!
存
通用寄存器
储
AX BX CX DX
器
BP SP SI DI
段寄存器 CS DS ES SS
;byte ptr 说明是字节操作
;mov word ptr [bx+si],255
;word ptr 说明是字操作
非法指令—两个操作数都是存储器
8086/8088指令系统除串操作指令外,不允许两个 操作数都是存储单元(存储器操作数) MOV [0200H], [0100H] ;非法指令,修正: ;假设是字操作 ;mov ax,[0100H] ;mov [0200H],ax
这个符号可以是变量名,例如WVAR变量,而且 支持多种表达形式
MOV AX, [DI+WVAR] ;等同于 MOV AX, WVAR[DI]
MOV AX,[BX+SI+WVAR] ;等同于 MOV AX, [BX][SI+WVAR] ;等同于 MOV AX, WVAR[BX+SI] ;等同于 MOV AX, WVAR[BX][SI]
MOV AX, [BX]
;AX←DS:[BX]
MOV AX, ES:[BX] ;AX←ES:[BX]
MOV AH,DS:[BP] MOV ES:[DI],AL
(3) 寄存器相对寻址方式
有效地址是寄存器内容与有符号8位或16位位移量 之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位偏移量
1、直接寻址方式 2、寄存器间接寻址方式 3、寄存器相对寻址方式 4、基址变址寻址方式 5、相对基址变址寻址方式
(1) 直接寻址方式
直接寻址方式的有效地址在指令中直接给出 默认的段地址在DS段寄存器,可使用段超越前
缀改变 用中括号包含有效地址,表达存储单元的内容
MOV AX, [2000H] ;AX←DS:[2000H]
段地址对应BX/SI/DI寄存器默认是DS,对应BP 寄存器默认是SS;可用段超越前缀改变
MOV AX, [SI+06H] ;AX←DS:[SI+06H]
MOV AX, 06H[SI] ;AX←DS:[SI+06H]
(4) 基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI
④ MOV AX,[BP]100H
;寄存器相对寻址
EA=0100H+100H=0200H, PA=68000H+0200H=68200H
⑤ MOV AX,100H[SI]
;寄存器相对寻址
EA=1123H+100H=1223H,
PA=20000H+1223H=21223H
举例
若(BX)= 0313H,(SI)=1123H,(DI)= 0606H,(DS)= 2000H,(SS)= 6800H,(BP) = 0100H。指出下列指令中画线的操作数的寻址方
式,如果为存储器操作数,请计算该操作数的有效 地址与物理地址。
⑥ MOV AL,[BX][SI]
;基址变址寻址
EA=0313H+1123H=1436H, PA=20000H+1436H=21436H ⑦ MOV AX,[BP+SI+100H] ;相对基址加变址寻址 EA=0100H+1123H+100H=1323H, PA=68000H+1323H=69323H
有5条指令
MOV
MOV
XCHG POP
PUSH
POP
传送指令MOV(move)
把一个字节或字的操作数从源地址传 送至目的地址
MOV reg/mem,imm ;立即数送寄存器或主存 MOV reg/mem/seg,reg;寄存器送(段)寄存器或主存 MOV reg/seg,mem ;主存送(段)寄存器 MOV reg/mem,seg;段寄存器送寄存器或主存
;非法指令
;指令存在,但不能执行
交换指令XCHG(exchange)
把两个地方的数据进行互换
XCHG reg,reg/mem ;reg reg/mem
寄存器与寄存器之间交换数据 寄存器与存储器之间交换数据 不能在存储器与存储器之间对换数据
举例
mov ax,1199h
;ax=1199h
xchg ah,al
数据传送指令
数据传送是计算机中最基本、最重要的一种 操作
传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位
置 除标志寄存器传送指令外,均不影响标志位 重点掌握
MOV XCHG XLAT PUSH POP IN OUT LEA
(1)通用数据传送指令
提供方便灵活的通用传送操作
;ax=9911h
;等同于 xchg al,ah
mov wvar,5566h ;wvar是一个字量变量
xchg ax,wvar
;ax=5566h,wvar=9911h
;等同于 xchg wvar,ax
查表转换指令XLAT(translate)
XLAT指令是字节的查表转换指令,可以根据表 中元素的序号查出表中相应元素的内容
微机原理与接口技术
第三章 指令系统
主要内容
寻址方式 8086/8088的基本指令 指令格式及执行时间
基本概念
指令与指令系统
CISC与RISC
CISC:复杂指令集计算机,典型代表Intel Pentium RISC:精简指令集计算机,典型代表PowerPC
20%
最经常使用的指令 不经常使用的指令
非法指令的主要现象: 两个操作数的类型不一致 无法确定是字节量还是字量操作 两个操作数都是存储器 段寄存器的操作有一些限制
非法指令—两个操作数类型不一致
在绝大多数双操作数指令中,目的操作数和源操 作数必须具有一致的数据类型,或者同为字量, 或者同为字节量,否则为非法指令
MOV AL, 050AH
寄存器名表示其内容(操作数)
MOV AX, BX
;AX←BX
存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA) PA=(段寄存器)×10H + EA
8086设计了多种存储器寻址方式
指令中的操作数
可以是一个具体的数值 可以是存放数据的寄存器 或指明数据在主存位置的存储器地址
寻址与寻址方式
指令系统设计了多种操作数的来源 寻找操作数的过程就是操作数的寻址 把寻找操作数的方式叫做操作数的寻址方式 理解操作数的寻址方式是理解指令功能的前
提 操作数采取哪一种寻址方式
一方面,会影响处理器执行指令的速度和效率 另一方面,对程序设计也很重要
非法指令—段寄存器的操作有一些限制
8086/8088指令系统中,能直接对段寄存器操作的 指令只有MOV等个别传送指令,并且不灵活
MOV DS, ES
;非法指令,修正:
;mov ax,es
;mov ds,ax
MOV DS, 100H
;非法指令,修正:
;mov ax,100h
;mov ds,ax
MOV CS, [SI]
举例
若(BX)= 0313H,(SI)=1123H,(DI)= 0606H,(DS)= 2000H,(SS)= 6800H,(BP) = 0100H。指出下列指令中画线的操作数的寻址方 式,如果为存储器操作数,请计算该操作数的有效 地址与物理地址。
① MOV AX,1117H ;立即寻址
② MOV BX,SP ;寄存器寻址
操作数的来源
操作数
指令 寄存器 内存 I/O设备或端口
立即数寻址方式
指令中的操作数直接存放在机器代码中,紧跟在 操作码之后(操作数作为指令的一部分存放在操 作码之后的主存单元中)
这种操作数被称为立即数imm 可以是8位数值i8(00H~FFH) 也可以是16位数值i16(0000H~FFFFH)
③ MOV DX,[BX] ;寄存器间接寻址
EA=0313H,PA=20000H+0313H=20313H
举例
若(BX)= 0313H,(SI)=1123H,(DI)= 0606H,(DS)= 2000H,(SS)= 6800H,(BP) = 0100H。指出下列指令中画线的操作数的寻址方
式,如果为存储器操作数,请计算该操作数的有效 地址与物理地址。
指令的助记符格式
操作码 操作数1,操作数2 ;注释
操作数2,常被称为源操作数src,它表示参 与指令操作的一个对象
操作数1,成被称为目的操作数dest,它不 仅可以作为指令操作的一个对象,还可以 用来存放指令操作的结果
分号后的内容是对指令的解释
指令的操作码和操作数
每种指令的操作码
用一个助记符表示(指令功能的英文缩写) 对应着机器指令的一个或多个二进制编码
;ah←al,字节传送 ;bvar←ch ,字节传送 ;ax←bx,字传送 ;ds←ax,字传送 ;[bx]←al,字节传送
寄存器具有明确的字节和字类型
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]
立即数寻址方式常用来给寄存器和存储单元赋值
MOV AX, 0102H
;AX←0102H
寄存器寻址方式
操作数存放在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
MOV AX, ES: [2000H] ;AX←ES:[2000H] MOV AX,BUFFER ; BUFFER:符号地址
(2) 寄存器间接寻址方式
有效地址存放在基址寄存器BX、BP或变址寄存 器SI、DI中
对于BX、SI、DI,默认的段地址在DS段寄存器, 可使用段超越前缀改变
对于BP,默认的段地址在SS段寄存器,可使用段 超越前缀改变
MOV指令—立即数传送
mov cl,4 mov dx,0ffh mov si,200h
;cl←4,字节传送 ;dx←00ffh,字传送 ;si←0200h,字传送
以字母开头的常数要有前导0 明确指令是字节操作还是字操作
MOV指令—寄存器传送
mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov [bx],al
80%
指令的组成
操作码 操作数
指令由操作码和操作数两部分组成
操作码说明计算机要执行哪种操作,如传送、运 算、移位、跳转等操作,它是指令中不可缺少的 组成部分
操作数是指令执行的参与者,即各种操作的对象 有些指令不需要操作数,通常的指令都有一个或
两个操作数,也有个别指令有3个甚至4个操作数 有些指令隐含操作数
段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] ;AX←DS:[BX+SI]
MOV AX, [BX][SI] ;AX←DS:[BX+SI]
(5) 相对基址变址寻址方式
有效地址是基址寄存器(BX/BP)、变址寄存器 (SI/DI)与一个8位或16位位移量之和: 有效地址=BX/BP+SI/DI+8/16位偏移量
MOV AX, [BX+DI+6] ;AX←DS:[BX+DI+6]
MOV AX, 6[BX+DI] MOV AX, 6[BX][DI]
相对寻址方式中的偏移量
在寄存器相对和相对基址变址寻址方式中,其偏 移量不仅可用常量表示,也可用符号表示
;非法指令,修正:
;mov ax,050ah
MOV SI, DL
;非法指令,修正:
;mov dh,0
;mov si,dx
非法指令—无法确定是字节还是字操作
当无法通过任一个操作数确定是操作类型时,需 要利用汇编语言的操作符显式指明 MOV [BX+SI], 255 ;非法指令,修正:
;mov byte ptr [bx+si],255
不存在存储器向存储器的传送指令
MOV指令—段寄存器传送
mov [si],ds mov ax,ds ;ax←ds mov es,ax ;es←ax←ds
对段寄存器的操作不灵活
MOV指令传送功能图解
立即数
MOV指令也并非任意传送!
存
通用寄存器
储
AX BX CX DX
器
BP SP SI DI
段寄存器 CS DS ES SS
;byte ptr 说明是字节操作
;mov word ptr [bx+si],255
;word ptr 说明是字操作
非法指令—两个操作数都是存储器
8086/8088指令系统除串操作指令外,不允许两个 操作数都是存储单元(存储器操作数) MOV [0200H], [0100H] ;非法指令,修正: ;假设是字操作 ;mov ax,[0100H] ;mov [0200H],ax
这个符号可以是变量名,例如WVAR变量,而且 支持多种表达形式
MOV AX, [DI+WVAR] ;等同于 MOV AX, WVAR[DI]
MOV AX,[BX+SI+WVAR] ;等同于 MOV AX, [BX][SI+WVAR] ;等同于 MOV AX, WVAR[BX+SI] ;等同于 MOV AX, WVAR[BX][SI]
MOV AX, [BX]
;AX←DS:[BX]
MOV AX, ES:[BX] ;AX←ES:[BX]
MOV AH,DS:[BP] MOV ES:[DI],AL
(3) 寄存器相对寻址方式
有效地址是寄存器内容与有符号8位或16位位移量 之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位偏移量
1、直接寻址方式 2、寄存器间接寻址方式 3、寄存器相对寻址方式 4、基址变址寻址方式 5、相对基址变址寻址方式
(1) 直接寻址方式
直接寻址方式的有效地址在指令中直接给出 默认的段地址在DS段寄存器,可使用段超越前
缀改变 用中括号包含有效地址,表达存储单元的内容
MOV AX, [2000H] ;AX←DS:[2000H]
段地址对应BX/SI/DI寄存器默认是DS,对应BP 寄存器默认是SS;可用段超越前缀改变
MOV AX, [SI+06H] ;AX←DS:[SI+06H]
MOV AX, 06H[SI] ;AX←DS:[SI+06H]
(4) 基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI
④ MOV AX,[BP]100H
;寄存器相对寻址
EA=0100H+100H=0200H, PA=68000H+0200H=68200H
⑤ MOV AX,100H[SI]
;寄存器相对寻址
EA=1123H+100H=1223H,
PA=20000H+1223H=21223H
举例
若(BX)= 0313H,(SI)=1123H,(DI)= 0606H,(DS)= 2000H,(SS)= 6800H,(BP) = 0100H。指出下列指令中画线的操作数的寻址方
式,如果为存储器操作数,请计算该操作数的有效 地址与物理地址。
⑥ MOV AL,[BX][SI]
;基址变址寻址
EA=0313H+1123H=1436H, PA=20000H+1436H=21436H ⑦ MOV AX,[BP+SI+100H] ;相对基址加变址寻址 EA=0100H+1123H+100H=1323H, PA=68000H+1323H=69323H
有5条指令
MOV
MOV
XCHG POP
PUSH
POP
传送指令MOV(move)
把一个字节或字的操作数从源地址传 送至目的地址
MOV reg/mem,imm ;立即数送寄存器或主存 MOV reg/mem/seg,reg;寄存器送(段)寄存器或主存 MOV reg/seg,mem ;主存送(段)寄存器 MOV reg/mem,seg;段寄存器送寄存器或主存
;非法指令
;指令存在,但不能执行
交换指令XCHG(exchange)
把两个地方的数据进行互换
XCHG reg,reg/mem ;reg reg/mem
寄存器与寄存器之间交换数据 寄存器与存储器之间交换数据 不能在存储器与存储器之间对换数据
举例
mov ax,1199h
;ax=1199h
xchg ah,al
数据传送指令
数据传送是计算机中最基本、最重要的一种 操作
传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位
置 除标志寄存器传送指令外,均不影响标志位 重点掌握
MOV XCHG XLAT PUSH POP IN OUT LEA
(1)通用数据传送指令
提供方便灵活的通用传送操作
;ax=9911h
;等同于 xchg al,ah
mov wvar,5566h ;wvar是一个字量变量
xchg ax,wvar
;ax=5566h,wvar=9911h
;等同于 xchg wvar,ax
查表转换指令XLAT(translate)
XLAT指令是字节的查表转换指令,可以根据表 中元素的序号查出表中相应元素的内容
微机原理与接口技术
第三章 指令系统
主要内容
寻址方式 8086/8088的基本指令 指令格式及执行时间
基本概念
指令与指令系统
CISC与RISC
CISC:复杂指令集计算机,典型代表Intel Pentium RISC:精简指令集计算机,典型代表PowerPC
20%
最经常使用的指令 不经常使用的指令
非法指令的主要现象: 两个操作数的类型不一致 无法确定是字节量还是字量操作 两个操作数都是存储器 段寄存器的操作有一些限制
非法指令—两个操作数类型不一致
在绝大多数双操作数指令中,目的操作数和源操 作数必须具有一致的数据类型,或者同为字量, 或者同为字节量,否则为非法指令
MOV AL, 050AH
寄存器名表示其内容(操作数)
MOV AX, BX
;AX←BX
存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA) PA=(段寄存器)×10H + EA
8086设计了多种存储器寻址方式
指令中的操作数
可以是一个具体的数值 可以是存放数据的寄存器 或指明数据在主存位置的存储器地址
寻址与寻址方式
指令系统设计了多种操作数的来源 寻找操作数的过程就是操作数的寻址 把寻找操作数的方式叫做操作数的寻址方式 理解操作数的寻址方式是理解指令功能的前
提 操作数采取哪一种寻址方式
一方面,会影响处理器执行指令的速度和效率 另一方面,对程序设计也很重要
非法指令—段寄存器的操作有一些限制
8086/8088指令系统中,能直接对段寄存器操作的 指令只有MOV等个别传送指令,并且不灵活
MOV DS, ES
;非法指令,修正:
;mov ax,es
;mov ds,ax
MOV DS, 100H
;非法指令,修正:
;mov ax,100h
;mov ds,ax
MOV CS, [SI]
举例
若(BX)= 0313H,(SI)=1123H,(DI)= 0606H,(DS)= 2000H,(SS)= 6800H,(BP) = 0100H。指出下列指令中画线的操作数的寻址方 式,如果为存储器操作数,请计算该操作数的有效 地址与物理地址。
① MOV AX,1117H ;立即寻址
② MOV BX,SP ;寄存器寻址
操作数的来源
操作数
指令 寄存器 内存 I/O设备或端口
立即数寻址方式
指令中的操作数直接存放在机器代码中,紧跟在 操作码之后(操作数作为指令的一部分存放在操 作码之后的主存单元中)
这种操作数被称为立即数imm 可以是8位数值i8(00H~FFH) 也可以是16位数值i16(0000H~FFFFH)
③ MOV DX,[BX] ;寄存器间接寻址
EA=0313H,PA=20000H+0313H=20313H
举例
若(BX)= 0313H,(SI)=1123H,(DI)= 0606H,(DS)= 2000H,(SS)= 6800H,(BP) = 0100H。指出下列指令中画线的操作数的寻址方
式,如果为存储器操作数,请计算该操作数的有效 地址与物理地址。
指令的助记符格式
操作码 操作数1,操作数2 ;注释
操作数2,常被称为源操作数src,它表示参 与指令操作的一个对象
操作数1,成被称为目的操作数dest,它不 仅可以作为指令操作的一个对象,还可以 用来存放指令操作的结果
分号后的内容是对指令的解释
指令的操作码和操作数
每种指令的操作码
用一个助记符表示(指令功能的英文缩写) 对应着机器指令的一个或多个二进制编码
;ah←al,字节传送 ;bvar←ch ,字节传送 ;ax←bx,字传送 ;ds←ax,字传送 ;[bx]←al,字节传送
寄存器具有明确的字节和字类型
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]
立即数寻址方式常用来给寄存器和存储单元赋值
MOV AX, 0102H
;AX←0102H
寄存器寻址方式
操作数存放在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
MOV AX, ES: [2000H] ;AX←ES:[2000H] MOV AX,BUFFER ; BUFFER:符号地址
(2) 寄存器间接寻址方式
有效地址存放在基址寄存器BX、BP或变址寄存 器SI、DI中
对于BX、SI、DI,默认的段地址在DS段寄存器, 可使用段超越前缀改变
对于BP,默认的段地址在SS段寄存器,可使用段 超越前缀改变
MOV指令—立即数传送
mov cl,4 mov dx,0ffh mov si,200h
;cl←4,字节传送 ;dx←00ffh,字传送 ;si←0200h,字传送
以字母开头的常数要有前导0 明确指令是字节操作还是字操作
MOV指令—寄存器传送
mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov [bx],al
80%
指令的组成
操作码 操作数
指令由操作码和操作数两部分组成
操作码说明计算机要执行哪种操作,如传送、运 算、移位、跳转等操作,它是指令中不可缺少的 组成部分
操作数是指令执行的参与者,即各种操作的对象 有些指令不需要操作数,通常的指令都有一个或
两个操作数,也有个别指令有3个甚至4个操作数 有些指令隐含操作数
段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] ;AX←DS:[BX+SI]
MOV AX, [BX][SI] ;AX←DS:[BX+SI]
(5) 相对基址变址寻址方式
有效地址是基址寄存器(BX/BP)、变址寄存器 (SI/DI)与一个8位或16位位移量之和: 有效地址=BX/BP+SI/DI+8/16位偏移量