第六章实验(2)
④对于如下定义的段:
name segment
…
name ends
如果段中的数据占N个字节,则程序加载后,这段实际占有的空间为(N/16+1)*16. (N/16为取整数部分)
如果N为0 是不是就不适用这个答案了 答案网上下的。。
我猜是 (N+15)/16 * 16
N为0之后那就相当于没有这个段了,那直接就是0了。
原题贴一下
(2) 将下面的程序编译连接,用Debug加载、跟踪,然后回答问题
assume cs:code,ds:data,ss:stack
data segment
dw 0123H,0456H
data ends
stack segment
dw 0,0
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
① CPU执行程序,程序返回前,data段中的数据为多少? 解:不变
② CPU执行程序,程序返回前,cs=155ch、ss=155bh、ds=155ah。 (此题结果因环境而异,但相对差值不变)
③ 设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1。
④对于如下定义的段:
name segment
…
name ends
如果段中的数据占N个字节,则程序加载后,这段实际占有的空间为(N/16+1)*16. (N/16为取整数部分)