汇编网首页登录博客注册
kakaxi3dai的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2008-03-22 16:13] 实验5 .6

assume cs:code
  a segment
      db 1,2,3,4,5,6,7,8
  a ends
  b segment
       db 1,2,3,4,5,6,7,8
  b ends
   c segment
        db 0,0,0,0,0,0,0,0
   c ends
   code segment
 start:
      mov ax,a
      mov ds,ax
      mov ax,c
      mov es,ax
      mov ax,b
      mov ss,ax  /*这里把SS 当成一个数据段来处理,不涉及到sp。不用初始SP的值.如果初始SP值,SS段的数据将被修改*/
      mov bx,0
      mov ax,0
      mov cx,8
  s:  
      mov al,[bx]
      add al,ss:[bx]
      mov es:[bx],al
      inc bx
      loop s
    mov ax,4c00h
    int 21h
  code ends
 end start
评论次数(5)  |  浏览次数(316)  |  类型(汇编作业) |  收藏此文  | 

[  wdm   发表于  2008-03-23 19:38  ]

博主注意的很到位!
如果设置栈段为b数据段,在T跟踪的时候时会出现数据的差错。但是,假如用g命令直接运行就没有问题了。

[  游客   发表于  2008-03-23 22:36  ]

谢谢你的夸奖.
可是,我用了你的方法,设置了SP的值.用 G 指令先运行到LOOP 指令,再用-P指令运行.执行完后用 -D查看 SS(b段) 中的数据发现被改写了.由此我产生疑问:
1>是不是在DEBUG 中 -G 也是中断指令啊,会用到堆栈段.
如果-G 不算中断指令,那么SS段的数据被改写了,像是运行了-T指令后的效果.为什么?
2>若程序中只设置SS段地址而不初始SP的值,SS段能做为一个数据段来使用,即:DEBUG中-T指令运行的数据不保存在堆栈SS段中.为什么?
3>若程序中只设置SS段地址而不初始SP的值,那么DEBUG 中T 指令运行后,保存的数据在哪个存储空间?是堆栈SS吗?

[  mess   发表于  2008-03-26 10:03  ]

楼上的应该就是博主了,问的三个问题感觉很绕口啊,不过越是绕口的解决后越是对知识清晰啊。这个问题和第四章第一个程序有些类似,早早的就涉及到了“中断”的问题,可以不深入了解,但是简单了解也是很有必要的。
这三个问题的不错,我就帮博主发到论坛中去吧,这样讨论起来才热闹啊~

[  mess   发表于  2008-03-26 10:10  ]

帖子链接:-)
http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=free&kind=1220&qkSg=2&qID=13391

[  kakaxi3dai   发表于  2008-03-26 20:04  ]

恩,不错.

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码