回 帖 发 新 帖 刷新版面

主题:汇编调试求教

我用汇编变了个小程序 就是将4000H到40FF单元的内容清0
程序如下DSEG    SEGMENT 'DATA'
         ORG 4000H
         DATA1 DB  256 DUP(1)
DSEG    ENDS

CSEG    SEGMENT 'CODE'
         ASSUME DS:DSEG,CS:CSEG
START:   MOV AX,DSEG
         MOV DS,AX
         LEA di,DATA1
         MOV CX,256
PROC:    MOV [DI],0ffh
         INC DI
         LOOP PROC
         MOV AH,4CH
         INT 21H
CSEG     ENDS
         END START
编译过程没有错误 可是当我用DEBUG去看4000H到40FF单元的时候 (用D DS:4000)却看到从那以后的单元都是0 我觉得是不是有问题 请教

回复列表 (共3个回复)

沙发

谁说你的代码通过编译,有几处错误的地方:

不要用proc做标号,因为这是保留字,要改掉,loop那里的proc记得改。

还有mov [di], 0ffh没有指出操作数的大小,应改为mov byte ptr[di], 0ffh

板凳

第二个好像可以这样写吧 MOV DS:[DI],OFFH
重点是怎么能看到那个内存空间的值

3 楼

在串指令中,di才默认es,通常默认ds,不需要加ds超越前缀,你只加超越前缀没有用的,仍需要指出数据大小。

我来回复

您尚未登录,请登录后再回复。点此登录或注册