实验五

任务一:

(1)对源程序 ex5_1.asm 进行汇编、连接、运行;

(2)利用debug来对源程序进行调试 用u命令对其进行反汇编 根据反汇编得到的结果,用g命令执行到程序返回前,即执行到001D之前; 

可知程序返回前:

cs=076C;ss=076B; es=076A;

ax的中已经传入data值 现查看

3)设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1;


任务二:

1)对程序进行编译连接;

2)运用debug工具查看段中数据; 

CS=076C;SS=076B;DS=076A;

(3)设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1;

(4)该段实际占有的空间为:(N/15+16)*16;


实验三:

1)对程序进行编译连接;

2)运用debug工具查看段中数据; 

3)CPU执行程序,程序返回前,data段中的数据不变,CPU执行程序,程序返回前,cs=076A,ss=076E,ds=076D。 

4)设程序加载后,code段的段地址为X,则data段的段地址为X+2,stack段的段地址为X+4;


实验四:经过实际操作后发现,仅ex5-3.exe能够正常运行;

“end start” 指明程序入口,被转化为一个入口地址,储存在可执行文件的描述信息中,从而cpu能从我们希望的地址处开始执行。

缺少导致找不到程序入口。


 

实验五:

1)源代码;

 1 assume cs:code
 2 a segment
 3   db 1,2,3,4,5,6,7,8
 4 a ends
 5 
 6 b segment
 7   db 1,2,3,4,5,6,7,8
 8 b ends
 9 
10 c segment  
11   db 8 dup(0)
12 c ends       
13 code segment
14 start:
15   mov bx,0
16   mov dx,0
17   mov cx,8
18 s:mov dx,0
19   mov ax,a
20   mov ds,ax
21   add dl,[bx]
22   mov ax,b
23   mov ds,ax
24   add dl,[bx]
25   mov ax,c
26   mov ds,ax
27   mov [bx],dl
28   inc bx
29   loop s
30   mov ax,4c00h
31   int 21h
32 
33 code ends
34 end start

2)使用t命令单步调试至mov [bx],dl命令 ,此时上一条命令mov ds,ax已经执行完毕,此时ds中保存的就是c段的段地址 

查看此时未加载完毕前c段中内容

运行到程序返回前,此时的DS中保留的就是c段的段地址,查看c段中的数据;

通过该结果可知完成相加;


 

任务六:

 1 assume cs:code
 2 a segment
 3   dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
 4 a ends
 5 
 6 b segment
 7   dw 8 dup(0)
 8 b ends
 9 
10 code segment
11 start: 
12   mov ax,a
13   mov ds,ax
14   mov ax,b
15   mov ss,ax
16   mov sp,0fh
17   mov bx,0
18   mov cx,8
19 s:push [bx]
20   inc bx
21   inc bx 
22   loop s
23   mov ax,4c00h
24   int 21h
25   
26 code ends
27 end start

 将栈顶完成初始化;

执行push操作前,b段中位置; 

程序返回前,查看b段中数据(ss保存的数据); 

  数据在b段得到了逆置; 

转载于:https://www.cnblogs.com/joker99/p/10025709.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值