指出 寻址方式,并计算 物理地址(汇编练习题)

一、经典例题

题目:请指出下列指令的 源操作数 的寻址方式,并计算物理地址

设(DS)=2000H,(ES)=2100H,(SI)=00A0H,(SS)=1500H, (BX)=0100H,

(BP)=0100H,数据变量WAL的偏移地址为0050H。

1.MOV AX,[100H]; 直接寻址 2000H*10H+100H=20100H

2.MOV AX,[BX]; 寄存器间接寻址 2000H*10H+0100H=20100H

3.MOV AX,ES:[BX]; 寄存器间接寻址 ES*10H+BX=2100H*10H+0100H=21100H  ;“ES:[BX]”才对

4.MOV AX,[BP]; 寄存器间接寻址 SS*10H+BP=1500H*10H+0100H=15100H  ;BP(或者SP),用SS。其他一般选DS。

5.MOV AX,[BX+10H]; 寄存器相对寻址 2000H*10H+0100H+10H=20110H

6.MOV AX,WAL[BX]; 寄存器相对寻址 2000H*16+0100H+0050H=20150H

7.MOV AX,[BX][SI]; 基址加变址寻址 2000H*10H+0100H+00A0H=201A0H

8.MOV AX,WAL[BX][SI]; 基址变址相对寻址 20000H+0100H+0050H+00A0H=201F0H

栈段寄存器(SS, Stack Segment):存放栈段的 段描述符 索引(该段描述符中包含栈段的线性基址)。

数据段寄存器(DS(Data Segment)、ES、FS、GS):存放数据段的段描述符索引(这些描述符中均包含数据段的线性基址)。
其中,DS数据段含有程序使用的大部分数据,ES、FS和GS分别对应IA-32中引入的附加数据段。ES数据段可以为某些串指令存放目的数据。

1.汇编语言 SI DI BX BP SS DS 是什么

SI: 16位寄存器,源变址寄存器

DI: 16为寄存器,目的变址寄存器

BX: 16位寄存器(可分成2个8位寄存器BH,BL),基址寄存器

BP: 16位寄存器,基址指针寄存器

SS : 16位段寄存器,作用是存放当前堆栈段的段地址,一般和SP连用

DS: 16为段寄存器,作用是存放当前数据段的段地址

2.怎样根据这些求物理地址

有个公式: 物理地址 = 基础地址 + 偏移地址 = CS*10H(基础地址)+ IP(偏移地址)

CS: 16位段寄存器,存放当前代码段的段地址

IP: 存放下一条要执行的指令的偏移地址

物理地址=段地址×16+偏移地址,指令中出现BP作地址,则其段地址为SS,否则就为DS。这里的16是十进制的。

Q:地址加法器是工作的?
A:地址加法器可以将输入分为段地址和偏移地址,而输出则是物理地址,
其中 段地址×16 + 偏移地址 = 物理地址

Q: 段地址为什么要乘 16或10H ?
A:因为寄存器是16位的,乘 16 后相当于左移 4 位,留出来 4 个位置供偏移地址补上。加上后就变成了 20 位,就能放入地址总线中了。

二、练习题

1.现有AX=2000H,BX=1200H,DS=3000H,DI=0002H,(31200H)=50H,(3120H)=02H,(31202H)=40H,请写出下列各条指令独立执行完后有关寄存器及存储单元的内容,并指出标志位ZF、CF的值。

   A.ADD	AX,1200H	;问AX=____3200____H  	ZF=_0____。
   B.SUB	AX,BX  	;问AX=__e00_____H  	ZF=__0___。
   C.MOV   AX,[BX] 	;问AX=____50____H  	CF=__0___。	  

SUB:减法
2000H-1200H=0E00H 借一当16,16-2=14 14就是E
在这里插入图片描述
进位标志CF(Carry Flag):主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。CY(1) NC(0)
零标志ZF(Zero Flag):如果计算结果的所有位是0,ZF=1,否则,ZF=0。ZR(1) NZ(0)

MOV AX,[BX]; 寄存器间接寻址   AX = DS×10+BX  =   3000H*10H+1200H=31200H =50H

2.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,说明下列指令执行后AX寄存器的内容。

(1)MOV AX,1200H   
1200H
(2)MOV AX,BX
100H
(3)MOV AX,[1200H]
2AH
(4)MOV AX,[BX]
12H
(5)MOV AX,1100H[BX]
2AH
(6)MOV AX,[BX][SI]
56H
(7)MOV AX,1100H[BX][SI]
B7H

3.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( A )

A. 1400H      B. 77F8H     C. 0000H      D. 0FFFFH

在这里插入图片描述
4.设DS=2200H,BX=1000H,SI=0100H,偏移量D=0A2B1H,试计算出下列各种寻址方式下的有效地址,填入括号中

A.使用D的直接寻址(    A2B1         )
B.使用BX的寄存器间接寻址(   1000      )
C.使用BX和D的寄存器相对寻址(   B2B1        )
D.使用BX、SI和D的相对基址变址寻址(   B3B1      )
E .使用BX、SI的基址变址寻址(    1100       )

