习题列表

习题内容

第五章 汇编程序设计


来源:  作者:王丽  时间:2012-6-03 12:28:04

一、填空题
1、一般指令机器码包括_______和_______。
2、8086CPU指令操作数有_______、_______和_______三类。
3、存储器操作数的寻址方式有_______、_______、_______、_______、_______。
4、INC指令不影响_______标志。
5、当8086CPU访问100H号端口时,采用_______寻址方式,执行的指令是_____________________。
6、根据以下操作说明,用一条指令来实现。
(1)把BX 和DX的内容相加,结果送入DX中。_______
(2)用寄存器BX间接寻址2000H内存单元,并将2000H单元中的内容与AX寄存器相加,结果存入AX寄存
器中。_______
(3)用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节数据与AL的内容相加,结果送入AL中
。_______
(4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送入该存储单元
中。_______
二、分析题
1、已知(DS)=3000H,(ES)=3500H,(SS)=4000H,(BX)=0038H,(BP)=0019H,(SI)=0012H,变
量DATA的偏移地址是0200H。请说明下列指令中源操作数的寻址方式、若使用内存,说明有效地址EA和
物理地址。
(1)MOV  AX,1600H    (2)MOV  AX,[BP][SI]
(3)MOV  AX,[1600h]   (4)MOV  AL,10H[BX][SI]
(5)MOV  AX,BX       (6)MOV  DX,ES:[BX]
(7)MOV  AH,[BP]      (8)MOV  CX,DATA
(9)MOV  AX,30H[BX]  (10)MOV  AL,ES:[BX]
2、执行下面程序,写出各寄存器的内容,若影响标志位,请给出标志位的状态。
MOV  AX,0A0BH
DEC   AX
SUB   AX,0FFH
AND   AX,00FFH
MOV   CL,3
SAL   AL,CL
ADD  AL,25H
XCHG  AL,AH
PUSH  AX
POP   BX
INC   BL
MUL   BL
3、已知:AX=003AH,请根据AX值用指令实现,使BL=03H,,BH=0AH,CX=03H-0AH,DX=2×3AH,
SI=0A30H,DI=0A03H,用程序编写。
4、已知AL=0D8H,DATA单元中内容为8BH,写出下列每条指令单独执行后的结果。
(1)XOR  AL,DATA    (2)OR  AL,DATA
(3)AND  AL,DATA    (4)NOT DATA
(5)AND  AL,0F0H     (6)OR  AL,03H
(7)XOR  AL,0FFH     (8)TEST  AL,01H
5、程序执行前已知各寄存器内容DS=092DH,SS=1E4AH,BP=0024H,AX=1234H,BX=0024H,CX=0078H,
SI=0012H,DI=0032H,内存单元(09326H)=00F6H(字),(093C8H)=1E40H(字),(1E4F8H)=091DH
(字)。写出下列程序段执行后相应寄存器及内存单元的内容。
MOV  CL,20H[BX][SI]
MOV  2[BP][DI],CX
MOV  BX,20H[BX][SI]
MOV  AX,2[BX]
MOV  [SI],BX
MOV  [DI],AX
HLT
6、判断分析下列程序段执行结果:
(1)MOV  AX,0A0BH
     DEC   AX
     SUB   AX,00FFH
     AND   AX,00FFH
     MOV   CL,03H
     SHL    AL,CL
     XCHG  AL,AH
     ADD   AL,25H
     PUSH   AX
     POP     BX
     INC    BL
     MUL   BL
     HLT
执行结果:AX=(  ),BX=(  ),CX=(  )
(2)MOV  CX,3100H
     MOV  WORD PTR[2000H],8150H
     MOV  BX,[2000H]
     MOV  SP,2100H
PUSH  BX
PUSH  CX
POP  AX
POP  DX
MOV  AL,BYTE PTR[2001H]
XOR  AL,00H
CBW
IDIV  BL
HLT
执行结果:AX=(  ),BX=(  ),CX=(  ),DX=(  )
7、设BUFF  DB  1,2,3,“0123”;EBUFF  DB  0;LENG  EQU  EBUFF-BUFF,则LENG=(8),LENG
表示含义为(  )。
8、如果一个堆栈从地址3250H:0000H开始,它的最后1个字的偏移地址为0100H,SP的内容为0052H,问
:(1)栈顶地址是多少?(2)栈底地址是多少?(3)存入数据1234H和5678H后,SP的内容是多少?
9、如果一个堆栈从地址3250H:0000H至1250H:0100H,(SP)=0052,问(1)栈顶地址是多少?(2)
栈底地址是多少?(3)SS中段地址是多少?(4)若存入数据2456H,在堆栈区如何放置,SP的内容是
多少?
10、假设下列指令中的所有标识符均是类型属性为字的变量,请指出下列指令中哪些是非法的? 它们的
错误是什么?
(1) MOV  BP,AL					
(2)  MOV  WORD_OP[BX+4*3][DI],SP
(3)  MOV  WORD_OP1,WORD_OP2	(4)  MOV  AX,WORD_OP1[DX]
(5)  MOV  SAVE WORD,DS			
(6)  MOV  SP,SS:DATA_WORD[BX][SI]
(7)  MOV  [BX][SI],2				
(8)  MOV  AX,WORD_OP1+WORD_OP2
(9)  MOV  AX,WORD_OP1_WORD_OP2+100
(10)  MOV  WORD_OP1,WORD_OP1_WORD_OP2 
11、假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处。
        (1)  ADD  VAR1,VAR2
	(2)  SUB  AL, VAR1
	(3)  JMP  LAB[SI] 
	(4)  JNZ  VAR1    
        (5)  JMP  NEAR  LAB 
12、画图说明下列语句所分配的存储空间及初始化的数据值。
    (1)  BYTE_VAR  DB  ‘BYTE’,12,-12H,3 DUP(0,?,2 DUP(1,2),?)
    (2)  WORD_VAR  DW  5 DUP(0,1,2),?,-5,‘BY’,‘TE’,256H
13、试列举各种方法,用汇编程序把5150H存入一个存储器字中(例如,DW 5150H)。 
14、假设程序中的数据定义如下:
PARTNO    	DW    ?
PNAME     	DB    16    DUP(?)
COUNT      	DD    ?
PLENTH     	EQU   $-PARTNO
问PLENTH的值为多少? 它表示什么意义? 
15、有符号定义语句如下:
BUFF    	DB    1,2,3,‘123’
EBUFF     DB    0
L         EQU   EBUFF-BUFF
问L的值是多少? 
16、假设程序中的数据定义如下:
       LNAME      	DB    30  DUP(?)
      ADDRESS    	DB    30  DUP(?)
      CITY       	DB    15  DUP(?)
      CODE_LIST  	DB    1,7,8,3,2
    (1) 用一条MOV指令将LNAME的偏移地址放入AX。
    (2) 用一条指令将CODE_LIST的头两个字节的内容放入SI。
        (3) 写一条伪操作使CODE_LENGHT的值等于CODE_LIST域的实际长度。 
17、试写出一个完整的数据段DATA_SEG,把整数5赋予一个字节,并把整数-1,0,2,5和4放在10字数
组DATA_LIST的前5个单元中。然后,写出完整的代码段,其功能是把DATA_LIST中前5个数中的最大值和
最小值分别存入MAX和MIN单元中
18、给出等值语句如下:
ALPHA	EQU		100
BETA	EQU		25
GAMMA	EQU		2
问下列表达式的值各是多少?
(1) ALPHA*100+BETA		
(2)   ALPHA  MOD	GAMMA+BETA
(3)  (ALPHA+2)*BETA-2	
(4)  (BETA/3)	MOD 	5
(5)  (ALPHA+3)*(BETA  MOD  GAMMA)
(6)  ALPHA  GE  GAMMA
(7)  BETA  AND  7				
(8)  GAMMA  OR  3
19、对于下面的数据定义,三条MOV指令分别汇编成什么?(可用立即数方式表示)
TABLEA	DW		10 DUP(?)
TABLEB	DB		10 DUP(?)
TABLEC	DB		‘1234’           
  MOV		AX,LENGTH  TABLEA
  MOV		BL,LENGTH  TABLEB
  MOV		CL,LENGTH  TABLEC
20、对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?
FLDB	DB		?
TABLEA	DW		20	DUP(?)
TABLEB	DB		‘ABCD’ 
(1)  MOV    AX,TYPE  FLDB
(2)  MOV    AX,TYPE  TABLEA
(3)  MOV    CX,LENGTH  TABLEA
(4)  MOV    DX,SIZE  TABLEA
(5)  MOV    CX,LENGTH  TABLEB 
21、编写程序,接收从键盘输入的10个十进制数字,输入中遇见回车符则停止输入,各个数经过BCD码
处理,以十六进制数显示在屏幕上。

Copyright@2012 Tarim University. All rights reserved. 塔里木大学 版权所有
信息管理:机电院  技术维护:信息网络中心  地址:新疆·阿拉尔市 邮编:843300