首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

内存数据存放有关问题

2012-04-07 
内存数据存放问题。代码如下:ORG30HDATE1 DB56H,“ABCD”   这里打不出来英文单引号  DATE2 DW1234H,“EF”  C

内存数据存放问题。
代码如下:

  ORG 30H

  DATE1 DB 56H,“ABCD”   ;这里打不出来英文单引号

  DATE2 DW 1234H,“EF”

  CONT = DATA2-DATA1

  DATE3 = DATA2+2

想问的是: 

  一、DATA1定义的是字节类型,那么“ABCD”怎么可能是一个字节就能放得下的,如果“ABCD”不能放在一个字节里面,那么怎么又把定义成一个字节类型?

  二、上面的数据如果放到内存里面,是不是这样的
       -----
      | 56H  |  偏移量 30H
      | 41H  |      31H
      | 42H  |      32H
      | 43H  |      33H
       | 44H  |      34H  
      | 12H  |      35H
      | 34H  |      36H
      | 45H  |      37H
      | 46H  |      38H
       -----
  那么DATA2-DATA1,也就是 CONT 的值是不是:35H — 30H=6?
    DATA2+2, 也就是 DATA2 的值是不是:35H + 2=37H=45H?

[解决办法]

探讨
代码如下:
ORG 30H
DATE1 DB 56H,“ABCD”   ;这里打不出来英文单引号
  DATE2 DW 1234H,“EF”
  CONT = DATA2-DATA1
DATE3 = DATA2+2
想问的是: 
  一、DATA1定义的是字节类型,那么“ABCD”怎么可能是一个字节就能放得下的,如果“ABCD”不能放在一个字节……

[解决办法]
初学汇编,不对之处,还望见谅,

定义成字节类型只是说每个字符占一个字节,而不是所有的字符就都放到一个字节里了.

建议debug看一下详细会比较好.


[解决办法]
DATE1 DB 56H,“ABCD”   ;这里打不出来英文单引号

  DATE2 DW 1234H,“EF”

  CONT = DATA2-DATA1

DATE3 = DATA2+2
//你这么写语法是有问题的。
DATE1 DB 56H,“ABCD”
应该改成:DATE1 DB 56H,'A','B','C','D'
DATE2 DW 1234H,“EF”
应该改成:
DATE2 DW 1234H,4546H//45是"E",46是'F'这种把相关码值放在低位了,高位为0
当然也可以这样存:DATE2 DW 1234H,45460000H高位存码值,低位为0;

CONT = DATA2-DATA1//DATA2和DATA1分别是两个地址,相减的结果为56H,'A','B','C','D'占用的空间.即:5

热点排行