接口技术课程PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV AX,AREA1
注意区分: AREA1 EQU 0867H MOV AX,AREA1
30 50
AH AL
4
四、寄存器间接寻址方式(Register Indirect Addreing)
操作数在存储单元中。操作 数的有效地址EA在指令码 所指定的寄存器中。可作为 间址的寄存器有SI、DI、 BX、BP, 若:
功能:从8位端口读入一个字节到AL,或从16位端口读入一个字到AX。
例:用IN指令从输入端口读取数据
(1) IN AL,0E3H 执行指令前
E3H端口 9DH
(2) IN AX,80H 执行指令前
80H端口 5BH
AL 22H
执行指令后
81H端口 17H
E3H端口 9DH
AX 3355H
Байду номын сангаасAL 9DH
若指令指定的寄存器是BX,段寄存器使用DS; 物理地址=16×DS+BX+SI
或 =16×DS+BX+DI 若指令指定的寄存器是BP, 则段寄存器使用SS。
物理地址=16×SS+BP+SI
或 =16×SS+BP+DI 例:MOV AX ,[BX][SI]
若 DS=3000H,SI=2000H,BX=3000H,(35000H)=0ABCDH
10
3、其它寻址方式 (1)隐含寻址:指令中不指明操作数 (2)I/O端口寻址:8086有直接端口寻址和间接端口寻址 两种方式,端口寻址范围分别为0-0FFH和0-FFFFH。 (3)转移类指令寻址 (4)一条指令有几种寻址方式
11
3-2 8086的指令系统
数据传送 算术运算
8088的指令系统可以分为六个功能组: 逻辑运算
操作数在存储单元中。操作数的有效地址是以指令指 定的寄存器内容加上指令中给定的8位或16位位移量。
若指令指定的寄存器是BX、SI或DI,段寄存器使用DS; 若指令指定的寄存器是BP, 则段寄存器使用SS。
30000
操作码 操作码
00 30
码 段 数据段
例:若(DS)=3000H, (SI)=2000H,COUNT=3000H
执行指令后
80H端口 5BH 81H端口 17H
AX 17 5BH
17
2、输出指令 OUT
指令格式: OUT n ,AL 或 OUT n ,AX
OUT DX,AL 或 OUT DX,AX
功能:将AL中的一个字节写到一个8位端口,或把AX中的一个 字写到一个16位端口。
例:用 OUT 指令对输出端口进行操作
第三章 8086/8088的指令系统
第一节 寻址方式 一、立即寻址 三、直接寻址 五、变址寻址
二、寄存器寻址 四、寄存器间接寻址 六、基址加变址寻址
第二节 指令系统 一、数据传送指令 三、逻辑运算指令
五、控制转移指令
二、算术运算指令 四、串操作指令 六、处理器控制指令
1
第三章 8086的寻址方式和指令系统
(三)地址-目的传送指令 这是专用于传送地址码的指令,可用来传送操作数的段地址和 偏移地址,共包含以下三条指令:
1、LEA取有效地址指令 指令格式:LEA 目的 , 源 功能:把源操作数的地址偏移量,传送至目的操作数。 要求源操作数必须是一个内存操作数;目的操作数必须 是一个除段寄存器以外的16位寄存器。
操作:PUSH 操作时,先修改SP 的值,使 SP 2 SP 后,把源操
作数(字)压入堆栈中 SP 指示的位置上。OPRD可以是16位的通
用寄存器,段寄存器,存储器中的字。
例:PUSH AX 指令执行过程: 指令执行前
AX=2A8CH
指令执行后 AX=2A8CH
SP
2000: 0130H
SP
2000: 0130H
3-1 8086的寻址方式 计算机的指令一般由操作码和操作数组成,操作码规定了 指令的功能;而操作数则规定了指令操作的对象。操作数可以 以立即数的形式存放在指令中,但在大多数情况下,操作数是 以地址的形式存放在指令(指示操作数在哪儿)。用于说明操 作数所在地址的方法称为寻址方式。
在微机中,操作数存放在: 1、在指令中;2、在CPU的某一 内部寄存器中;3、在内存的数据区中;4、I/O端口。
例:若十进制数字0~9 的 LED七段显示码对照表已存放在内存中, 表格的首地址为TABLE,用 XLAT 指令求数字5的七段显示码 值程序如下:
TABLE DB 40H, 79H, 24H, 30H, 19H ; 建立七段显示码表格 DB 12H, 02H, 78H, 00H, 18H
MOV AL,5
存 储
* 不影响标志位;
器
* 源操作数不变;
*存储器之间,立即数与段寄存
器,段寄存器之间不能用一条指令
完成数据传送。
立即数
段寄存器 DS、ES、SS
通用 指针 变址 寄存
器
12
2、堆栈操作指令 堆栈是以“ 先进后出”的方式工作的一个存储区,
进栈指令 PUSH OPRD
功能:将一个字的源操作数传送至由SP所指向的堆栈的顶部.
代码段区域中。操作数im既可
是8位的,也可是16位的。
AX
二、寄存器寻址(Register Addreing)
操作数放在指令规定的寄存器中。
例:MOV AX,im MOV AL,26H
AH AL
M
imH imL 操作码
imL imH
码 段
例:MOV DS,AX
DS
AX
3
三、直接寻址方式(Direct Addreing)
若指令指定的寄存器是BX,段寄存器使用DS;
物理地址=16×DS+BX+SI+8位或16位位移量
或
=16×DS+BX+DI +8位或16位位移量
若指令指定的寄存器是BP, 则段寄存器使用SS
物理地址=16×SS+BP+SI +8位或16位位移量
或
=16×SS+BP+DI +8位或16位位移量
例: MOV AX,COUNT [BX] [SI]
; AL 5
MOV BX,OFFSET TABLE ; BX 表格首地址
XLAT
; AL 12H 16
(二)累加器专用传送指令 1、输入指令 IN
指令格式: IN AL,n 或 IN AX,n ;n为 255 的端口地址 IN AL,DX 或 IN AX,DX;端口地址放在DX中。
第一种格式,端口地址n(00~FFH)直接包含在IN指令里,共允许寻址256个 端口。当端口地址号大于FFH时,必须用第二种寻址方式,即先将端口号送 入DX寄存器,再执行输入操作。
* 方括号有相加的含义,下面几种写法都是等价的: 1200[BX][SI] [BX+1200][SI] [BX+ SI +1200]
* 方括号内包含BP,则隐含使用SS提供基地址;其余情 况均使用DS提供基地址。
9
2、段超越: 在8088系统中,数据通常在数据段中,但若 需要,数据也可存放在码段,堆栈段以及附加段中,这种情 况就是段超越。应用时,需在指令中加以说明。
在8086CPU中,内存地址是由数据段地址和段内偏移量 组成。而指令中规定的地址即为段内偏移量(逻辑地址)— —有效地址EA,有效地址EA构成的方法不同,则为不同的 寻址方式。
2
一、立即寻址方式(Immediate Addreing)
操作数(8位或16的常数)
直接包含在指令中,紧跟在操
作码后面,与操作码一起放在
例:MOV AX,ES:[0500H]
ES表示数据在附加段中; : 是修改属性运算符。
存储器操作的类型 取指令 堆栈操作
通用数据读写 源数据串
目的数据串 用 BP 作为基寄存器
约定段 CS SS DS DS ES SS
允许超越段 无 无
CS、ES、SS CS、ES、SS
无 CS、DS、ES
逻辑地址 IP SP EA SI DI EA
1、操作数在数据段DS中: 则以寄存器BX、SI或DI间 接寻址。
2、操作数在堆栈段中:则 以寄存器BP间接寻址。
例:若(DS)=2000H, (SI)=1000H
MOV AX,[SI]
操作码 码 段
20000
21000 21001
数据段
A0 50
AX 50 A0 AH A5L
五、寄存器相对寻址方式(Register Relative Addreing)
MOV AX,COUNT [SI] 或 MOV AX, [COUNT +SI]
物理地址=16×DS+SI+COUNT
=30000H+2000H+3000H
35000 50 35001 30
=35000H
AX 30 50 6
六、基址变址寻址方式(Based Indexed Addreing)
操作数在存储单元中。操作数的有效地址是一个基址寄 存器(BX或BP)和一个变址寄存器(SI或DI)的内容之和 ,两个寄存器均由指令指定。一般由基址寄存器决定所使用 的段寄存器。
若 DS=3000H,SI=0300H,BX=1500H, COUNT =0200H,(31A00H)=26BFH
则:物理地址=16×DS+BX+SI+ COUNT = 31A00H AX=26BFH
8
需说明的几个问题
1、指令中使用方括号的地址表达式必须遵循下列规则:
* 立即数可以出现在方括号内,表示直接地址; * 只有SI、BP、DI、BX可以出现在方括号内,它们可以单独出 现,也可以相加后出现,或以寄存器与立即数相加的形式出现, 但BX和BP或SI和DI不能同时出现在同一个[ ]内,SI和DI也不能 同时出现;
例:若(DS)=3000H MOV AX,[2000H]
操作数的有效地址EA是指令的一 部分,它与操作码一起放在代码段 区域中。 操作数的物理地址为数据 段寄存器DS加上16位地址偏移量。
30000
32000 32001
操作码
00 20
50 30
码 段 数据段
指令中存储单元的地址也可用符号地 址表示。例:AREA1 DW 0867H
执行指令前 BX=4FAEH
执行指令后
BX=396EH
SP →
72H 39H 6EH
2000: 0130H
2000: 0000H
SP → 72H 39H
SP → 6EH
2000: 0132H 2000: 0131H 2000: 0130H
2000: 0000H
14
3、交换指令 指令格式:XCHG OPRD1,OPRD2 功能:把一个字或一个字节的源操作数与目的操作数交换。
1) OUT 84H,AX 执行指令前 执行指令后
2) MOV DX,300H OUT DX,AL
执行指令前 执行指令后
AX 3F46H AX 3F46H
AL 9AH AL 9AH
端口 84H 66H 85H 77H
端口 84H 46H 85H 3FH
端口 300H 22H
端口 300H 9AH
18
31801H 19H 31800H 95H
31801H 31H 31800H B0H
15
3、换码指令 XLAT (查表指令)
指令格式:XLAT 功能((BX)+(AL))→ AL
该指令执行前,先把转换表首地址的偏移量送入BX中,而把要查找表内单元 的偏移量(0~255)送入AL中。执行换码指令后,把该单元的内容送入AL中。
则:物理地址=16×DS+BX+SI=35000H AX=0ABCDH
7
七、相对基址变址寻址方式(Relative Based Indexed Addreing)
操作数在存储单元中。操作数的有效地址是基址寄存器
(BX或BP)内容加上变址寄存器(SI或DI)的内容、再加 上指令中指定的8位或16位位移量。一般由基址寄存器决定 所使用的段寄存器。
交换可在寄存器之间、寄存器与存储器之间进行。
但段寄存器不能作为操作数,也不能直接交换两个存储 单元中的内容。
例:设AX=31B0H,DS=3000H, BX=1800H,(31800H)= 1995H, 执行指令 XCHG AX, [BX] 的过程为:
执行指令前
执行指令后
AX 31B0H
AX 1995H
2AH
SP
8CH 2000:
012EH
2000: 0000H
2000: 0000H
13
出栈指令 POP OPRD 功能:把当前 SP 所指向的堆栈顶部的一个字送到指定的目的
操作数中。(CS不能作为目的操作数)
操作:每执行一次出栈操作,SP +2 → SP ,指向新的栈顶。
例:设SS=2000H,SP = 0130H,(20130H)= 396EH, BX=4FAEH,执行指令POP BX的过程如下图所示:
串操作
一、数据传送指令
控制传送
(一)通用传送指令
处理器控制
1、 MOV OPRD1,OPRD2
MOV指令允许传送数 据的途径如下图所示
目的操作数 源操作数
功能:将源操作数的一个字节(B)或一个
字(W)传送到目的操作数所指的单元。
说明:* 指令中至少要有一项明确 指出传送的是字节还是字;
* 可用不同的寻址方式;
注意区分: AREA1 EQU 0867H MOV AX,AREA1
30 50
AH AL
4
四、寄存器间接寻址方式(Register Indirect Addreing)
操作数在存储单元中。操作 数的有效地址EA在指令码 所指定的寄存器中。可作为 间址的寄存器有SI、DI、 BX、BP, 若:
功能:从8位端口读入一个字节到AL,或从16位端口读入一个字到AX。
例:用IN指令从输入端口读取数据
(1) IN AL,0E3H 执行指令前
E3H端口 9DH
(2) IN AX,80H 执行指令前
80H端口 5BH
AL 22H
执行指令后
81H端口 17H
E3H端口 9DH
AX 3355H
Байду номын сангаасAL 9DH
若指令指定的寄存器是BX,段寄存器使用DS; 物理地址=16×DS+BX+SI
或 =16×DS+BX+DI 若指令指定的寄存器是BP, 则段寄存器使用SS。
物理地址=16×SS+BP+SI
或 =16×SS+BP+DI 例:MOV AX ,[BX][SI]
若 DS=3000H,SI=2000H,BX=3000H,(35000H)=0ABCDH
10
3、其它寻址方式 (1)隐含寻址:指令中不指明操作数 (2)I/O端口寻址:8086有直接端口寻址和间接端口寻址 两种方式,端口寻址范围分别为0-0FFH和0-FFFFH。 (3)转移类指令寻址 (4)一条指令有几种寻址方式
11
3-2 8086的指令系统
数据传送 算术运算
8088的指令系统可以分为六个功能组: 逻辑运算
操作数在存储单元中。操作数的有效地址是以指令指 定的寄存器内容加上指令中给定的8位或16位位移量。
若指令指定的寄存器是BX、SI或DI,段寄存器使用DS; 若指令指定的寄存器是BP, 则段寄存器使用SS。
30000
操作码 操作码
00 30
码 段 数据段
例:若(DS)=3000H, (SI)=2000H,COUNT=3000H
执行指令后
80H端口 5BH 81H端口 17H
AX 17 5BH
17
2、输出指令 OUT
指令格式: OUT n ,AL 或 OUT n ,AX
OUT DX,AL 或 OUT DX,AX
功能:将AL中的一个字节写到一个8位端口,或把AX中的一个 字写到一个16位端口。
例:用 OUT 指令对输出端口进行操作
第三章 8086/8088的指令系统
第一节 寻址方式 一、立即寻址 三、直接寻址 五、变址寻址
二、寄存器寻址 四、寄存器间接寻址 六、基址加变址寻址
第二节 指令系统 一、数据传送指令 三、逻辑运算指令
五、控制转移指令
二、算术运算指令 四、串操作指令 六、处理器控制指令
1
第三章 8086的寻址方式和指令系统
(三)地址-目的传送指令 这是专用于传送地址码的指令,可用来传送操作数的段地址和 偏移地址,共包含以下三条指令:
1、LEA取有效地址指令 指令格式:LEA 目的 , 源 功能:把源操作数的地址偏移量,传送至目的操作数。 要求源操作数必须是一个内存操作数;目的操作数必须 是一个除段寄存器以外的16位寄存器。
操作:PUSH 操作时,先修改SP 的值,使 SP 2 SP 后,把源操
作数(字)压入堆栈中 SP 指示的位置上。OPRD可以是16位的通
用寄存器,段寄存器,存储器中的字。
例:PUSH AX 指令执行过程: 指令执行前
AX=2A8CH
指令执行后 AX=2A8CH
SP
2000: 0130H
SP
2000: 0130H
3-1 8086的寻址方式 计算机的指令一般由操作码和操作数组成,操作码规定了 指令的功能;而操作数则规定了指令操作的对象。操作数可以 以立即数的形式存放在指令中,但在大多数情况下,操作数是 以地址的形式存放在指令(指示操作数在哪儿)。用于说明操 作数所在地址的方法称为寻址方式。
在微机中,操作数存放在: 1、在指令中;2、在CPU的某一 内部寄存器中;3、在内存的数据区中;4、I/O端口。
例:若十进制数字0~9 的 LED七段显示码对照表已存放在内存中, 表格的首地址为TABLE,用 XLAT 指令求数字5的七段显示码 值程序如下:
TABLE DB 40H, 79H, 24H, 30H, 19H ; 建立七段显示码表格 DB 12H, 02H, 78H, 00H, 18H
MOV AL,5
存 储
* 不影响标志位;
器
* 源操作数不变;
*存储器之间,立即数与段寄存
器,段寄存器之间不能用一条指令
完成数据传送。
立即数
段寄存器 DS、ES、SS
通用 指针 变址 寄存
器
12
2、堆栈操作指令 堆栈是以“ 先进后出”的方式工作的一个存储区,
进栈指令 PUSH OPRD
功能:将一个字的源操作数传送至由SP所指向的堆栈的顶部.
代码段区域中。操作数im既可
是8位的,也可是16位的。
AX
二、寄存器寻址(Register Addreing)
操作数放在指令规定的寄存器中。
例:MOV AX,im MOV AL,26H
AH AL
M
imH imL 操作码
imL imH
码 段
例:MOV DS,AX
DS
AX
3
三、直接寻址方式(Direct Addreing)
若指令指定的寄存器是BX,段寄存器使用DS;
物理地址=16×DS+BX+SI+8位或16位位移量
或
=16×DS+BX+DI +8位或16位位移量
若指令指定的寄存器是BP, 则段寄存器使用SS
物理地址=16×SS+BP+SI +8位或16位位移量
或
=16×SS+BP+DI +8位或16位位移量
例: MOV AX,COUNT [BX] [SI]
; AL 5
MOV BX,OFFSET TABLE ; BX 表格首地址
XLAT
; AL 12H 16
(二)累加器专用传送指令 1、输入指令 IN
指令格式: IN AL,n 或 IN AX,n ;n为 255 的端口地址 IN AL,DX 或 IN AX,DX;端口地址放在DX中。
第一种格式,端口地址n(00~FFH)直接包含在IN指令里,共允许寻址256个 端口。当端口地址号大于FFH时,必须用第二种寻址方式,即先将端口号送 入DX寄存器,再执行输入操作。
* 方括号有相加的含义,下面几种写法都是等价的: 1200[BX][SI] [BX+1200][SI] [BX+ SI +1200]
* 方括号内包含BP,则隐含使用SS提供基地址;其余情 况均使用DS提供基地址。
9
2、段超越: 在8088系统中,数据通常在数据段中,但若 需要,数据也可存放在码段,堆栈段以及附加段中,这种情 况就是段超越。应用时,需在指令中加以说明。
在8086CPU中,内存地址是由数据段地址和段内偏移量 组成。而指令中规定的地址即为段内偏移量(逻辑地址)— —有效地址EA,有效地址EA构成的方法不同,则为不同的 寻址方式。
2
一、立即寻址方式(Immediate Addreing)
操作数(8位或16的常数)
直接包含在指令中,紧跟在操
作码后面,与操作码一起放在
例:MOV AX,ES:[0500H]
ES表示数据在附加段中; : 是修改属性运算符。
存储器操作的类型 取指令 堆栈操作
通用数据读写 源数据串
目的数据串 用 BP 作为基寄存器
约定段 CS SS DS DS ES SS
允许超越段 无 无
CS、ES、SS CS、ES、SS
无 CS、DS、ES
逻辑地址 IP SP EA SI DI EA
1、操作数在数据段DS中: 则以寄存器BX、SI或DI间 接寻址。
2、操作数在堆栈段中:则 以寄存器BP间接寻址。
例:若(DS)=2000H, (SI)=1000H
MOV AX,[SI]
操作码 码 段
20000
21000 21001
数据段
A0 50
AX 50 A0 AH A5L
五、寄存器相对寻址方式(Register Relative Addreing)
MOV AX,COUNT [SI] 或 MOV AX, [COUNT +SI]
物理地址=16×DS+SI+COUNT
=30000H+2000H+3000H
35000 50 35001 30
=35000H
AX 30 50 6
六、基址变址寻址方式(Based Indexed Addreing)
操作数在存储单元中。操作数的有效地址是一个基址寄 存器(BX或BP)和一个变址寄存器(SI或DI)的内容之和 ,两个寄存器均由指令指定。一般由基址寄存器决定所使用 的段寄存器。
若 DS=3000H,SI=0300H,BX=1500H, COUNT =0200H,(31A00H)=26BFH
则:物理地址=16×DS+BX+SI+ COUNT = 31A00H AX=26BFH
8
需说明的几个问题
1、指令中使用方括号的地址表达式必须遵循下列规则:
* 立即数可以出现在方括号内,表示直接地址; * 只有SI、BP、DI、BX可以出现在方括号内,它们可以单独出 现,也可以相加后出现,或以寄存器与立即数相加的形式出现, 但BX和BP或SI和DI不能同时出现在同一个[ ]内,SI和DI也不能 同时出现;
例:若(DS)=3000H MOV AX,[2000H]
操作数的有效地址EA是指令的一 部分,它与操作码一起放在代码段 区域中。 操作数的物理地址为数据 段寄存器DS加上16位地址偏移量。
30000
32000 32001
操作码
00 20
50 30
码 段 数据段
指令中存储单元的地址也可用符号地 址表示。例:AREA1 DW 0867H
执行指令前 BX=4FAEH
执行指令后
BX=396EH
SP →
72H 39H 6EH
2000: 0130H
2000: 0000H
SP → 72H 39H
SP → 6EH
2000: 0132H 2000: 0131H 2000: 0130H
2000: 0000H
14
3、交换指令 指令格式:XCHG OPRD1,OPRD2 功能:把一个字或一个字节的源操作数与目的操作数交换。
1) OUT 84H,AX 执行指令前 执行指令后
2) MOV DX,300H OUT DX,AL
执行指令前 执行指令后
AX 3F46H AX 3F46H
AL 9AH AL 9AH
端口 84H 66H 85H 77H
端口 84H 46H 85H 3FH
端口 300H 22H
端口 300H 9AH
18
31801H 19H 31800H 95H
31801H 31H 31800H B0H
15
3、换码指令 XLAT (查表指令)
指令格式:XLAT 功能((BX)+(AL))→ AL
该指令执行前,先把转换表首地址的偏移量送入BX中,而把要查找表内单元 的偏移量(0~255)送入AL中。执行换码指令后,把该单元的内容送入AL中。
则:物理地址=16×DS+BX+SI=35000H AX=0ABCDH
7
七、相对基址变址寻址方式(Relative Based Indexed Addreing)
操作数在存储单元中。操作数的有效地址是基址寄存器
(BX或BP)内容加上变址寄存器(SI或DI)的内容、再加 上指令中指定的8位或16位位移量。一般由基址寄存器决定 所使用的段寄存器。
交换可在寄存器之间、寄存器与存储器之间进行。
但段寄存器不能作为操作数,也不能直接交换两个存储 单元中的内容。
例:设AX=31B0H,DS=3000H, BX=1800H,(31800H)= 1995H, 执行指令 XCHG AX, [BX] 的过程为:
执行指令前
执行指令后
AX 31B0H
AX 1995H
2AH
SP
8CH 2000:
012EH
2000: 0000H
2000: 0000H
13
出栈指令 POP OPRD 功能:把当前 SP 所指向的堆栈顶部的一个字送到指定的目的
操作数中。(CS不能作为目的操作数)
操作:每执行一次出栈操作,SP +2 → SP ,指向新的栈顶。
例:设SS=2000H,SP = 0130H,(20130H)= 396EH, BX=4FAEH,执行指令POP BX的过程如下图所示:
串操作
一、数据传送指令
控制传送
(一)通用传送指令
处理器控制
1、 MOV OPRD1,OPRD2
MOV指令允许传送数 据的途径如下图所示
目的操作数 源操作数
功能:将源操作数的一个字节(B)或一个
字(W)传送到目的操作数所指的单元。
说明:* 指令中至少要有一项明确 指出传送的是字节还是字;
* 可用不同的寻址方式;