例2:JMP[BX+DI 设指令执行前 (DS)=3000H,(BⅩ)=1300H, (DI)=1200H,(32500H=2350H 则指令执行后:(IP)=2350H 在汇编语言中,段内间接寻址通常写成: JMP WORD PTRIBX+DI] 表示所取得的目标地址是一个字
6 例2:JMP [BX+DI] 设指令执行前: (DS)=3000H,(BX)=1300H, (DI)=1200H,(32500H)=2350H; 则指令执行后:(IP)=2350H 在汇编语言中,段内间接寻址通常写成: JMP WORD PTR[BX+DI] 表示所取得的目标地址是一个字
③段间直接转移 在指令中直接给出要转移到的目的段地址和 偏移地址 例:JMP2000H:1000H 执行时,(IP)←1000H,(CS)←2000H 注:直接地址为符号地址时,段间直接转移 指令中的符号地址前应加操作符 FAR PTR 例: JMP FAR PTR far label 其中的far1abel为远类型的标号
7 ③段间直接转移 在指令中直接给出要转移到的目的段地址和 偏移地址。 例:JMP 2000H:1000H 执行时,(IP)←1000H,(CS)←2000H 注:直接地址为符号地址时,段间直接转移 指令中的符号地址前应加操作符FAR PTR。 例:JMP FAR PTR far_label 其中的far_label为远类型的标号
④段间间接转移 转移的目的地址(段和偏移)在两个相邻的 字存储单元中。例如: JMP DWORD PTRLSI] 设指令执行前:DS)=4000H,(SI=1212H, (41212H=100OH,(41214H)=4OOH 则指令执行后:(IP)=1000H,(CS)=4A0OH 于是转到4B000H处开始执行指令 例中的 DWORD PTR表示转移地址是一个双字
8 转移的目的地址(段和偏移)在两个相邻的 字存储单元中。例如: JMP DWORD PTR[SI] 设指令执行前:(DS)=4000H,(SI)=1212H, (41212H)=1000H,(41214H)=4A00H 则指令执行后:(IP)=1000H,(CS)=4A00H 于是转到4B000H处开始执行指令。 例中的DWORD PTR表示转移地址是一个双字。 ④段间间接转移
JMP DWORD PTR[S的机器码 11101100 DS: SI 4000DS +)1212SI 41212 41212 00 41213 →1000IP 10 41214 00 41215 →4A00CS 4A 段间间接转移操作示意图
9 4000 +) 1212 41212 DS SI 00 10 00 4A 41212 41213 41214 41215 1000 4A00 IP CS 段间间接转移操作示意图 11111111 11101100 JMP DWORD PTR [SI]的机器码 DS:[SI]
(2)条件转移指令-Jxx ●条件转移指令可实现程序的条件分支。 ●条件转移指令根据标志位的状态来决定是否 进行分支转移 ●格式: Jxx labe|;xx为条件名称缩写 ●指令的转移范围为-128~+127字节 主要的条件转移指令参见p142表3-7
10 ⚫条件转移指令可实现程序的条件分支。 ⚫条件转移指令根据标志位的状态来决定是否 进行分支转移。 ⚫格式: JXX label ;xx为条件名称缩写 ⚫指令的转移范围为-128~+127字节。 ⚫主要的条件转移指令参见p142表3-7。 (2)条件转移指令 - JXX