主题:很不明白
csuwzj
[专家分:0] 发布于 2006-11-27 13:45:00
DA1 DB 4 DUP(5),2
COUNT EQU 10
DA2 DD COUNT DUP(?)
问:(1) 上述数据定义为变量DA1分配多少字节存储空间。
(2) 为变量DA2分配多少字节存储空间。
我算的答案是 5,40
但答案却是22,40 我明白答案所表达的意思 但却不知道为什么是这样的,我感觉就存储空间就是和求SIZE一样的啊 为什么要用4*5+2得到22呢
回复列表 (共8个回复)
沙发
bruce1914 [专家分:250] 发布于 2006-11-27 14:21:00
我也认为答案是5,40
板凳
liangdong007 [专家分:2840] 发布于 2006-11-27 14:57:00
DA1 DB 4 DUP(5),2 //4 DUP(5)将分配4*5=20个,2将分配一个,COUNT 将分配一个,共为22个,不错啊。注意:DB不是DD,你怎么得的5啊!
COUNT EQU 10
DA2 DD COUNT DUP(?)
3 楼
三石小子 [专家分:80] 发布于 2006-11-29 08:46:00
DA1 DB 4 DUP(5),2
对啊,谢谢你的解释
[em2]
4 楼
csuwzj [专家分:0] 发布于 2006-12-02 14:38:00
我也曾有想过这种算法 但是我觉得很奇怪 里面的那个5只不过是个数而已嘛 怎么会表示5字节的存储空间呢
5 楼
WinAsm [专家分:140] 发布于 2006-12-02 15:30:00
5,40
不信可以算一下.
6 楼
csuwzj [专家分:0] 发布于 2006-12-02 17:52:00
我的5是因为
4 dup(5)分配4个空间 然后2分配一个空间 共5个
而且EQU只是一个变量 应该是没有分配空间的吧
这就是EQU和DB定义的区别
一个是变量 而一个是地址
7 楼
wenzhuo [专家分:170] 发布于 2006-12-03 00:02:00
DATA SEGMENT
DA1 DB 4 DUP(5),2
COUNT EQU $-DA1
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS :CODE
START:MOV AX,DATA
MOV DS,AX
MOV BX,COUNT
CODE ENDS
END START
D:\MASM>DEBUG 011.EXE
-U CS:0 L20
089F:0000 B89E08 MOV AX,089E
089F:0003 8ED8 MOV DS,AX
089F:0005 BB0500 MOV BX,0005
我试了一下,的确是5,怎么是22呢?
8 楼
csuwzj [专家分:0] 发布于 2006-12-05 11:56:00
我也觉得 我们的汇编终于考完了 考的还不错 哈哈
我来回复