寄存器与内存访问
存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。
高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。
任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,
也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。
DS,通常用来存放要访问数据的段的地址。
例如:要读取 10000H 单元的内容,可以用如下的程序段进行:
-A
0AF5:0100 MOV BX,1000
0AF5:0103 MOV DS,BX
0AF5:0105 MOV AL,
0AF5:0108
-T=100
AX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0103 NV UP EI PL NZ NA PO NC
0AF5:0103 8EDB MOV DS,BX
-T
AX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0105 NV UP EI PL NZ NA PO NC
0AF5:0105 A00000 MOV AL, DS:0000=64
-T
AX=0064 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0108 NV UP EI PL NZ NA PO NC
上面是读物理地址 10000H 单元内容,按 “段地址:偏移量” 来访问就是 1000:0000
因为其物理地址的计算为: 1000H*16+0000=10000H ,这个计算由CPU交给加法器来完成。
8086CPU不支持将数据直接送入段寄存器的操作(如: MOV DS,1000),这是非法指令。
所以只能按上面代码的间接用寄存器来进行中转操作。
测试:将 AL 中的数据送入内存单元 10000H
-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0100 NV UP EI PL NZ NA PO NC
0AF5:0100 B040 MOV AL,40
-A
0AF5:0100 MOV AL,40
0AF5:0102 MOV BX,1000
0AF5:0105 MOV DS,BX
0AF5:0107 MOV ,AL
0AF5:010A
-T=100
AX=0040 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0102 NV UP EI PL NZ NA PO NC
0AF5:0102 BB0010 MOV BX,1000
-T
AX=0040 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0105 NV UP EI PL NZ NA PO NC
0AF5:0105 8EDB MOV DS,BX
-T
AX=0040 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0107 NV UP EI PL NZ NA PO NC
0AF5:0107 A20000 MOV ,AL DS:0000=64
-T
AX=0040 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=010A NV UP EI PL NZ NA PO NC
0AF5:010A CD21 INT 21
-D 1000:0000 0
1000:0000 40 @
-Q
以上是字节型数据的传送。
字的传送
8086CPU是16位结构,有16根数据线,一次性可以传送16位的数据。
也就是说,可以一次性传送一个字。只要在 mov 指令中给出 16位的寄存器就可以进行16 位数据的传送了。
以下是字的传送练习与内存分析:
0AF5:0100 AX,1000
0AF5:0103 DS,AX
0AF5:0105 MOV AX,
0AF5:0108 MOV BX,
0AF5:010C MOV CX,
0AF5:0110 ADD BX,
0AF5:0114 ADD CX,
0AF5:0118
-T=100
AX=1000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0103 NV UP EI PL NZ NA PO NC
0AF5:0103 8ED8 MOV DS,AX
-T
AX=1000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0105 NV UP EI PL NZ NA PO NC
0AF5:0105 A10000 MOV AX, DS:0000=1123
-T
AX=1123 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0108 NV UP EI PL NZ NA PO NC
0AF5:0108 8B1E0200 MOV BX, DS:0002=6622
-T
AX=1123 BX=6622 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=010C NV UP EI PL NZ NA PO NC
0AF5:010C 8B0E0100 MOV CX, DS:0001=2211
-T
AX=1123 BX=6622 CX=2211 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0110 NV UP EI PL NZ NA PO NC
0AF5:0110 031E0100 ADD BX, DS:0001=2211
-T
AX=1123 BX=8833 CX=2211 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0114 OV UP EI NG NZ NA PE NC
0AF5:0114 030E0200 ADD CX, DS:0002=6622
-T
AX=1123 BX=8833 CX=8833 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0118 OV UP EI NG NZ NA PE NC
寄存器与段间数据传送
0AF5:0100 MOV AX,1000
0AF5:0103 MOV DS,AX
0AF5:0105 MOV ,CS
0AF5:0109
-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0100 NV UP EI PL NZ NA PO NC
0AF5:0100 B80010 MOV AX,1000
-T
AX=1000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0103 NV UP EI PL NZ NA PO NC
0AF5:0103 8ED8 MOV DS,AX
-T
AX=1000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0105 NV UP EI PL NZ NA PO NC
0AF5:0105 8C0E0000 MOV ,CS DS:0000=000
-T
AX=1000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0109 NV UP EI PL NZ NA
-D 1000:0000
1000:0000 F5 0A 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-Q
“MOV 段寄存器,内存单元” 数据传送分析
-d 1000:000
1000:0000 F5 0A 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1000:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0100 NV UP EI PL NZ NA PO NC
0AF5:0100 B80010 MOV AX,1000
-a
0AF5:0100 MOV AX,1000
0AF5:0103 MOV DS,AX
0AF5:0105 MOV DS,
0AF5:0109
-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0100 NV UP EI PL NZ NA PO NC
0AF5:0100 B80010 MOV AX,1000
-T
AX=1000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0103 NV UP EI PL NZ NA PO NC
0AF5:0103 8ED8 MOV DS,AX
-T
AX=1000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1000 ES=0AF5 SS=0AF5 CS=0AF5 IP=0105 NV UP EI PL NZ NA PO NC
0AF5:0105 8E1E0000 MOV DS, DS:0000=0AF5
-T
AX=1000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0109 NV UP EI PL NZ NA PO NC
[
Last edited by redtek on 2006-12-21 at 09:33 PM ]
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._