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

我的博客

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

[2009-07-31 17:56] 检测点9.1

(1)程序如下
assume cs:code
data segment
   dw 0             ;(因为bx+1,要等于0,所以第2个字节要为0)
data ends

code segment

start:mov ax,data
      mov ds,ax
      mov bx,0
      jmp word ptr [bx+1]

code ends

end start
若要使程序中的JMP指令执行后,cs:ip指向程序的第一条指令,在data段中应该定义哪些数据?


(2)程序如下
assume cs:code
data segment
  dd 12345678h
data ends

code segment

start:mov ax,data
      mov ds,ax
      mov bx,0
      mov [bx],bx             ;因为地位要存储偏移地址,所以为0
      mov [bx+2],0b83h        ;这里我个人认为写的不标准,本来想写ax,但ax是存放数据的段地址,少了10h
      jmp dword ptr ds:[0]

code ends

end start
补全程序,使jmp指令执行后,cs:ip指向程序的第一条指令。


(3)用DEBUG查看内存,结果如下:
2000:1000 BE 00 06 00 00 00 ....
则此时,CPU执行指令:
mov ax,2000h
mov es,ax
jmp dword ptr es:[1000h]后
cs=0006,ip=00be
评论次数(3)  |  浏览次数(650)  |  类型(汇编作业) |  收藏此文  | 

[  tinyparticle   发表于  2009-07-31 18:22  ]

第(2)中有错误,mov [bx+2],0b83h此条指令中的0b83h是博主debug中的默认段地址,如果换台电脑,默认段地址不是0b83h,跳转将出错。

[  ryan1779   发表于  2009-08-11 22:36  ]

是啊,后来发现写  mov [bx+2],cx   就好了

[  qiangzi   发表于  2010-01-21 19:23  ]

;(因为bx+1,要等于0,所以第2个字节要为0)
这话好像有点错误吧,是不是第2,3个字节为0啊?

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