题目
变量定义如下:3150H: 0100H ХР DW 5000H2000Н: 0400H ARRAY DW 100 DUP (?)执行下列指令,填写对应寄存器[1]的值((1)不能有多余的空格和和字符。(2)字符全部大写,并且为半角字符。)MOV BX, SEG XP;BX=( )HMOV AX, SEG ARRAY;AX=( )HMOV SI, OFFSET XP;SI=( )HMOV DX, [SI];DX=( )H
变量定义如下:
3150H: 0100H ХР DW 5000H
2000Н: 0400H ARRAY DW 100 DUP (?)
执行下列指令,填写对应寄存器[1]的值((1)不能有多余的空格和和字符。(2)字符全部大写,并且为半角字符。)
MOV BX, SEG XP;BX=( )H
MOV AX, SEG ARRAY;AX=( )H
MOV SI, OFFSET XP;SI=( )H
MOV DX, [SI];DX=( )H
题目解答
答案
SEG 操作符返回变量所在段的段地址,OFFSET 操作符返回变量的偏移地址。
对于 MOV BX, SEG XP,XP 所在段的段地址是 3150H,所以执行后 BX = 3150H。
对于 MOV AX, SEG ARRAY,ARRAY 所在段的段地址是 2000H,执行后 AX = 2000H。
对于 MOV SI, OFFSET XP,XP 的偏移地址是 0100H,执行后 SI = 0100H。
对于 MOV DX, [SI],先通过 SI = 0100H 找到对应的内存地址,该地址存储的值是 5000H,所以执行后 DX = 5000H.
解析
考查要点:本题主要考查对汇编语言中段寄存器、偏移地址的理解,以及SEG和OFFSET操作符的用法。
解题核心思路:
- 变量段地址与偏移地址的确定:根据变量定义,明确变量所在的段地址(段基值)和偏移地址。
- 指令操作符的作用:
SEG操作符返回变量所在段的段基值(段地址)。OFFSET操作符返回变量的偏移地址。
- 内存间接寻址:通过
[SI]间接寻址时,需根据SI的偏移地址找到对应的内存值。
破题关键点:
- 变量定义格式:
变量名 段地址: 偏移地址 类型 初始值。 - 段基值与偏移地址的区分:段基值是段的起始地址,偏移地址是变量在段内的相对位置。
MOV BX, SEG XP
- 变量XP的定义:段地址
3150H,偏移地址0100H。 SEG XP返回XP所在段的段基值3150H,因此BX = 3150H。
MOV AX, SEG ARRAY
- 变量ARRAY的定义:段地址
2000H,偏移地址0400H。 SEG ARRAY返回ARRAY所在段的段基值2000H,因此AX = 2000H。
MOV SI, OFFSET XP
OFFSET XP返回XP的偏移地址0100H,因此SI = 0100H。
MOV DX, [SI]
SI = 0100H,对应内存地址0100H处存储的值为5000H(XP的初始值),因此DX = 5000H。