段内间接寻址
转向的有效地址是一个寄存器或存储单元的内容。
(可用除立即数以外的任何一种数据寻址方式得到)
例: TABLE = 20A2H (BX) = 1256H (SI) = 528EH
(DS) = 2000H (232F8H) = 3280H (264E4H) = 2450H
JMP BX ; (IP)=1256H
JMP TABLE[BX] 20A2+1256=32F8 20000(ds)+32F8
JMP WORD PTR TABLE[BX] ; (IP)=3280H
JMP [BX][SI]
JMP WORD PTR [BX][SI] (20000+(1256+528E))= ( 264E4H)=2450H ; (IP)=2450H
一、 单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填
在题干的括号内。每小题1分,共20分)
无条件转移指令 – JMP
段内直接转移: JMP disp 指令中给出的8/16位的位移量加到IP。CS保持不变JMP NEXT ;转向NEXT
段内间接转移: JMP reg/mem reg/mem中的16位偏移地址送到IP。CS保持不变。注意:目标地址以段内偏移的形式给出,而不是相对于IP的位移量,所以它是一个16位的操作数。
例JMP BX ;指令执行后,执行后IP=BX
JMP WORD PTR[BX+DI] ;设指令执行前,DS=3000H(段地址),BX=1300H,DI=1200H,[32500H]=2350H,则指令执行后, IP=2350H,于是转向代码段的偏移地址2350H处开始执行。
段间直接转移 JMP segment:offset 指令中给出的16位的段和16位的偏移地址送到CS和IP
例JMP 2000H:1000H 执行时,(IP)←1000H,(CS)←2000H
段间间接转移 JMP mem32 mem32中的16位的段和16位的偏移地址送到CS和IP
例JMP DWORD PTR[SI]设指令执行前:DS=4000H,SI=1212H, [41212H]=1000H,[41214H]=4A00H
则指令执行后:IP=1000H,CS=4A00H
于是转到4A000+1000=4B000H处开始执行指令。
db byte 8位 dw word 16位
db byte 8位 dw word 16位
偏移地址就是计算机里的内存分段后,在段内某一地址相对于段首地址(段地址)的偏移量. 如8086存储系统中 20位的物理地址(就是数据存储的实际地址)=16位的段地址*16+16位的偏移量 数据段DS寄存器的值=0088H 偏移地址=22H 那么偏移后的地址等于 0088H*16H+22H=00880+22H=008A2H
1. 已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是(A )。
A.2025∶0F2A B.2108∶00EA
C .2000∶017A D.2100∶117A
2. 某程序装入内存后,DS=1200H,CS=1400H,则程序中数据段中的数据最多是(C )字节。
A.2K B.4K C.8K D.64K
2. 某程序装入内存后,DS=1200H,CS=1400H,则程序中数据段中的数据最多是(C )字节。
A.2K B.4K C.8K D.64K
C(14000H-12000H=2000H,转换成10进制是8192,即8k)
3. 以寄存器DI间接寻址的存储器字节单元内容加1的指令是( C )。
A.INC [DI] B.INC DI C.INC BYTE PTR[DI] D.ADD [DI],1 [di]地址
4.有语句:COUNT EQU 256,下列四种叙述中,正确的是(C)。
A.COUNT是变量 B.COUNT占用一个字节存储单元
C.COUNT是符号常数 D.COUNT占用二个字节存储单元
EQU是宏定义 COUNT就等于256
比如:s equ bx+si mov cx,[s]相当于如下指令:mov cx,[bx+si]
5.下面指令中,源操作数的寻址方式为立即寻址的是(B)。
A.MOV AX,OFFSET A B.MOV AX,A
C.MOV AX,A+1 D.MOV AX,A[BX]
5.下面指令中,源操作数的寻址方式为立即寻址的是(B)。
A.MOV AX,OFFSET A B.MOV AX,A
C.MOV AX,A+1 D.MOV AX,A[BX]
OFFSET操作将得到变量的偏移值,但对基址变址方式形成的值在汇编指令时还是未知的 MOV AL, ‘A’
6.下面XCHG指令语句中,语法正确的是( B )
A.XCHG AX,DS B.XCHG BL,[BX]
C.XCHG AL,OFH D.XCHG[SI],[DI]
C.XCHG AL,OFH D.XCHG[SI],[DI]
交换指令: XCHG OPR1, OPR2 执行操作: (OPR1) (OPR2)
* 不影响标志位 * 不允许使用段寄存器 例:XCHG BX, [ BP+SI ]
汇编table指令什么意思7.设(AL)=63H(BL)=29H执行下面指令后( C)
SUB AL,BL
DAS
AX的内容是
A.(AX)=0304H B.(AX)=0034 C.(AX)=0034H D.(AX)=0304
8.设BX=1234H,DS=2000H,(21234H)=5678H,则指令“LEA SI,[BX]”执行后的结果是
(B)
A.SI=5678H B.SI=1234H C.SI=2000H D.SI=3234H
9.设DF=0,SI=20H,CX=10,执行REP LODSW指令后,SI中的内容是(D)
A.20H B.30H C.34H D.40H 循环一次 si加二
.REP重复串操作直到(CX)=0为上 格式: REP stringprimitive 其中StringPrimitive可为MOVS,LODS或STOS指令 执行的操作: 1)如(CX)=0则退出REP,否则往下执行. 2)(CX)<-(CX)-1 3)执行其中的串操作 4)重复1)~3) lodsb,lodsw,lodsd串读取指令,是将数据段中的字节(sb),字(sw),双字(sd)读取至AL(字节),AX(字),EAX(双字)中
10.设AL=0A8H,CL=23H,执行乘法指令MUL CL后,标志位OF,CF的值分别是(A)OF溢出ov 1 nv 0 CF进位cy 1 nc 0
A.OF=1,CF=1 B.OF=1,CF=0 C.OF=0,CF=1 D.OF=0,CF=0 不确定
10.设AL=0A8H,CL=23H,执行乘法指令MUL CL后,标志位OF,CF的值分别是(A)OF溢出ov 1 nv 0 CF进位cy 1 nc 0
A.OF=1,CF=1 B.OF=1,CF=0 C.OF=0,CF=1 D.OF=0,CF=0 不确定
字节操作数 (AX) (AL) * (SRC) 字操作数 (DX, AX) (AX) * (SRC)
11.已知AX=0139H,BL=36H,执行下列指令序列,则AX=(B )。
ADD AL,BL
AAA AAA 加法的ASCII码调整指令
A.016FH B.0175H C.0205H D.0115H
12.将AX中有符号数除以4的正确指令序列是( C )。
A.SHR AX,1 B.SAR AX,1 C.IDIV 4 D.DIV 4
11.已知AX=0139H,BL=36H,执行下列指令序列,则AX=(B )。
ADD AL,BL
AAA AAA 加法的ASCII码调整指令
A.016FH B.0175H C.0205H D.0115H
12.将AX中有符号数除以4的正确指令序列是( C )。
A.SHR AX,1 B.SAR AX,1 C.IDIV 4 D.DIV 4
无符号数除法指令: DIV SRC 带符号数除法指令: IDIV SRC
字节操作 (AL) (AX) / (SRC) 的商 (AH) (AX) / (SRC) 的余数
字操作 (AX) (DX, AX) / (SRC) 的商 (DX) (DX, AX) / (SRC) 的余数
* AX (DX,AX) 为隐含的被除数寄存器。 * AL (AX) 为隐含的商寄存器。 * AH (DX) 为隐含的余数寄存器。
* SRC不能为立即数。
13.已知CS=2300H,DS=2400H,执行下列指令序列后,CS和DS值是( D )。
PUSH CS (2300H压栈到CS)
POP DS(然后出栈倒DS)
A.CS=0 B.CS=2400H C.CS=2400H D.CS=2300H
DS=2300H DS=2300H DS=2400H DS=2300H
13.已知CS=2300H,DS=2400H,执行下列指令序列后,CS和DS值是( D )。
PUSH CS (2300H压栈到CS)
POP DS(然后出栈倒DS)
A.CS=0 B.CS=2400H C.CS=2400H D.CS=2300H
DS=2300H DS=2300H DS=2400H DS=2300H
进栈指令: PUSH SRC 执行操作: (SP) (SP) – 2 ( (SP)+1, (SP) ) (SRC)
出栈指令: POP DST 执行操作: (DST) ( (SP)+1, (SP) ) (SP) (SP) + 2
堆栈:‘先进后出’的存储区,段地址存放在SS中, SP在任何时候都指向栈顶,进出栈后自动修改SP。
* 堆栈操作必须以字为单位。 *不影响标志位
* 不能用立即寻址方式 PUSH 1234H * DST不能是CS POP CS
14.用转移表法的多分支程序设计,分支表是建在( B )中。
A.代码段 B.数据段 C.附加段 D.堆栈段
15.扩展名是EXE的汇编语言可执行程序用DOS功能调用返回操作系统指令是( B )。
A.MOV AX,4CH B.MOV AX,4C00H C.MOV AL,4CH D.MOV AH,2CH
16.BUF1 DB 3 DUP(0,2 DUP (1,2),3)
A.代码段 B.数据段 C.附加段 D.堆栈段
15.扩展名是EXE的汇编语言可执行程序用DOS功能调用返回操作系统指令是( B )。
A.MOV AX,4CH B.MOV AX,4C00H C.MOV AL,4CH D.MOV AH,2CH
16.BUF1 DB 3 DUP(0,2 DUP (1,2),3)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论