2018年自考《汇编语言程序设计》习题六
三、问答()
1.什么是原码、反码及补码?计算机中常用补码表示数,有什么意义?
2.计算机中为什么采用二进制?
3. 布尔代数有哪两个特点?
4.指出下列指令的错误的原因,并更正。
(1)MOV [BX],[SI] (2) POP CS
(3) MOV DS,2000H (4) MOV BL,F5H
5.要想完成把[2000H]的一个字送[1000H]中,用指令:MOV [1000H],[2000H]是否正确?如果不正确,应用什么方法?
6.假定LAB是标号,VAR是变量,CON是常数,列出下列操作数或传送指令的寻址方式。
(1)VAR[BX] (2)CON+50H
(3)VAR (4)LAB
(5)VAR[BX+3] (6)VAR[BX][DI]
(7)MOV word ptr[BP][SI],100 (8)MOV VAR[BX],CX
(9)MOV AX,VAR[BX][DI] (10)MOV [BX+1000],DI
7.试问下面的程序段完成什么功能?
MOV CL,04
SHL DX,CL
MOV BL,AH
SHL AX,CL
SHR BL,CL
OR DL,BL
8.分析下面的程序,回答指定的问题。
START: XOR AX,AX
MOV CX,10
MOV BX,2
LOP1:ADD AX,BX
INC BX
DEC CX
JNZ LOP1
MOV SUM,AX
HLT
CODE ENDS
问:
(1)该程序完成的功能是什么?
(2)程序执行完后,SUM单元的内容是什么?
9.下面有四条等值语句
C1 EQU 1000
C2 EQU 1
C3 EQU 20000
C4 EQU 25000
下列指令哪些是不对的?请说明原因。
(1)ADD AL,C1-C2 (2)MOV AX,C3+C4 (3)SUB BX,C4-C3
(4)SUB AH,C4-C3-C1 (5)ADD AL,C2
10. 什么是寻址方式?简述8086/8088的寻址方式。
11. 说明存储器操作数有效地址EA的构成。
12. 指出下列操作数的寻址方式。
(1) POPF (2) IN AL,20H(3) CALL (4) INT 16H
13. 分别说明下列每组指令中两条指令的区别。
(1) MOV AX,2010H MOV AX,[2010H]
(2) AND BL,0FH OR BL,0FH
(3) JMP SHORT L1 JMP NEAR PTR L1
(4) MOV AX,[BX] MOV AX,BX
(5) SUB DX,CX CMP DX,CX
(6) MOV [BP][SI],CLMOV DS:[BP][SI],CL
14. 假如想用100中减去AL中的内容,用SUB 100,AL是否正确?如果不正确,就用什么方法?
15. 当执行CMP AL,BL后,ZF=0,CF=0,SF=1,OF=0,试问:
(1)若AL,BL中的内容是两个无符号数,比较结果如何?
(2)若AL,BL中的内容是两个带符号数,比较结果如何?
试举例说明。
16. 若8086执行SUB AH,AL后的结果是(AH)=85H,OF=1,问:
(1)执行前AH和AL内的数哪个大?
(2)AH中原存的是正数还是负数?其理由是什么?
(3)结果(AH)=85H是否正确?理由是什么?
17. 试问下面的程序段完成什么样的操作功能?
MOV DX,8001H
IN AL,DX
MOV AH,AL
DEC DX
IN AL,DX
MOV DX,AX
18. 分析下面的程序,回答指定的问题。
BEGIN: LEA BX,BUFFER
XOR AL,AL
MOV CL,64H
REPEAT: MOV BYTE PTR[BX],AL
INC BX
DEC CL
JNZ REPEAT
HLT
问:该程序完成的功能是 。
19. 分析下面的程序,回答指定的问题。
DAT1DB 0,1,2,3,4,5,6,7,8,9
DAT2DB 5 DUP(?)
…
MOV CX,5
MOV BX,5
MOV SI,0
MOV DI,0
NEXT: MOV AL,DAT1[BX+SI]
MOV DAT2[DI],AL
INC SI
INC DI
LOOP NEXT
问:(1)该程序完成的功能是什么?
(2)程序执行后写出DAT2数据区的内容是什么?
20. 指出下列程序段完成的操作。
MOV CL,4
MOV DL,AL
AND DL,0FH
SHR AL,CL
AND AL,0FH
MOV DH,DL
MOV BL,AH
AND BL,0FH
SHR AH,CL
AND AH,0FH
MOV AL,AH
MOV CL,DH