从寄存器中读取数据
- 数据的存储 1 个内存单元 = 1 Byte = 1 字节型数据 = 8bit = 0 - 255 2 个连续的内存单元 = 2 Byte = 2 字节型数据 = 16bit = 1 个 字 型数据 = 0 - 65535
内存单元 数据
0H 20H
1H 4EH
2H 78H
3H FFH
4H 00H
5H 00H
6H 00H
7H 00H
8H 00H
9H 00H
AH 00H
BH 00H
CH 00H
DH 00H
EH 00H
FH 00H
10H
0地址内存单元存放的 字节型数据 20H
0地址内存单元存放的 字型数据 4E20H
1地址内存单元存放的 字节型数据 4EH
1地址内存单元存放的 字型数据 784EH
- 从 DS 中读取数据, 默认的段地址是 DS
Z:\>DEBUG
-d 2000:0 F
2000:0000 11 22 33 44 00 10 B2 10-EF FE 0F 0E 00 00 00 00
-a
0DAB:0100 mov bx,2000
0DAB:0103 mov ds,bx # 段地址DS变成2000
0DAB:0105 mov al,[0] # 将DS中的数据读取到AL中, AL只能读取低八位
0DAB:0108
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0100 NV UP EI NG NZ NA PO NC
0DAB:0100 BB0020 mov BX,2000
-t
AX=0000 BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0103 NV UP EI NG NZ NA PO NC
0DAB:0103 8EDB mov DS,BX
-t
AX=0000 BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0105 NV UP EI NG NZ NA PO NC
0DAB:0105 A00000 mov AL,[0000] DS:0000=11
-t
AX=0011 BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0108 NV UP EI NG NZ NA PO NC
0DAB:0108 726C JB 0176
# 从DS(2000:0)中读取第1个字(3322)到AX中
-a
0DAB:0108 mov ax,[1]
0DAB:010B
-d 2000:0 F
2000:0000 11 22 33 44 00 10 B2 10-EF FE 0F 0E 00 00 00 00
-r
AX=0011 BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0108 NV UP EI NG NZ NA PO NC
0DAB:0108 A10100 mov AX,[0001] DS:0001=3322
-t
AX=3322 BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=010B NV UP EI NG NZ NA PO NC
0DAB:010B BFAD00 mov DI,00AD
# 将DS第1个字(3322)的低八位读取到BL中
-d ds:0 F
2000:0000 11 22 33 44 00 10 B2 10-EF FE 0F 0E 00 00 00 00
-a
0DAB:010B mov bl,[1]
0DAB:010F
-t
AX=3322 BX=2022 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=010F NV UP EI NG NZ NA PO NC
0DAB:010F 0808 OR [BX+SI],CL DS:2022=00
- 检测点 将 AL 中的数据(EFH), 读取到内存单元 10000H 中
Z:\>DEBUG
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0100 NV UP EI NG NZ NA PO NC
0DAB:0100 C3 RET
-a
0DAB:0100 mov al,EF
0DAB:0102 mov bx,1000
0DAB:0105 mov ds,bx
0DAB:0107 mov [0],al
0DAB:010A
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0100 NV UP EI NG NZ NA PO NC
0DAB:0100 B0EF mov AL,EF
-t
AX=00EF BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0102 NV UP EI NG NZ NA PO NC
0DAB:0102 BB0010 mov BX,1000
-t
AX=00EF BX=1000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0105 NV UP EI NG NZ NA PO NC
0DAB:0105 8EDB mov DS,BX
-t
AX=00EF BX=1000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=1000 ES=0DAB SS=0DAB CS=0DAB IP=0107 NV UP EI NG NZ NA PO NC
0DAB:0107 A20000 mov [0000],AL DS:0000=00
-t
AX=00EF BX=1000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=1000 ES=0DAB SS=0DAB CS=0DAB IP=010A NV UP EI NG NZ NA PO NC
0DAB:010A 008A1E01 add [BP+SI+011E],CL SS:011E=81
-d ds:0 F
1000:0000 EF 00 FF FF FF FF FF FF-FF 00 00 00 38 6C 60 F8 ............8l`.
-
检测点 物理内存地址中的数据如下 20000H 23H 20001H 11H 20002H 22H 20003H 66H
执行如下指令, 寄存器中的内容是 mov ax,2000H mov ds,ax mov ax,ds:[0] mov bx,ds:[2] mov cx,ds:[1] add bx,ds:[1] add cx,ds:[2]
分析:
23 11 22 66
mov ax,2000H AX = 2000H
mov ds,ax DS = 2000H (物理地址20000H)
mov ax,ds:[0] AX = 1123H
mov bx,ds:[2] BX = 6622H
mov cx,ds:[1] CX = 2211H
add bx,ds:[1] BX = 2211H + 6622H = 8833H
add cx,ds:[2] CX = 6622H + 2211H = 8833H
# 实战
Z:\>DEBUG
-e 2000:0
2000:0000 11.23 22.11 33.22 44.66 00.
-d 2000:0 F
2000:0000 23 11 22 66 00 10 B2 10-EF FE 0F 0E 00 00 00 00
-a
0DAB:0100 mov ax,2000
0DAB:0103 mov ds,ax
0DAB:0105 mov ax,[0]
0DAB:0108 mov bx,[2]
0DAB:010C mov cx,[1]
0DAB:0110 add bx,[1]
0DAB:0114 add cx,[2]
0DAB:0118
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0100 NV UP EI NG NZ NA PO NC
0DAB:0100 B80020 mov AX,2000
-t
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0103 NV UP EI NG NZ NA PO NC
0DAB:0103 8ED8 mov DS,AX
-t
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0105 NV UP EI NG NZ NA PO NC
0DAB:0105 A10000 mov AX,[0000] DS:0000=1123
-t
AX=1123 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0108 NV UP EI NG NZ NA PO NC
0DAB:0108 8B1E0200 mov BX,[0002] DS:0002=6622
-t
AX=1123 BX=6622 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=010C NV UP EI NG NZ NA PO NC
0DAB:010C 8B0E0100 mov CX,[0001] DS:0001=2211
-t
AX=1123 BX=6622 CX=2211 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0110 NV UP EI NG NZ NA PO NC
0DAB:0110 031E0100 add BX,[0001] DS:0001=2211
-t
AX=1123 BX=8833 CX=2211 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0114 OV UP EI NG NZ NA PE NC
0DAB:0114 030E0200 add CX,[0002] DS:0002=6622
-t
AX=1123 BX=8833 CX=8833 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0118 OV UP EI NG NZ NA PE NC
0DAB:0118 0000 add [BX+SI],AL DS:8833=00
- add 加法练习 将一段内存中连续的三个字型数据相加放到 AX 中 段为 20000H:12 34 99 88 FF EE
Z:\>DEBUG
-d 2000:0 F
2000:0000 12 34 99 88 FF EE B2 10-EF FE 0F 0E 00 00 00 00 .4..............
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0100 NV UP EI NG NZ NA PO NC
0DAB:0100 C3 RET
-a
0DAB:0100 mov bx,2000
0DAB:0103 mov ds,bx
0DAB:0105 mov ax,0
0DAB:0108 add ax,[0]
0DAB:010C add ax,[2]
0DAB:0110 add ax,[4]
0DAB:0114
-t
AX=0000 BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=0DAB ES=0DAB SS=0DAB CS=0DAB IP=0103 NV UP EI NG NZ NA PO NC
0DAB:0103 8EDB mov DS,BX
-t
AX=0000 BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0105 NV UP EI NG NZ NA PO NC
0DAB:0105 B80000 mov AX,0000
-t
AX=0000 BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0108 NV UP EI NG NZ NA PO NC
0DAB:0108 03060000 add AX,[0000] DS:0000=3412
-t
AX=3412 BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=010C NV UP EI PL NZ NA PE NC
0DAB:010C 03060200 add AX,[0002] DS:0002=8899
-t
AX=BCAB BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0110 NV UP EI NG NZ NA PO NC
0DAB:0110 03060400 add AX,[0004] DS:0004=EEFF
-t
AX=ABAA BX=2000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DAB SS=0DAB CS=0DAB IP=0114 NV UP EI NG NZ AC PE CY
0DAB:0114 030E0200 add CX,[0002] DS:0002=8899