关于书本6.2章例题数据逆序存放SP的设置问题
本帖最后由 wuyaozi 于 2011-11-5 10:58 编辑我在学习鱼C6.2章中 "将程序中定义的数据逆序存放"时遇到一个问题
就是书本上面8个数据存放时程序设置栈顶是这样的 MOV SP,30H
而小甲鱼在视频里面设置是这样的MOV SP,32
我不知道哪里是对的 还有加H和不加有区别吗、为什么这里的32不是转化成16进制的数据呢
小甲鱼程序如下:
assume cs:abc
abc segment
dw 0011h,2233h,4455h,6677h,8899h,9900h,6622h,8866h
dw 0,0,0,0,0,0,0,0
start: mov ax,cs
mov ss,ax
mov sp,32问题就在这里的32 还是32H 还是课本上的30H 还是32的是16进制数20H
mov bx,0
mov cx,8
s:push cs:
add bx,2
loop s
mov bx,0
mov cx,8
s1:pop cs:
add bx,2
loop s1
mov ax,4c00h
int 21h
abc ends
end start 是32,也就是20H。。。 掌心的呵护 发表于 2011-11-5 11:05 static/image/common/back.gif
是32,也就是20H。。。
关键是照这上面的程序运行,结果不对 程序没问题吧。。
小甲鱼的代码也没错
只是栈的储存位置不一样。。
sp 30H
sp 32 即 20H只不过错了10H 正好16个字节而已。。
从结果上来说是一样的。
过程上只是栈顶地址不一样而已 本帖最后由 100531319 于 2011-11-5 12:25 编辑
你怎么没有 abc ends? 0011h到8866H是0~15,15加下面的16字节,在指针加1,也就是32=20H,
你得书跟我又点差别,我是0123,0456, 栈空间是16个0{:5_107:}书好像有很多版本一样{:5_94:}
还有我刚学, 也不是很懂, 希望我有什么错,请指正
本帖最后由 ever.g 于 2011-11-5 12:40 编辑
:L 他都直接弄代码段里了
abc ends 在最后
所以他开始是mov ax,cs 这样可以的
这我直接拷贝的你代码,结果确实逆序存放了~
还有程序中 32 就是10进制
后面带H 32H 就是16进制,不要弄混
另外10101b带b就是2进制
不区分大小写
wuyaozi 发表于 2011-11-5 11:08 static/image/common/back.gif
关键是照这上面的程序运行,结果不对
可以啊
结果是正确的。。。
是32或者20H
dw是定义字型数据,16个字型数据=32个字节型数据
也就是CS:0~19H 呵呵在赋值时如果数字后面你不写H,编译器认为你输入的是十进制数字,比如:mov ax,100就和mov ax,64H一模一样
页:
[1]