5.分别指出下列指令中源操作数的寻址方式:

A.	MOV SI,100(   立即寻址      )
B.	MOV CX,DATA[SI](    寄存器相对寻址       )
C.MOV [SI],AX(    寄存器寻址      )
D.ADD AX,[BX][DI](   基址加变址寻址     )

6.设(SS)= 448AH,(SP)= 450H,执行
PUSH AX
PUSHF
后,当前栈顶的物理地址=___ B ___。

A.44CE6H			B.44CECH			C.44CF4H			D.44CF2H

在这里插入图片描述
SS×10+SP=448AH×10+ 044CH = 44CECH

分析:

PUSH AX;    AX是16位寄存器,2个字节,所以SP-2
PUSHF;      把标志寄存器FLAGS的值入栈,也是2个字节,所以SP-2
SP-4=044CH
物理地址是: 448AH左移四位(乘十)+ 044CH = 44CECH

7.操作数直接存放在指令中,则它的寻址方式是( D )。

(A) 直接寻址       (B) 寄存器寻址   (C) 寄存器间接寻址   (D) 立即寻址

8.MOV AX,ES:COUNT[DI] 源操作数的寻址方式是( C )

A. 基址寻址      B. 立即寻址    
C. 变址寻址     D. 基址变址寻址 

9.指令MOV BX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为( B )

A. 17500H           B. 16500H     
C. 14500H           D. 13500H 

10.已知(DS)=3000H,(SS)=2500H,(BX)=0100H,(BP)=0040H,指令MOV AX,DS:[BP] 源操作数的物理地址是( B )。

A.25040H     	B. 30040H   		  C.25100H   		    D. 55040H

11.MOV BH,1000[SI],该指令中源操作数采用的寻址方式是( C )。

   A.立即			B.直接		C.寄存器相对		D.寄存器间接

三、概念题

1.在ARM体系结构中,( A )寄存器作为连接寄存器,当进入子程序时或者处理器响应异常的时候,用来保存PC的返回值;( )寄存器作为处理器的程序计数器指针。

A.R14,R15    B.R13,R15    C.R13,R15     D.R14,R13

2.在下列ARM处理器的各种模式中,只有( B )模式不可以自由地改变处理器的工作模式。

A.系统模式(System)     B.用户模式(User)
C.终止模式(Abort)      D.中断模式(IRQ)

3.设CS=2500H,DS=2500H,SS=2430H,BP=0200H,SI=0010H,DI=0206H,计算下列x86指令源操作数的物理地址。( D )
MOV AX,[BP+SI+4]

A.25214H   B.25514H   C.24214H    D.24514H

解答:

看见BP 选SS
 SS*10+BP + SI + 4 = 24300 + 200 + 10 +4 = 24514

4.用十六进制工具查看IMAGE_ FILE_HEADER结构的情况时,以下字段中( B )代表可执行文件的目标CPU类型。

A.NumberOfSections      B.Machine
C.TimeDateStamp         D.Characteristics 

5.MOV AX,[BX+SI]的源操作数的物理地址是( A )

A.(DS)*10H+(BX)+(SI)      B.(ES)*10H+(BX)+(SI)
C.(SS)*10H+(BX)+(SI)      D.(CS)*10H+(BX)+(SI)

四、操作题

1.若(CL)= 4,(AX)=0FF0FH,执行语句“ROR AX,CL”后 ,(AX)=( FFF0 )H。
在这里插入图片描述
ROR循环右移

1.现有AX=1500H,BX=1200H,DS=3000H,DI=0002H,(31200H)=70H,(3120H)=12H,(31202H)=50H,请写出下列各条指令独立执行完后有关寄存器及存储单元的内容,并指出标志位ZF的值。(每空1分,共5分)
ADD AX,2100H;问AX=( 3600 )H ZF=( 0 )。
SUB AX,BX;问AX=( 300 )H ZF=( 0 )。
MOV AX,[BX] ;问AX=( 70 )H
在这里插入图片描述

一段x86汇编程序如下:( )
PUSH BX;
PUSH AX;
PUSH BX
POP CX;
PUSH BX;
PUSH AX
POP CX
假设AX=1357H,BX=2468H,DS=2000H,SS=4000H则程序执行完后,CX等于多少?( A )
A.1357H B.4468H
C.3357H D.6468H

  1. 设(SS)=0FFA0H,(SP)=00B0H,(AX)=8057H,(BX)=0F79H,执行指令"PUSH AX"后,(SP)= ( 00AE );再执行指令:
    PUSH BX
    POP AX
    后,(SP)= ( 00AE ) ,(AX)= ( 0F79 ),(BX)= ( 0F79 )。

注:这里不用-r输入SS的值,只输入SP、AX、BX的值。

  1. MOV AX, 0001H
    MOV BX, 0002H
    PUSH BX
    PUSH AX
    POP BX ;执行后 BX=( 01 )
    POP AX ;执行后 AX=( 02 )
    MOV AX,3F5FH ;执行后 AL=( 5F )
    AND AL,0FH ;执行后 AL=( 0F )
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 19
    点赞
  • 198
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值