汇编网首页登录博客注册
tolearn的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2010-10-17 11:36] 第10章 检测点

检测点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,?
        push ax
        mov ax,?
        push ax
        retf
code ends
end start
分析:1000H、0

检测点10.2
下面的程序执行后,ax中的数值为多少?
内存地址        机器码                汇编指令
1000:0        b8 00 00        mov ax,0
1000:3        e8 01 00        call s
1000:6         40                inc ax
1000:7        58                     s:pop ax
分析:执行call s指令后,ss:sp 06 00。
      从而,(ax)=6。

检测点10.3
ax中的数值为多少?
分析:执行call far ptr s指令后,ss:sp 08 00 00 10。
      从而,(ax)=8+8+1000H=1010H

检测点10.4
ax中的数值为多少?
分析:执行call ax指令后,ss:sp 05 00。
      从而,(ax)=6+5=bH

检测点10.5
(1)下面的程序执行后,ax中的数值为多少?
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov ax,stack         ;0
        mov ss,ax        ;3
        mov sp,16        ;5
        mov ds,ax        ;8
        mov ax,0        ;a
        call word ptr ds:[0eH]        ;dh
        inc ax                ;11h
        inc ax                ;12h
        inc ax                ;13h
code ends
end start
分析:        
call word ptr ds:[0eH]指令执行前,(ip)=a ,
执行此指令后,ds:08 0f-- 00 00 00 00 11 00 (cs)
从而cs没变,(ip)=11H。
因此,ax=3。
(2)下面的程序执行后,ax和bx中的数值为多少?
经过分析可得:(ax)=0,(bx)=0。
--------------------------------------
修改下:(ax)=1,(bx)=0。
--------------------------------------
评论次数(2)  |  浏览次数(1022)  |  类型(汇编作业) |  收藏此文  | 

[  huang425618   发表于  2010-10-18 22:42  ]

同学,检测10.5第二题你错了哦,ax的值是1哦,在
call dword ptr ss:[0]下面紧接的是 nop 执行的时候
psuh cs push ip 000c-000d 是 0019  这时候ip是 nop 的地址,偏移地址是0019哦 不是1a 所以ax=1

[  tolearn   发表于  2010-10-19 07:11  ]

嗯,

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