文章
92
粉丝
68
获赞
0
访问
11.3k
(1) 第20条指令的虚拟地址是 0040 10B9H
(2) 寄存器相对寻址,第2条指令jmp的跳转目标地址计算过程: 0040 1088H + 02H+32H.
(3) 已知第19条mov指令的功能是“a[i][j]←10”,其中ecx和edx为寄存器名,0042 2000H是数组a的首地址,指令中源操作数采用 寄存器基址变址寻址方式,
ecx中存放的是i,
小端方式。
(4) 第一次执行第19条指令时,取指令过程中不会发生缺页异常,因为004010AEH 地址和上一条0040108AH属于同一页面。
评分及理由
(1)得分及理由(满分3分)
学生答案正确,给出了正确的虚拟地址 0040 10B9H。得3分。
(2)得分及理由(满分3分)
第一问:学生回答“寄存器相对寻址”是错误的。标准答案为“相对寻址”。jmp和jge指令的跳转目标地址是通过当前指令地址加上一个偏移量计算得到的,属于相对寻址,而非寄存器相对寻址。扣1分。
第二问:学生给出的计算过程“0040 1088H + 02H+32H”存在多处错误。首先,他使用的基地址(00401088H)是第7条指令的地址,而非第2条指令的地址(00401079H)。其次,他加的偏移量“32H”是第7条指令的偏移量,与第2条指令无关。最后,计算过程表述混乱,没有正确体现相对寻址“下一条指令地址+偏移量”的核心。因此,第二问答案完全错误。扣2分。
本小题共扣3分,得0分。
(3)得分及理由(满分3分)
第一问:学生回答“寄存器基址变址寻址方式”是错误的。问题问的是“源操作数”的寻址方式。源操作数是立即数“0Ah”,因此应采用“立即寻址”方式。学生描述的是目的操作数“a[i][j]”的寻址方式。扣1分。
第二问:学生回答“ecx中存放的是i”不完整且不准确。根据指令`[ecx+edx*4+00422000h]`,edx是j,ecx应为`i*行长度`。已知数组定义为`a[24][64]`,行长度为64*4=256字节,因此ecx中应为`i*256`。学生答案“i”未体现缩放因子,不准确。扣1分。
第三问:学生回答“小端方式”正确。因为机器码中立即数“0A 00 00 00”的低位字节“0A”存储在低地址,符合小端序。得1分。
本...
登录后发布评论
暂无评论,来抢沙发