鱼C论坛

 找回密码
 立即注册
查看: 3153|回复: 4

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

[复制链接]
发表于 2014-3-1 20:58:11 | 显示全部楼层 |阅读模式
1鱼币
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:[si]
   mov ds:[bx+si],al
   add dl,ds:[bx+si]
   inc si
   loop L
   
   mov ax,4c00h
   int 21h
code ends
end start
;;将定义的十六个字节数据复制到下一行
;;调试成功!!!!!!不过有差错出现了一些乱数据
;;dup的使用!!!
;;8.9章节,这个程序有点小小的问题!!!这是怎么回事,那里出现问题呢?

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-1 21:24:41 | 显示全部楼层

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

  6. code segment
  7. start:
  8.       mov ax,data
  9.    mov ds,ax
  10.    mov cx,16
  11.    mov bx,16
  12.    mov si,0
  13. L:mov al,ds:[si]
  14.    mov ds:[bx+si],al
  15.    add dl,ds:[bx+si]
  16.    inc si
  17.    loop L
  18.    
  19.    mov ax,4c00h
  20.    int 21h
  21. code ends
  22. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-1 22:07:06 | 显示全部楼层
楼主想知道为什么会这样吗?我加了db 16 (0)就能正确运行了,是因为代码段是紧跟在数据段的后面。
楼主可以调试一下。看看,所以当你在拷贝数据的时候就会覆盖代码段的内容。楼主可以试试!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-8 11:50:11 | 显示全部楼层

它所覆盖的数据是从偏移地址16开始的么?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-8 17:55:34 | 显示全部楼层
恩恩,是这样的!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 09:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表