简答题
1.根据下面给定的条件回答相应的问题:
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中,写出其相应指令;(同6.(1))
(2)用直接寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中,写出其相应指令;
(3)试回答下面两个语句的区别:
X1 EQU 1000H
X2 = 1000H
(4)指令MOV AL,CX是否正确,如果错误请说明原因。
答:(1)ADD DX,BX (2)MOV BX,ARRAY+8 (3)X1不能多次赋值,X2可以多次赋值 (4)是错的,因为长度不一样。
2.试以生成HELLO程序为例,写出汇编语言程序上机过程,并用DEBUG命令对其进行调试,要求每步必须写出所操作的文件名的后缀。
答:1)用MASM程序产生OBJ文件MASM HELLO.ASM
2)用LINK程序生成EXE文件LINK HELLO.OBJ
3)运行生成的EXE文件 HELLO.EXE
4)用DEBUG命令对其进行调试 DEBUG HELLO.EXE
3.给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1)立即寻址;(2)直接寻址;(3)使用BX的间接寻址;(4)相对基址变址寻址。
参考原题:P107习题3.1
答:(1) 没有有效地址;
(2) EA=D=7237H;
(3) EA=(BX)=637DH;
(4) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此 EA=004FH。
4.在8086/8088指令系统中,按寻址方式分类,指令操作数分成哪几类?各举一例说明(至少写出5种)。
答:按指令操作分类,指令操作数分为七类:
1、立即数寻址方式 例如:MOV BX,0A47H
2、寄存器寻址方式 例如:MOV DS,AX
3、直接寻址方式 例如:MOV AX,ARRY
4、寄存器间接寻址方式 例如:MOV AX,[BX]
5、寄存器相对寻址方式 例如:MOV AX,A[BX]
6、基址变址寻址方式 例如;MOV [BX+SI],DA1
7、相对基址变址寻址方式 例如:MOV BYTE PTR TABZ[BP][DI],CL
5.假设DS=2000H,BX=0100H,[20100H]=30H ,[20101H]=10H,问:
(1)执行MOV DX,[BX] DX=__________________
执行LEA DX,[BX] DX=__________________
答:因为PA=DS*10H+BX=20100H。所以,执行MOV DX,[BX]后,DX=DS:[BX]=1030H,执行LEA DX,[BX]后,DX=BX=0100H.
(2)简述两条指令区别。
答: 两条指令区别,MOV DX,[BX]是获得[BX]存储单元的值,LEA DX,[BX]是获得[BX]存储单元的有效地址。
6.试根据以下要求写出相应的汇编语言指令:(参考原题:p107习题3.2)
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中;
ADD DX, BX
(2)用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中;
ADD AL, [BX][SI]
(3)用寄存器BX和位移量DB2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中;
ADD [BX][0B2H], CX
(4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回该存储单元中;
MOV AX,2A59H ADD [0524H] ,AX (或ADD WORD PTR [0524H], 2A59H)
(5)把数0B5H与(AL)相加,并把结果送回Al中。
ADD AL, 0B5H
7.如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,指令执行完后AX寄存器的内容是什么?
MOV AX,TABLE AX=__________
LEA AX, TABLE AX=__________
参考原题:p108习题3.10
答:MOV AX, TABLE是将TABLE单元的内容送到AX,(AX)=1234H
LEA AX,TABLE是将TABLE单元的有效地址送到AX,(AX)=0032H
8.下列语句在存储器中分别为变量数据区分配多少个字节单元?
(1)VAR3 DD 10
答:VAR3变量数据区分配了:4B
(2)VAR4 DW 4 DUP(2),2
答:VAR4变量数据区分配了:2*(4+1)B=10B
9.分别说明下列两组指令中两条指令操作的相同点和不同点:
(1)SUB AX,BX CMP AX,BX
答:相同点:SUB和CMP都计算AX-BX,并根据计算结果影响标志位;
不同点:SUB指令把计算结果存放在目的操作数中,CMP汇编指令有多少个指令不保存计算结果。
(2)AND CX,DX TEST CX,DX
答:略
10.设DS=2000H,BX=1256H,变量TABLE的偏移地址为20A1H,[232F7H]=3280H。下列指令分别执行后,IP的值各是多少?
(1)JMP BX IP=___________
(2)JMP TABLE[BX] IP=____________
答:(1)1256H;(2)3280H
11.指出下列指令的错误:
(1)MOV AH,BX
(2)MOV [BX],[SI]
(3)MOV CS,AX
答:(1)MOV AH,BX 源操作数与目的操作数长度不相同
(2)MOV [BX],[SI] 这是两个内存单元在传递数据,而这在汇编语言中是不允许的
(3)MOV CS,AX 不能对CS赋值
12.已知数据段定义如下:
DATA SEGMENT
DRG 100H
BUF DW’CD’,1,3 DUP(4,2 DUP(8,6))
VRA DB 4AH
DATA ENDS
单独执行下列语句:
LEA BX,BUF BX=________
MOV CX,VAR-BUF CX=________
答:BX=OFFSET BUF =0100H
CX=VRA-BUF=34D=22H
13. 在8086/8088系统中,存储器是分段组织的,按各段实际长度定位。已知DS=2150H,CS=2640H,SS=2250H,SP=100H,问题:
(1)数据段起始地址是多少?
PA=DS*10H+0H=21500H
(2)计算数据段中最多可以存放多少个字节数据?(要有具体计算式) MAXSIZE=SS*10H-DS*10H=1000H
(3)代码段最多可以存放多少个字节程序代码?说明理由。
代码段最多可以存放64KB的程序代码,因为一个最大不能超过64KB。
程序分析题
1.执行下面的程序段后,说出该段程序的功能:
MOV CX,10
LEA SI,First
LEA DI,Second
REP MOVSB
答:将源串First的10个字节搬移至目标串Second。
2.试说出该程序所实现的功能:
LEA SI,ARRAY
XOR AX,AX
MOV BX,AX
MOV DX,AX
MOV CX,N
SHR CX,1
@801:MOV AX,[SI]
CMP AX,0
JZ @802
JNS @803
INC DL
JMP @804
@802:INC BH
JMP @804
@803:INC BL
@804:ADD SI,2
LOOP @801
HLT
答:统计以ARRAY为起始地址的数据区中正数、负数和零的个数。
3.MOV AX,9090H
SUB AX,4AE0H
JC L1
JD L2
JMP L3
上述程序执行后AX=________,程序转向_________。
答:45B0H ,L2
4.ADR DW 1234H,5678H
… …
LEA SI,ADR
LDS BX,ADR
设变量ADR的偏移地址是100H,上述两条指令执行后:SI=________,BX=_________。
答:SI=0100H, BX= 1234H
5.下面程序段执行完以后,BX的内容是什么?
MOV BX,00FFH
AND BX,0FFFH
OR BX,0F0FH
XOR BX,00FFH
答:BX=0F00H
6.执行下列指令,AX寄存器中的内容是什么?
TABLE DW 10,20,30,40,50
ENTRY DW 3
…
MOV BX,OFFSET TABLE
ADD BX,ENTRY
MOV AX,[BX]
参考原题:p108习题3.11
答:(AX)=1E00H (TABLE的存储方式如右图所示)
7.设寄存器AX,BX,CX中的内容都是1234H,变量value中的内容为0F0FH,执行下列指令序列:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论