鱼C论坛

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

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

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

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

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

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

data segment
db 'word',0
db 'unix',0
db 'wind',0
db 'good',0
data ends

stack segment
dw 8 dup(0)
stack ends

code segment

start: mov ax,data
mov ds,ax

mov bx,0
mov sp,16

mov cx,4
s:mov si,bx
call capital
add bx,5
loop s

mov ax,4c00h
int 21h

capital:push cx
push si

change:mov cl,[si]
mov ch,0
jcxz ok
and byte ptr [si],11011111b
inc si
jmp short change

ok: pop si
pop cx
ret

code ends
end start
求解,哪里错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-8 17:32:21 | 显示全部楼层
mov sp,16  这句之前 你定义堆栈段了吗
  mov ax,stack  
  mov ss,ax
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-8 19:24:13 | 显示全部楼层

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

本版积分规则

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

GMT+8, 2025-1-11 08:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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