您的位置:首页 > 其它

第六章实验任务(2)

2009-08-23 13:28 309 查看
题目:将下面的程序编译连接,用debug加载、跟踪,然后回答问题。

源代码:

assume cs:codesg,ds:datasg,ss:stacksg

datasg segment

    dw 0123h,0456h

datasg ends

stacksg segment

    dw 0,0

stacksg ends

codesg segment

start: mov ax,stacksg
       mov ss,ax
       mov sp,16

       mov ax,datasg
       mov ds,ax

       push ds:[0]
       push ds:[2]
       pop ds:[2]
       pop ds:[0]

       mov ax,4c00h
       int 21h

codesg ends
end start


调试过程:

-r

AX=0000  BX=0000  CX=0042  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000  
DS=143C  ES=143C  SS=144C  CS=144E  IP=0000   NV UP EI PL NZ NA PO NC 
144E:0000 B84D14        MOV	AX,144D                            
-u

144E:0000 B84D14        MOV	AX,144D                            
144E:0003 8ED0          MOV	SS,AX                              
144E:0005 BC1000        MOV	SP,0010                            
144E:0008 B84C14        MOV	AX,144C                            
144E:000B 8ED8          MOV	DS,AX                              
144E:000D FF360000      PUSH	[0000]                             
144E:0011 FF360200      PUSH	[0002]                             
144E:0015 8F060200      POP	[0002]                             
144E:0019 8F060000      POP	[0000]                             
144E:001D B8004C        MOV	AX,4C00                            
-t

AX=144D  BX=0000  CX=0042  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000  
DS=143C  ES=143C  SS=144C  CS=144E  IP=0003   NV UP EI PL NZ NA PO NC 
144E:0003 8ED0          MOV	SS,AX                              
-t

AX=144D  BX=0000  CX=0042  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000  
DS=143C  ES=143C  SS=144D  CS=144E  IP=0008   NV UP EI PL NZ NA PO NC 
144E:0008 B84C14        MOV	AX,144C                            
-t

AX=144C  BX=0000  CX=0042  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000  
DS=143C  ES=143C  SS=144D  CS=144E  IP=000B   NV UP EI PL NZ NA PO NC 
144E:000B 8ED8          MOV	DS,AX                              
-t

AX=144C  BX=0000  CX=0042  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000  
DS=144C  ES=143C  SS=144D  CS=144E  IP=000D   NV UP EI PL NZ NA PO NC 
144E:000D FF360000      PUSH	[0000]                             DS:0000=0123
-t

AX=144C  BX=0000  CX=0042  DX=0000  SP=000E  BP=0000  SI=0000  DI=0000  
DS=144C  ES=143C  SS=144D  CS=144E  IP=0011   NV UP EI PL NZ NA PO NC 
144E:0011 FF360200      PUSH	[0002]                             DS:0002=0456
-t

AX=144C  BX=0000  CX=0042  DX=0000  SP=000C  BP=0000  SI=0000  DI=0000  
DS=144C  ES=143C  SS=144D  CS=144E  IP=0015   NV UP EI PL NZ NA PO NC 
144E:0015 8F060200      POP	[0002]                             DS:0002=0456
-t

AX=144C  BX=0000  CX=0042  DX=0000  SP=000E  BP=0000  SI=0000  DI=0000  
DS=144C  ES=143C  SS=144D  CS=144E  IP=0019   NV UP EI PL NZ NA PO NC 
144E:0019 8F060000      POP	[0000]                             DS:0000=0123
-t

AX=144C  BX=0000  CX=0042  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000  
DS=144C  ES=143C  SS=144D  CS=144E  IP=001D   NV UP EI PL NZ NA PO NC 
144E:001D B8004C        MOV	AX,4C00                            
-d ds:0

144C:0000  23 01 56 04 00 00 00 00-00 00 00 00 00 00 00 00   #.V.............
144C:0010  00 00 4C 14 4C 14 4C 14-00 00 1D 00 4E 14 30 0E   ..L.L.L.....N.0.
144C:0020  B8 4D 14 8E D0 BC 10 00-B8 4C 14 8E D8 FF 36 00   .M.......L....6.
144C:0030  00 FF 36 02 00 8F 06 02-00 8F 06 00 00 B8 00 4C   ..6............L
144C:0040  CD 21 CC 8D 86 74 FF 50-E8 E7 6D 83 C4 06 C4 5E   .!...t.P..m....^
144C:0050  F8 26 8B 47 06 26 8B 57-08 89 46 FC 89 56 FE C4   .&.G.&.W..F..V..
144C:0060  5E FC 26 80 7F 04 00 75-03 E9 84 00 26 8B 07 26   ^.&....u....&..&
144C:0070  8B 57 02 89 46 F4 89 56-F6 8A 46 08 26 38 47 04   .W..F..V..F.&8G.
-r

AX=144C  BX=0000  CX=0042  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000  
DS=144C  ES=143C  SS=144D  CS=144E  IP=001D   NV UP EI PL NZ NA PO NC 
144E:001D B8004C        MOV	AX,4C00                            
-t

AX=4C00  BX=0000  CX=0042  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000  
DS=144C  ES=143C  SS=144D  CS=144E  IP=0020   NV UP EI PL NZ NA PO NC 
144E:0020 CD21          INT	21    	                                   
-q


问题1:CPU执行程序,程序返回前,data断的数据为多少?

解答:data段的数据是:144C:0000 23 01 56 04 00 00 00 00-00 00 00 00 00 00 00 00,结果保持变。

问题2:CPU执行程序,程序返回前,cs=144eh、ss=144dh、ds=14ch。

问题3:设程序加载后,codesg段的段地址为X,则datasg段的段地址为X-2h,stacksg段的段地址为X-1h。道理同上一篇所述。

问题4:对于如下定义的段:

name segment

.....

name ends

如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为?

解答:通过以上第六章的实验1和实验2可以知道,因为段的最小空是16KB,即一个定义的段最少占据16个字节。如果N<16KB时,其长度为16KB。设N/16=s 如果s是个非整数则s=s+1,最终 s*16 就是这个段实际占用的空间,单位为KB。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: