鱼C论坛

 找回密码
 立即注册
查看: 2436|回复: 1

[汇编作业] 检测点9.1

[复制链接]
发表于 2018-6-30 15:53:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 奥普瓯江 于 2018-6-30 15:53 编辑

(1)程序如下
  1. assume cs:code

  2. data segment
  3.       ?
  4. data ends

  5. code segment
  6. start:  mov ax, data
  7.          mov ds, ax
  8.          mov bx, 0
  9.          jmp word ptr [bx + 1]
  10. code ends
  11. end start
复制代码

若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义那些数据

答:应该在data段中定义dw 0,dw每次在内存中申请2个字节的空间,所以jmp word ptr 一次取的是一个字2个字节是可以满足的
(2)程序如下
  1. assume cs:code ds:data

  2. data segment
  3.    dd 12345678h
  4. data ends

  5. code segment
  6. start: mov ax, data
  7.         mov ds, ax
  8.         mov bx, 0
  9.         mov [bx],
  10.         mov [bx + 2],
  11.         jmp dword ptr ds:[0]
  12. code ends
  13. end start
复制代码

补全程序,使jmp指令执行后,CS:IP指向程序的第一条指令

答:mov [bx], 0
      mov [bx + 2], cs
      内存中一共储存了2个字或称之为4个字节,jmp段间跳转,cs等于高位字节ip等于低位字节


(3)用Debug查看内存,结果如下:
2000:1000 BE00 06 00 00 00 ..........
则此时,CPU执行指令
  1. mov ax, 2000h
  2. mov es, ax
  3. jmp dwordptr es:[1000h]
复制代码

后,(CS )= ?, (IP) = ?

答:(CS) = 0006,(IP)= 00BE
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-11 14:14:02 | 显示全部楼层
(1)jmp word ptr [bx + 1],偏移的字单元是ds:[1]和ds:[2]。所以只要至少需要定义三个0

(2)应该是mov [bx], bx,而不是mov [bx], 0吧。操作数是立即数和内存单元需要显性指明要访问内存单元的长度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 15:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表