. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  【检测点】9.1我的理解  [待解决] 回复[ 4次 ]   点击[ 793次 ]  
regex
[帖 主] [ 发表时间:2010-01-18 14:28 ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
题目是定义data, 让jmp后cs:ip指向程序第一条指令
1, 我理解第一条指令时mov ax,data, start为标号,CS:IP=CS:0000
2, 要想满足题目, jmp word ptr [bx+1], 此指令中地内存地址装的必须是0000
3, 所以, data如下定义
data segment
dw   0     ;定义成一个为0的字, 因为jmp word ptr 要求是一个字。
data ends
4, 用debug实验结果:
d:\asm>debug j91.exe
-r 
AX=0000  BX=0000  CX=001B  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=14C9  ES=14C9  SS=14D9  CS=14DA  IP=0000   NV UP EI PL NZ NA PO NC
14DA:0000 B8D914        MOV     AX,14D9   ;CS=14da, IP=0000
-t

AX=14D9  BX=0000  CX=001B  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=14C9  ES=14C9  SS=14D9  CS=14DA  IP=0003   NV UP EI PL NZ NA PO NC
14DA:0003 8ED8          MOV     DS,AX     
-t

AX=14D9  BX=0000  CX=001B  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=14D9  ES=14C9  SS=14D9  CS=14DA  IP=0005   NV UP EI PL NZ NA PO NC
14DA:0005 BB0000        MOV     BX,0000
-t

AX=14D9  BX=0000  CX=001B  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=14D9  ES=14C9  SS=14D9  CS=14DA  IP=0008   NV UP EI PL NZ NA PO NC
14DA:0008 FF6701        JMP     [BX+01]                            DS:0001=0000 
;段内跳转, 地址为0000, 即程序开始第一条指令指向。
-t                                                                            

AX=14D9  BX=0000  CX=001B  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=14D9  ES=14C9  SS=14D9  CS=14DA  IP=0000   NV UP EI PL NZ NA PO NC
14DA:0000 B8D914        MOV     AX,14D9
-t
;结果正确。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved