yuinitiatec++ 发表于 2014-3-9 17:24:25

一段代码引发的惨案!!!!^_^

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

code segment
start:
      mov ax,data
   mov ds,ax
   mov cx,16
   mov bx,0
L:mov al,ds:
   mov ds:,al
      inc bx
   loop L
   
   mov ax,4c00h
   int 21h
code ends
end start
;;将定义的十六个字节数据复制到下一行
;;为什么会调错误 调试中出现了“or ,cl”看不懂
;;最后显示效果有几个错误的数据!!!
;;8.9章节

隐袭战龙 发表于 2014-3-10 17:29:35

因为你在复制的时候盖住了下面的代码段,MASM是按你写代码的顺序控制段的,data在code的上面,所以下面就是代码段,而你的data段只有16byte,当然会覆盖下面code段的内容

yuinitiatec++ 发表于 2014-3-15 11:32:38

隐袭战龙 发表于 2014-3-10 17:29 static/image/common/back.gif
因为你在复制的时候盖住了下面的代码段,MASM是按你写代码的顺序控制段的,data在code的上面,所以下面就是 ...

它出现的“or ,cl”那是什么意思呢!就是这个指令的不解,它为啥会出现 or 指令,它出现的含义是啥?

隐袭战龙 发表于 2014-3-17 17:10:22

yuinitiatec++ 发表于 2014-3-15 11:32 static/image/common/back.gif
它出现的“or ,cl”那是什么意思呢!就是这个指令的不解,它为啥会出现 or 指令,它出现的含义是啥?

这个指令其实是你存进去的数据覆盖了代码段,从而导致的无意义指令,你把数据段扩充16byte就可以了
页: [1]
查看完整版本: 一段代码引发的惨案!!!!^_^