实验5.1
实验5.1第三问答案是不是不唯一呢,我做出来data段的段地址为X-2,stack的段的段地址也为X-2,而且data的数据在1449:0000,stack的地址是1449:0010,跟小甲鱼老师讲的有点不同啊下面是实验的截图:
我的理解是:ds存放psp要占256字节,所以程序指定往ds存放数据的时候自动后移256个字节开始存放,所以刚好移到ss处,ss栈空间无奈只好继续往后移 。可是看小甲鱼的汇编视频似乎不是这样,数据直接从ds开始存放,貌似直接覆盖了psp的内容,这到底是怎么回事类?请各位大神赐教~~~谢谢!
顺便问一句,有没有什么讨论群加啊,每次有什么问题都要发论坛,有点麻烦,希望有更多机会与大家交流,谢谢
debug里面显示的和他的问题其实是两回事。
他问题中的指的是程序中的标号,并不是段寄存器。
程序加载后,ds指向内存开始的地方,所以data segment的位置是ds+10H就是ss的值
本来如果没有定义两个字形数据的话,cs也应该等于ds+10H
但现在有了两个dw,所以cs等于ds+10H+2H,这就是debug里面的段的显示值
对于问题3,它问的是标号的地址,data segment的地址就是cs-2啦,因为有两个dw么
stack segment当然就是cs-1了 自己顶一下,希望找到大神讲解{:5_105:} 大神们=。={:5_107:} assume cs:code,ss:stack,ds:data
data segment
dw 1234H,1234H,1234H,1234H,1234H,1234H,1234H,1234H
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start: mov ax,stack;
mov ss,ax
mov sp,16
mov ax,data;
mov ds,ax
push ds:
push ds:
pop ds:
pop ds:
mov ax,4c00H;
int 21h;
code ends
end start
这是代码 第一PSP 肯定存在的~ 第2 你试验没有错误~1449:0010 1450:0000 还是 date段地址加1等于 stack段地址 书写 错了 1449:0010=144A:0000进制写错了~~结果还一样
页:
[1]