yuinitiatec++ 发表于 2014-3-1 20:58:11

为何存入的数据会发生错误???

assume cs:code
data segment
db 16 dup (1);重复定义16个1为字节型数据
data ends

code segment
start:
      mov ax,data
   mov ds,ax
   mov cx,16
   mov bx,16
   mov si,0
L:mov al,ds:
   mov ds:,al
   add dl,ds:
   inc si
   loop L
   
   mov ax,4c00h
   int 21h
code ends
end start
;;将定义的十六个字节数据复制到下一行
;;调试成功!!!!!!不过有差错出现了一些乱数据
;;dup的使用!!!
;;8.9章节,这个程序有点小小的问题!!!这是怎么回事,那里出现问题呢?

枫界易城 发表于 2014-3-1 21:24:41


assume cs:code
data segment
db 16 dup (1);重复定义16个1为字节型数据
db 16 dup (0)
data ends

code segment
start:
      mov ax,data
   mov ds,ax
   mov cx,16
   mov bx,16
   mov si,0
L:mov al,ds:
   mov ds:,al
   add dl,ds:
   inc si
   loop L
   
   mov ax,4c00h
   int 21h
code ends
end start

枫界易城 发表于 2014-3-1 22:07:06

楼主想知道为什么会这样吗?我加了db 16 (0)就能正确运行了,是因为代码段是紧跟在数据段的后面。
楼主可以调试一下。看看,所以当你在拷贝数据的时候就会覆盖代码段的内容。楼主可以试试!

yuinitiatec++ 发表于 2014-3-8 11:50:11

枫界易城 发表于 2014-3-1 22:07 static/image/common/back.gif
楼主想知道为什么会这样吗?我加了db 16 (0)就能正确运行了,是因为代码段是紧跟在数据段的后面。
楼主可 ...

它所覆盖的数据是从偏移地址16开始的么?

枫界易城 发表于 2014-3-8 17:55:34

恩恩,是这样的!
页: [1]
查看完整版本: 为何存入的数据会发生错误???