汇编程序问答或给提示

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:43:55
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

问题:1,CPU执行程序,程序返回前,data段中的数据是多少?
2,cpu执行成学,程序返回前,cs=______,ss=_______,ds=________.
3,设程序加载后,code段的段地址为X,则DATA段的段地址为_______,stack段的段地址为___________.
4,对于如下定义的段:
name segment
.....
name ends
如果段中的数据占N个字节,则程序加载后,该段实际占用的 空间为_____.

各位汇编高手,帮帮忙,本题不难,只要有清晰的硬件编程功底!
题干:将下列成学编译连接,用DEBUG加载,跟踪,然后回答问题:

1、问的是内存是怎么分配的?
debug XXX.exe装载后,输入u回车反汇编,找到
MOV AX,XXXX
MOV DS,AX
其中的XXXX就是数据段地址,不过在不同机子上不一样啊
然后 输入 d XXXX:0 回车,查看数据
数据一共占4个字节 23 01 56 04

2、先不断按t回车执行到MOV DS,AX结束(设置好所有段地址后),按r 回车可以看当前寄存器状态,CS=1816,SS=1815,DS=1814

3、因为程序从上到下的段分别为DATA,STACK,CODE,每个段之间偏移100h物理地址,段地址偏移10h,所以DATA段地址为X-20h,STACK段地址为X-10h

4、每个段实际占用100h字节