代码如下:
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?
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
初学汇编,不对之处,还望见谅,
定义成字节类型只是说每个字符占一个字节,而不是所有的字符就都放到一个字节里了.
建议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