汇编网首页登录博客注册
十堰职业技术学院学生211037的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  

[2009-05-10 17:04] 检测点10.1-5

10.1
补全程序,实现从内存1000:0000处开始执行命令。
Assume cs:code
Stack segment
  Db 16 dup (0)
Stack ends

Code segment
Start :mov ax,stack
     Mov ss,ax
     Mov sp,16
     Mov ax,1000
     Push ax
     Mov ax,0
     Push ax
     Retf
Code ends
End start
第一个空:Mov ax,1000
第二个空:Mov ax, 0
Retf指令先pop IP 在 pop cs.现将段地址压入栈中,然后将偏移地址压入栈中。


10.2
AX=6
执行call s时会把call指令的下一条指令的偏移地址压入堆栈,下一条指令是inc ax ,它的偏移地址是6,而执行完call指令后会跳到s:pop ax ,即把堆栈里的数据出栈到ax里,此时堆栈里的数据是6,故ax里的数值是6.

10.3
ax=1010h.
首先我们知道执行第一句的时候IP是0003,然后(IP)=(IP)+3,执行call语句,现将cs入栈(CS=1000h),再将IP入栈,执行这句后,IP句改为0008h,然后跳到s标号处执行,pop ax(ax=0008h)  add ax,ax(ax=0010h)   pop bx(bx=1000h)  add ax,bx(ax=1010h)最后ax=1010h.

10.4
AX=0006
执行到call指令时,将1000:5中的数据压入栈中,接着执行mov语句,ss:sp处的数据为压入栈中的数据0005.执行add ax,[bp]这句,ax=ax+0005=0006.

10.5
(1)AX=3
执行到mov ax, 由于call语句call word ptr ds:[0EH]改变了stack中的最后两个字节的单位地址为IP值,此IP值为16(10进制),刚好jmp word ptr IP为下一个指令:inc ax,0执行3次Inc ax语句后,ax为3.
(2)AX=1,BX=0;
在栈中是从高位向地位存储的,所以是从16-》8位依次存储的是offset s、cs、cs、ip,那么sub ax,ss:[0ch],就是用offeset s与call dword ptr ss:[0]相减,结果为1,同理bx是两个cs相减为零
评论次数(2)  |  浏览次数(482)  |  类型(汇编作业) |  收藏此文  | 

[  fangyugirl   发表于  2009-05-11 08:38  ]

我是十堰的,我家在太和医院旁边一点,离你们学校也挺近的噢。

[  mess   发表于  2009-05-11 18:40  ]

10.4 
AX=0006 
-------------
error

第一个空:Mov ax,1000 
---------------
注意是十六进制要加H,要不默认是十进制就错误了。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码