动态内存和变量地址
时间:2010-12-04
来源:互联网
动态内存网上找了下资料,还是不是很理解,想问下为什么在动态内存的情况下,变量地址会发生改变呢,有知道的朋友举个小例子,谢谢
作者: yg23hxj 发布时间: 2010-12-04
因为OS会跟根据内存情况动态的分配跟应用程序相应的地址, 这个地址通常不是绝对地址,举例说明吧还是!
比如这个简单程序
d:\MASM>type var.asm
assume cs:code,ds:data
data segment
a dw 1234h
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,a
mov ah,4ch
int 21h
code ends
end start
d:\MASM>
;注意cs,ds,ss,es值的变化
d:\MASM>debug var.exe
-r
AX=0000 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14B9 ES=14B9 SS=14C9 CS=14CA IP=0000 NV UP EI PL NZ NA PO NC
14CA:0000 B8C914 MOV AX,14C9
-t
AX=14C9 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14B9 ES=14B9 SS=14C9 CS=14CA IP=0003 NV UP EI PL NZ NA PO NC
14CA:0003 8ED8 MOV DS,AX
-t
AX=14C9 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14C9 ES=14B9 SS=14C9 CS=14CA IP=0005 NV UP EI PL NZ NA PO NC
14CA:0005 A10000 MOV AX,[0000] DS:0000=1234
-d ds:0 f
14C9:0000 34 12 00 00 00 00 00 00-00 00 00 00 00 00 00 00 4...............
-q
;下面再加入一个程序,这是一个TSR程序
;注意四个段寄存器值的变化
d:\MASM>tsr
I am already installed in the memory!
d:\MASM>debug var.exe
-r
AX=0000 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14F7 ES=14F7 SS=1507 CS=1508 IP=0000 NV UP EI PL NZ NA PO NC
1508:0000 B80715 MOV AX,1507
-t
AX=1507 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14F7 ES=14F7 SS=1507 CS=1508 IP=0003 NV UP EI PL NZ NA PO NC
1508:0003 8ED8 MOV DS,AX
-t
AX=1507 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1507 ES=14F7 SS=1507 CS=1508 IP=0005 NV UP EI PL NZ NA PO NC
1508:0005 A10000 MOV AX,[0000] DS:0000=1234
-d ds:0 f
1507:0000 34 12 00 00 00 00 00 00-00 00 00 00 00 00 00 00 4...............
-q
d:\MASM>
比如这个简单程序
d:\MASM>type var.asm
assume cs:code,ds:data
data segment
a dw 1234h
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,a
mov ah,4ch
int 21h
code ends
end start
d:\MASM>
;注意cs,ds,ss,es值的变化
d:\MASM>debug var.exe
-r
AX=0000 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14B9 ES=14B9 SS=14C9 CS=14CA IP=0000 NV UP EI PL NZ NA PO NC
14CA:0000 B8C914 MOV AX,14C9
-t
AX=14C9 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14B9 ES=14B9 SS=14C9 CS=14CA IP=0003 NV UP EI PL NZ NA PO NC
14CA:0003 8ED8 MOV DS,AX
-t
AX=14C9 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14C9 ES=14B9 SS=14C9 CS=14CA IP=0005 NV UP EI PL NZ NA PO NC
14CA:0005 A10000 MOV AX,[0000] DS:0000=1234
-d ds:0 f
14C9:0000 34 12 00 00 00 00 00 00-00 00 00 00 00 00 00 00 4...............
-q
;下面再加入一个程序,这是一个TSR程序
;注意四个段寄存器值的变化
d:\MASM>tsr
I am already installed in the memory!
d:\MASM>debug var.exe
-r
AX=0000 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14F7 ES=14F7 SS=1507 CS=1508 IP=0000 NV UP EI PL NZ NA PO NC
1508:0000 B80715 MOV AX,1507
-t
AX=1507 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14F7 ES=14F7 SS=1507 CS=1508 IP=0003 NV UP EI PL NZ NA PO NC
1508:0003 8ED8 MOV DS,AX
-t
AX=1507 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1507 ES=14F7 SS=1507 CS=1508 IP=0005 NV UP EI PL NZ NA PO NC
1508:0005 A10000 MOV AX,[0000] DS:0000=1234
-d ds:0 f
1507:0000 34 12 00 00 00 00 00 00-00 00 00 00 00 00 00 00 4...............
-q
d:\MASM>
作者: masmaster 发布时间: 2010-12-04
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28