您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏下载 > 伪指令 >

汇编伪指令 assume 具体作用是什么

发布时间:2019-07-10 03:44 来源:未知 编辑:admin

  还有就是 如果汇编程序 没有assume的话 我写的程序 用masm编译不能通过 assume是必须的吗

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  要用assume把段跟段寄存器对应起来的原因是原来的DOS找到的空闲内存的地址不是固定的,无法找到一个地址在任何时候都是空闲的。于是DOS需要可以重定位的程序,而当时的定位方式就是设置段寄存器的值使该程序能在可分配(空闲)的内存中可用。那就需要知道某个段被重定位时候需要修改哪个段寄存器的值才能正确执行。assume提供这种段和重定位代码时需要对应修改的寄存器的关系给编译器,编译器再这个信息写到二进制文件中去。比如DOS下的exe程序记录在文件头中。

  在汇编语言源程序中可以定义多个段,每个段都要与一个段寄存器建立一种对应关系。建立这种对应关系的说明语句格式如下:

  其中:段寄存器是CS、DS、ES、SS、FS和GS,段名是在段定义语句说明时的段名。

  在一条ASSUME语句中可建立多组段寄存器与段之间的关系,每种对应关系要用逗号分隔。例如,

  上面的语句说明了:CS对应于代码段CODE1,DS对应于数据段DATA1。

  在ASSUME语句中,还可以用关键字NOTHING来说明某个段寄存器不与任何段相对应。下面语句说明了段寄存器ES不与某段相对应。

  在通常情况下,代码段的第一条语句就是用ASSUME语句来说明段寄存器与段之间的对应关系。在代码段的其它位置,还可以用另一个ASSUME语句来改变前面ASSUME语句所说明的对应关系,这样,代码段中的指令就用最近的ASSUME语句所建立的对应关系来确定指令中的有关信息。

  我认为这个说明语句并非必须使用,下面这个小程序在MASM下编译通过,并没使用ASSUME语句,什么也没做,直接结束程序,但能正确执行。

  展开全部伪指令在编译的时候是不会被编译成机器码的,所以他就是帮助你告诉编译器你所用的段和寄存器的联系 程序本来就要分段写的 这样便于编译器联系起你的段与寄存器的关系

http://tennisinspokane.com/weizhiling/358.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有