【求解答】关于汇编语言的大疑问
汇编语言第二版(王爽)这本书的6.2 在代码段中使用栈这一节内容的第128页的程序6.3assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 用dw定义16个字型数据,在程序加载后,将取得16个字的内存空间,存放这16个数据。在后面的程序中将这段空间当作栈来使用
start:mov ax,cs
mov ss,ax
mov sp,30h 将设置栈顶ss:sp指向cs:30 (在这里,我的疑问出来了,我在看小甲鱼汇编语言的这一课,小甲鱼定义的dw 0,0,0,0,0,0,0,0 是八个字型数据作为栈来使用的,而不是按照书本的讲,可能书本的问题。cs指向的偏移地址是32,就是栈顶就是ss:32h. 而我书本里的就定义16个字型数据,偏移地址居然指向30,栈顶就是ss:30h 怎么回事呀?)
mov bx,0
mov cx,8
s:push cs:
add bx,2
loop s
mov bx,0
mov cx,8
s0:pop cs:
add bx,2
loop s0
mov ax,4c00h
int 21h
codesgends
endstart
还有一个问题就是检测点6.1
题目:下面的程序实现依次用内存0:0~0:15单元中的内存改写程序中的数据,数据的传送用栈来进行,栈空间设置在程序内存。完成程序:
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0,0,0 10个字单元用作栈空间
start:movax,____(答案是:cs)
mov ss,ax
mov sp,____(答案是:1ah) 疑问就是在这里,答案应该是35h才对呀 怎么是1ah?怎么回事?
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s:push
________________(答案是:pop cs:)
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
endstart
第一个问题没看懂,直接第二个问题
其实是因为版本的不同, 估计你找的答案是网上找的,
而那个答案的书的版本与你不同,
NO picture say a JB
二话不说,直接上图
看到没, 这个版本程序第四行只有5个 0,
5+8 = 13,就是26个字节,
那么,见证奇迹的时刻到了 26 尽然等于 1ah,就是这么巧,解释完毕!
这两个问题都是王爽大大的书几个版本存在一些差异导致的。
第一个问题如你所述的话确实有点奇怪,不知道是不是我理解错意思了,麻烦提供下图片,因为年代已久。。。。 小甲鱼 发表于 2013-4-9 03:34 static/image/common/back.gif
第一个问题如你所述的话确实有点奇怪,不知道是不是我理解错意思了,麻烦提供下图片,因为年代已久。。。。
甲鱼老师,你看看我截的你教程里说的那个程序图
友来友网 发表于 2013-4-8 21:26 static/image/common/back.gif
第一个问题没看懂,直接第二个问题
其实是因为版本的不同, 估计你找的答案是网上找的,
这个我明白了,是书本的问题 小甲鱼 发表于 2013-4-9 03:29 static/image/common/back.gif
这两个问题都是王爽大大的书几个版本存在一些差异导致的。
甲鱼老师,也不对呀,你教程里定义的是dw字型呀,sp应该是1ah 而你教程里的sp是32h 阳光影子 发表于 2013-4-9 12:53 static/image/common/back.gif
甲鱼老师,也不对呀,你教程里定义的是dw字型呀,sp应该是1ah 而你教程里的sp是32h
dw总共定义了16个字型数据嘛,16*2==32d,不是32h哦 小甲鱼 发表于 2013-4-9 13:20 static/image/common/back.gif
dw总共定义了16个字型数据嘛,16*2==32d,不是32h哦
你不是说16个字节等于10H嘛?在加上8个字型空间,10+F等于15H然后又是栈,存放的时候应该存放到20H才对 不是1ah,也不是32h 小甲鱼 发表于 2013-4-9 13:20 static/image/common/back.gif
dw总共定义了16个字型数据嘛,16*2==32d,不是32h哦
我明白了 原来32是十进制 阳光影子 发表于 2013-4-9 19:37 static/image/common/back.gif
我明白了 原来32是十进制
问题解决记得标记回已经解决的分类哦~ 小甲鱼 发表于 2013-4-9 21:23 static/image/common/back.gif
问题解决记得标记回已经解决的分类哦~
OK,明白的. 有点不懂,为什么第二版书上定义为16个字形数据[有16个0],加上0123~0987H这8个字型,16+8=24,
24*2=48,怎么书上写的是30H呀,很郁闷 30H不就是48嘛
页:
[1]