8086系统可寻址I⼀O端口的最大地址为多少

2024年11月05日 21:35
有1个网友回答
网友(1):

寻址方式:表示操作数地址的方式
IBM PC机的寻址方式

与数据有关的寻址方式
与转移地址有关的寻址方式
3.1.1 与数据有关的寻址方式 ( 7种 )
以 MOV 指令为例
1. 立即寻址方式* —— 操作数在指令中给出
MOV AL, 5
MOV AX, 3064H
* 只能用于SRC字段 ? MOV 5, AL
* SRC 和 DST的字长一致 ? MOV AH, 3064
2. 寄存器寻址方式* —— 操作数在指定的寄存器中
MOV AX, BX
MOV AL, BH
* 字节寄存器只有 AH AL BH BL CH CL DH DL
* SRC 和 DST的字长一致 MOV AH, BX
* CS不能用MOV指令改变 MOV CS, AX
3. 直接寻址方式* —— 有效地址EA由指令直接给出
有效地址EA:操作数的偏移地址
物理地址PA = 16d ? (DS) + EA
例:MOV AX, [2000H]
EA=2000H, 假设(DS)=3000H, 那么(PA)=32000H
例:操作数地址可由变量(符号地址)表示
MOV AH, VALUE ( VALUE DB 10 )
* 隐含的段为数据段 DS
* 可使用段跨越前缀 MOV AX, ES :[2000H]
* 使用变量时,要注意变量的属性
VALUE DB 10
MOV AX, VALUE ;错误
MOV AL, VALUE
MOV AX, WORD PTR VALUE
* 适于处理单个变量
4. 寄存器间接寻址方式
* ——EA在基址寄存器(BX/BP) 或变址寄存器(SI/DI)中
BX, SI, DI ->(DS)
物理地址 = 16d * (DS) + (BX)
物理地址 = 16d * (DS) + (SI)
物理地址 = 16d * (DS) + (DI)
BP ->(SS)
物理地址 = 16d * (SS) + (BP)
MOV AX, [BX]
PA = 16d *(DS) + (BX)
MOV ES:[BX] , AX
PA = 16d *(ES) + (BX)
MOV DX, [BP]
PA = 16d *(SS) + (BP)
寄存器间接寻址方式*
* 不允许使用AX、CX、DX存放EA
MOV AX, [CX];错误
* SRC 和 DST的字长一致
MOV DL, [SI] ; [BX]指示一个字节单元
MOV DX, [DI] ; [BX]指示一个字单元
适于对数组、字符串、表格中的数据连续处理

5. 寄存器相对寻址方式*

有效地址 = (BX) + 8位或者16或位移量

有效地址 = (BP) + 8位或者16或位移量

有效地址 = (SI) + 8位或者16或位移量

有效地址 = (DI) + 8位或者16或位移量

例: MOV AX, COUNT[SI] 或 MOV AX, [COUNT+SI]

假设(DS)=3000H, (SI)=2000H, COUNT=3000H 那么 PA = 35000H

假设(35000H)=1234H, 那么 (AX)=1234H

* 适于数组、字符串、表格的处理

6. 基址变址寻址方式*

有效地址 = (BX) + (SI)

有效地址 = (BX) + (DI)

有效地址 = (BP) + (SI)

有效地址 = (BP) + (DI)

MOV AX, [BX][DI]

PA=(DS)×16d+(BX)+(DI)

或 MOV AX, [BP+DI]

PA=(SS)×16d+(BX)+(DI)

MOV AX, ES:[BX][SI]

PA=(ES)×16d+(BX)+(SI)

* 适于数组、字符串、表格的处理

* 必须是一个基址寄存器和一个变址寄存器的组合

MOV AX, [BX][BP] ;错误

MOV AX, [SI][DI] ;错误

7. 相对基址变址寻址方式*

有效地址 = (BX) + (SI) + 8位或者16或位移量

有效地址 = (BX) + (DI) + 8位或者16或位移量

有效地址 = (BP) + (SI) + 8位或者16或位移量

有效地址 = (BP) + (DI) + 8位或者16或位移量

MOV AX, MASK[BX][SI]

或 MOV AX, MASK[BX+SI]

或 MOV AX, [MASK+BX+SI]