2. DS=1000H, BX=0200H, SI=2, 内存10200H-10205H 单元的内容分别是10H, 2AH, 3CH, 46H, 59H, 6BH ,下列指令执行后,AX=?
(1) MOV AX,0200H (2) MOV AX,[200H]
(3) MOV AX,BX (4) MOV AX,3[BX]
(5) MOV AX,[BX+SI] (6) MOV AX,2[BX+SI]
答:(1)0200H (2)2A10H (3)0200H (4)5946H (5)463CH (6)6B59H
3. DS=1000H, ES=2000H, SS=3500H, SI=00A0H, DI=0024H, BX=0100H, BP=0200H ,数据段中变量名为V AL 的偏移地址值为0030H ,说明下列源操作数的寻址方式和物理地址?
(1) MOV AX,[100H] (2) MOV AX,V AL
(3) MOV AX,[BX] (4) MOV AX,ES:[BX]
(5) MOV AX,[SI] (6) MOV AX,[BX+10H]
(7) MOV AX,[BP] (8) MOV AX,V AL[BP][SI]
(9)MOV AX,V AL[BX][DI] (10) MOV AX,[BP][DI]
答:(1) 直接,10100H (2) 直接,10030H
(3) 寄存器间接,10100H (4) 寄存器间接,20100H
(5) 寄存器间接,100A0H (6) 寄存器相对,10110H
(7) 寄存器间接,35200H (8) 相对基址变址,352D0H
(9) 相对基址变址,10154H (10) 基址变址,35224H
6. 指出下列指令哪些是错误的,错在哪里
(1) MOV DL,AX (2) MOV 8650H,AX
(3) MOV DS,0200H (4) MOV [BX],[1200H]
(5) MOV IP,0FFH (6) MOV [BX+SI+3],IP
(7) MOV AX,[BX][BP] (8) MOV AL,ES:[BP]
(9) MOV DL,[SI][DI] (10) MOV AX,OFFSET 0A20H
(11) MOV AL,OFFSET TABLE (12)XCHG AL,50H
(13) IN BL,05H (14) OUT AL,0FFEH
答: (1)长度不匹配 (2)立即数不能做目的操作数
(3)段寄存器不能用立即数赋值 (4)不能两个内存
(5)IP 不能用指令直接修改 (6)指令中不能出现IP
(7)BX/BP 应与SI/DI 搭配 (8)对
(9)SI/DI 应与BX/BP 搭配 (10)OFFSET 后应该内存
(11)应用AX (12)不能立即数
(13)IN 必须用累加器 (14)操作数反
10. 某班有7个同学英语成绩低于80分,分数存在字节类型ARRAY 数组中,编程完成:(1)给每人加5分,结果存到NEW 数组中
(2)把加分后的总分存到字类型SUM 单元中
(3)把加分后的平均分存到字节类型A VERAGE 单元中
答:
LEA SI,ARRAY
MOV AX,0
NEXT: ADD BYTE PTR[SI],5
ADD AL,[SI]
ADC AH,0
INC SI
LOOP NEXT
MOV SUM,AX
MOV BL,7
DIV BL
MOV A VERAGE,AL
11. AX=2508H, BX=0F36H, CX=0004H, DX=18H,下列指令执行后结果是多少,标志位CF=?
(1) AND AH,CL (2) OR BL,30H
XOR CX,0FFF0H
(4)
NOT AX
(3)
(5) TEST DH,0FH (6) CMP CX,00H
A L,1
SAR
SHR
(7)
D X,CL (8)
AX,1
SAL
(9)
BH,CL (10)
SHL
B X,1 (12)
ROR DX,CL
RCL
(11)
BX=0F36H, CF=0
答:(1)
AX=0408H, CF=0 (2)
CF=0
CX=0FFF4H,
(3) AX=0DAF7H, C F不变 (4)
(5) DX=018H, CF=0 (6) CX=0004H, CF=0
(7) DX=0186H, CF=0 (8) AX=2504H, CF=0
(9) BX=0F036H, CF=0 (10) AX=4A10H, CF=0
(11) BX=1E6C/1E6DH, CF=0 (12) DX=4186H, CF=0
12. 数据段定义如下:
DATA SEGMENT
Computer
&
Personal
TV’
STRING
DB
‘The
DATA ENDS
用字符串操作等指令完成以下功能:
(1) 把该字符串传送到附加段中偏移量为GET_CHAR开始的内存单元中
(2) 比较该字符串是否与’The computer’相同,若相同则将AL寄存器的内容置1,否则置0,并将比较次数送到BL寄存器
(3) 检查该字符串是否有’&’符,若有则用空格符替换
(4) 把大写字母传送到附加段中以CAPS开始的单元中,其余字符传送到以CHART 开始的单元,然后将数据段中存储上述字符串的单元清零。
答:(1) CLD
S I,STRING
LEA
D I,GET_CHAR
LEA
MOV CX,26
MOVSB
REP(2)补充在附加数据段定义
computer’
‘The
STRING1 DB
MOV AL,1
CLD
LEA
S I,STRING
D I,STRING1
LEA
MOV CX,12
REPZ CMPSB
JCXZ SKIP
MOV AL,0
SKIP: MOV BX,12
B X,CX
SUB
(3) CLD
D I,STRING
MOV AL,’&’ LEA
MOV CX,26
NEXT: REPNE SCASB
JCXZ SKIP
MOV BYTE PTR [DI-1],’ ‘
NEXT
LOOP
SKIP:….
(4) LEA S I,STRING
LEA D I,CAPS
B X,CHART
LEA
MOV CX,26
NEXT: MOV AL, [SI]
CMP AL,’A’
JB OTHER
CMP AL,’Z’ JA
OTHER
MOV ES:[DI],AL
INC DI
SKIP
JMP
OTHER: MOV ES:[BX],AL
BX
INC
PTR[SI],0
SKIP: MOV BYTE
INC SI
LOOP NEXT
13.编程将AX寄存器的内容以相反的次序传送到DX寄存器中,并要求AX中的内容不被
破坏,然后统计DX寄存器中1的个数是多少。
答: MOV BL,0
PUSH AXMOV DX,0
MOV CX,16
NEXT: SHL AX,1
S KIP
JNC
INC
BL
SKIP: RCR DX,1
LOOP NEXT
STOP: POPAX
15.在下列程序段中分别填入以下指令
(1) LOOP NEXT (2) LOOPE NEXT (3) LOOPNE N EXT
程序执行完后,AX, BX, CX, DX的内容分别是多少?
START: MOV AX,01H
MOV BX,02H
MOV CX,04H
MOV DX,03H
NEXT: INC AX
ADD BX,AX
SHR DX,1
( )
答:(1) AX=5 BX=16 CX=0 DX=0
(2) AX=2 BX=4 CX=3 DX=1
(3) AX=3 BX=7 CX=2 DX=0
17. 类型2的中断服务程序的起始地址为0485:0016H,它在中断向量表中如何存放?答:物理地址内容
00008H 16H
00009H 00H
0000AH 85H
0000BH 04H
18.中断向量表中地址为0040H中存放240BH,0042H单元存放D169H,问:
(1) 这些单元对应的中断类型是什么?
(2) 该中断服务程序的起始地址是什么?
答:
(1) 10H
(2) D169H:240BH