那个data segment等等是自己定义的吗,那我能不能叫其他的segment呢,比如stack segment,然后mov ax,code segment;mov DS,ax;那这时候它代表的是堆栈段还是数据段呢,还有既然有mov指令把首地址放入寄存器了,用assume指令干嘛
汇编伪指令assume具体作用是什么
汇编伪指令assume的作用是定义程序中的段与段寄存器之间的关系。详细解释如下:定义段与段寄存器的关系 在汇编语言中,程序被划分为多个不同的段,如代码段、数据段等。这些段在内存中的位置需要通过特定的方式来确定。assume伪指令允许程序员明确指定这些段与特定的段寄存器之间的映射关系。通过这种方式,程...
汇编,ASSUME指令的问题
--有了伪指令ASSUME,DOS(即操作系统)就会自动装填CS和SS。--但是,DOS自动装填的SS,并不一定是ASSUME指定的段。--同样,DOS自动装填的CS,也不一定是ASSUME指定的段,--而是在程序末尾 END START 中,指出的 START 所在的段。--SS、DS、ES,必须使用指令来装填,才能符合编程者的意图。
汇编语言关于assume的用法
assume伪指令用于向汇编程序说明所定义的逻辑段属于何种类型的逻辑段。说明的方法是将逻辑段的段名和对应的段寄存器关联起来。但除了CS寄存器外,其他逻辑段的地址需要程序员自己装入寄存器中。(来自清华版教材)具体为什么,我理解如下:dseg segment data db '1'dseg endscseg segment assume cs:...
汇编伪指令 assume 具体作用是什么
要用assume把段跟段寄存器对应起来的原因是原来的DOS找到的空闲内存的地址不是固定的,无法找到一个地址在任何时候都是空闲的。于是DOS需要可以重定位的程序,而当时的定位方式就是设置段寄存器的值使该程序能在可分配(空闲)的内存中可用。那就需要知道某个段被重定位时候需要修改哪个段寄存器的值才能正...
汇编中assume的作用?
编写汇编语言的程序,要用编译软件来编译。assume,就是通知编译软件的,说明段寄存器和定义段的关系。编译软件,比较弱智,你随便瞎写一个对应关系,它都辨别不出来真假。程序正确与否,全靠 MOV...这种针对 CPU 的指令,和 ASSUME 基本无关。就不用琢磨它了。
assume(关于assume的基本详情介绍)
通常,程序员会使用assume指令来指定代码段(CS)、数据段(DS)、堆栈段(SS)等,与相应的段寄存器(CS、DS、SS)之间有正确的关联。例如,通过“assume cs:code”指令,程序员声明CS段寄存器与code段关联,意味着程序的执行代码将存储在名为code的段中。综上所述,assume指令是编程中用于定义段...
汇编语言中assume cs:code,ds:data 是什么意思?
这是段分配语句,是条伪指令,一般放在代码段的第一条位置,段分配语句仅仅是建立段寄存器和段名之间关系,不具有赋值功能。比如创建了几个段,如何知道它是代码段,它是数据段,通过这条语句就可以知道,因为段名是可以任意取的,可以把code取成代码段,也可以是其他名字,通过这条语句就可以把他们的...
...ax,data mov ds,ax两句,不是有assume定义过段了吗
即使是这样,伪指令也是最终操作了,这里应该好好理解一下assume伪指令,该指定是定义段的,比如定义一个数据段,该伪指令的目的就是对段的定义,并没有真正将段装载,如果汇编编译出来的程序相要执行,必须将段装载。也就是说,我们定义段了,但没有将段装载,相当于高级语言中定义了变量的类型,但没...
汇编语言问题
mov ds,dx ——— ;这两句实现对段寄存器ds的赋值(前面assume只是声明)mov ah,0 ———;赋值寄存器ah为0 mov al,y+1 ———;把内存地址为y+1(从上面的定义看来,其实就是字符"4"所在的单元)的值赋给寄存器al sub al,05 ———;从寄存器al中减去5 aas ———;非压缩...
汇编语言里 assume cs:code ,ds:data ,es:extra 是什么意思?
assume: 段寄存器关联说明伪指令。所谓关联,只某一段寄存器使用某一指定的段空间。cs:code ,ds:data ,es:extra: 代码段寄存器cs与code关联;数据段寄存器ds与data关联;附加段寄存器es与extra关联。