鱼C论坛

 找回密码
 立即注册
查看: 2849|回复: 3

10.12 照书上写的代码为什么运行不出来,求解

[复制链接]
发表于 2012-2-8 13:55:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. assume cs:code,ds:data,ss:stack

  2. data segment
  3. db 'word',0
  4. db 'unix',0
  5. db 'wind',0
  6. db 'good',0
  7. data ends

  8. stack segment
  9. dw 8 dup(0)
  10. stack ends

  11. code segment

  12. start: mov ax,data
  13. mov ds,ax

  14. mov bx,0
  15. mov sp,16

  16. mov cx,4
  17. s:mov si,bx
  18. call capital
  19. add bx,5
  20. loop s

  21. mov ax,4c00h
  22. int 21h

  23. capital:push cx
  24. push si

  25. change:mov cl,[si]
  26. mov ch,0
  27. jcxz ok
  28. and byte ptr [si],11011111b
  29. inc si
  30. jmp short change

  31. ok: pop si
  32. pop cx
  33. ret

  34. code ends
  35. end start
复制代码

求解,哪里错了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-8 17:32:21 | 显示全部楼层
mov sp,16  这句之前 你定义堆栈段了吗
  mov ax,stack  
  mov ss,ax
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-8 19:24:13 | 显示全部楼层

很明显他定义了。
你的代码没有问题。
你可以“g” 到 int 21h的地址,然后查看内存。
或者把你的堆栈段改大点。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-14 16:11:18 | 显示全部楼层
嗯,我没有把stack的地址传给ss,导致了栈的数据覆盖了data的数据,谢两位大虾了
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-3 17:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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