汇编 DUP嵌套的问题

hy5239 2010-03-01 10:38:23
初学汇编,在编译器上写TABLE DB 5(3)没有问题,可是如果写 TABLE DB 5 DUP(2,2 DUP(9,8))预想的结果是02,09,08,09,08循环5次,而实际是02,02,08循环5次。怎么会这样呢?请高手指教。
...全文
1507 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2010-03-01
  • 打赏
  • 举报
回复
奇怪!开始时,是出现过楼主说的 02, 02, 08 循环 5 次的情况的;后来给那语句加了些空格,就是预想的 02, 09, 08, 09, 08 循环了;可再返回原来的样子时,还是预想的情况。
应该是没有记错,定义语句也是直接从这里复制出去的。只是 dos 窗口,不能象 xp 的命令行模式那样记忆很多行,无法回去翻看了。
我的 ml.exe 是 6.0:
Microsoft (R) Macro Assembler Version 6.00
Copyright (C) Microsoft Corp 1981-1991. All rights reserved.

M:\>debug heh2.exe
-u
0B5D:0000 1E PUSH DS
0B5D:0001 33C0 XOR AX,AX
0B5D:0003 50 PUSH AX
0B5D:0004 B8540B MOV AX,0B54
....
-d b54:0 l 20
0B54:0000 02 09 08 09 08 02 09 08-09 08 02 09 08 09 08 02
0B54:0010 09 08 09 08 02 09 08 09-08
nanlingcg 2010-03-01
  • 打赏
  • 举报
回复
DATAS SEGMENT
TABLE DB 5 DUP(2,2 DUP(9,8))
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,BX
MOV AH,4CH
INT 21H
CODES ENDS
END START

-T

AX=0B73 BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B63 ES=0B63 SS=0B73 CS=0B75 IP=0003 NV UP EI PL NZ NA PO NC
0B75:0003 8ED8 MOV DS,AX
-T

AX=0B73 BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B73 ES=0B63 SS=0B73 CS=0B75 IP=0005 NV UP EI PL NZ NA PO NC
0B75:0005 8BC3 MOV AX,BX
-T

AX=0000 BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B73 ES=0B63 SS=0B73 CS=0B75 IP=0007 NV UP EI PL NZ NA PO NC
0B75:0007 B44C MOV AH,4C
-D DS:0 50
0B73:0000 02 09 08 09 08 02 09 08-09 08 02 09 08 09 08 02 ................
0B73:0010 09 08 09 08 02 09 08 09-08 00 00 00 00 00 00 00 ................
0B73:0020 B8 73 0B 8E D8 8B C3 B4-4C CD 21 00 58 EB 03 E8 .s......L.!.X...
0B73:0030 1D 01 58 C3 F9 C3 55 51-26 8A 4F 08 32 ED 0B C9 ..X...UQ&.O.2...
0B73:0040 74 0D 8D 6F 09 E8 19 04-73 08 E8 0E 00 E2 F6 F9 t..o....s.......
0B73:0050 EB .
-

正常啊?

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