+ -
当前位置:首页 → 问答吧 → 关于assume伪命令

关于assume伪命令

时间:2010-11-09

来源:互联网

在数据段中定义的每一个变量标志符其实都代表了一个偏移量(也称为有效地址),这个偏移量与数据段段值相结合就指向某个内存地址。在程序中使用ASSUME伪指令是用来指明一个默认的段地址。一旦你把某个数据段的段名指定给某个段寄存器(比如ASSUME DS,DATA1),这之后当你使用这个数据段(DATA1)内定义的变量,编译程序就自动把它与这个段寄存器(DS)里的段值(表示一个段地址)结合起来使用。 
这是我自己弄的例子
assume cs:code ,ds:date
data segment
a db 01h
data ends
code segment
start: 
mov ax data
mov ds,ax
mov ax a
mov ax,4c00h
int 21h
code ends
end start
--------------------------------------------------------------------------
assume cs:code 两段程序就这里不一样
data segment
a db 01h
data ends
code segment
start: 
mov ax data
mov ds,ax
mov ax a
mov ax,4c00h
int 21h
code ends
end start
用debug运行结果都是一样的。。你们觉得这两个有什么区别吗 如果没区别。。为什么assume cs:code一定要用,其它的好像可有可无,谁帮我解释下。。

作者: yg23hhxj   发布时间: 2010-11-09

程序那个是a db 0001 我写错的是,应该是a dw 01h 

另外assume cs:code一定要用这个也打错了,是问assume cs:code一定要有。。

作者: yg23hhxj   发布时间: 2010-11-09