汇编语言程序设计 第三次作业
11. 文件结尾的部分信息就没有被写入磁盘,从而造成写入的文件不完整。
12. 下面的ASCIZ串有什么错误?
PATH_NAME DB ‘C:\\PROGRAMS\\TEST.DAT’
答:
此ASCIZ串的最后少了一个全0字节,应改为: PATH_NAME DB ‘C:\\PROGRAMS\\TEST.DAT’, 0
13. 据定义如下:
X1 DB 10H,100,-1 X2 DW 10H,100,-1 X3 DD ?
COUNT EQU X3-X1
变量COUNT的值是 ,其表示的意义是 。
答: 9 X1和X2两个变量所占内存字节单元的个数。(写为内存单元的个数也正确。如果写为字单元则为错误)
14. 执行指令
MOV AX,0 MOV AL,09H ADD AL,4
若要获得结果AX=0103H,则在ADD指令之后,加一条 指令,若要获得结果AL=13H,在ADD指令之后加一条 指令。
答:
DAA AAA
15. 实现AL中高四位置1的指令为 。
实现AL中高四位取反的指令为 。
答:
OR AL,0F0H XOR AL,0F0H
16. 为中断向量区。
答:
◎最低1K字节 ◎ (0-3FFH) ◎0000开始的1K 字节
以上三个答案都正确
17. X、Y、Z是双精度数,他们分别存放在X、X+2、Y、Y+2、Z、Z+2的内存单元中,高位字存放在高位地址中,低位字存放在低位地址中,下列指令序列实现X+Y+24-Z W。并且用W和W+2单元存放运算结果:
MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2 ADD AX,24 SUB AX,Z
SUB DX,Z+2 MOV W,AX MOV W+2,DX
分析以上指令序列,指出程序中出现的错误: ; 。
答:
在ADD和SUB两条指令之间加上 ADC DX,0(仅仅写出这条指令就正确) 把SUB DX,Z+2改成SBB DX,Z+2(仅仅写出这条指令就正确)
DATA SEGMENT
MESS1 DB ‘PERSONAL COMPUTER’ DATA ENDS EXTRA SEGMENT
MESS2 DB 17 DUP(?)
EXTRA ENDS CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE, DS:DATA,ES:EXTRA START: PUSH DS SUB AX,AX PUSH AX LEA SI,MESS1 LEA DI,MESS2 CLD REP MOVSB RET MAIN ENDP CODE ENDS END START
18. 在数据段中有一个字符串,其长度是17,要求把他们传送到附加段中的一个缓冲区。
以上是完整的程序段,请分析主过程,修改主过程中的错误。
1、 ; 2、 ; 3、 ; 4、 ; 5、 。
答: MOV AX,DATA
MOV DS,AX MOV AX,EXTRA MOV ES,AX
MOV CX,17 只要写出以上5条指令就给分,每条指令1分。
评分标准:指令中没有写出逗号、没有写对相应数据、写错操作码都视为错误答案。
19. 已知主程序和子程序之间的调用如下:
STACK SEGMENT
DB 100 DUP(0)
STACK ENDS CODE1 SEGMENT
ASSUME CS:CODE1,SS:STACK
BEG: ?
MOV AX, 0A3BH MOV CX, 1234H
CALL FAR PTR AA ;断点(IP)=1110H, (CS)=0200H
?
CODE1 ENDS CODE2 SEGMENT
ASSUME CS:CODE2 AA PROC FAR
PUSH AX PUSH CX BB: ?
RET AA ENDP CODE2 ENDS END BEG
画出执行到标号BB时,堆栈的情况图。
答: 1234H 0A3BH 1110H 0200H 20. 寄存器的二进制数用十六进制数的形式在屏幕上显示出来。
答:
1、 CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE START: PUSH DS SUB AX,AX PUSH AX
MOV CH,4 ROTATE:MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H
CMP AL,3AH JL PRINTIT
ADD AL,07H PRINTIT:MOV DL,AL MOV AH,2 INT 21H
DEC CH JNZ ROTATE RET MAIN ENDP CODE ENDS
END START
21. 写出一段子程序,完成输出空行的功能。空出的行数在AX寄存器中。
答:
CODE SEGMENT
MAIN PROC FAR ASSUME CS:CODE START:
PUSH DS SUB AX,AX PUSH AX MOV AX,5
OUTPUT:PUSH AX CALL DISP POP AX
DEC AX
22. 假定(DS)=2000H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H则
MOV AX,[BX+10]的寻址方式是 ;操作数的物理地址是 。
MOV AX,[BP][SI]的寻址方式是 ;操作数的物理地址是 。
答:
寄存器相对寻址 物理地址:20110H 基址变址寻址 物理地址:150B0H
23. 如果TABLE为数据段中0032H单元的符号名,其中存放的内容为1234H,则执行MOV A
X,TABLE 后AX寄存器的内容是 ;执行LEA AX,TABLE后AX寄存器的内容是 。
答:
1234H 0032H
24. 如果TABLE为数据段中0032H单元的符号名,其中存放的内容为1234H,则执行MOV A
X,TABLE 后AX寄存器的内容是 ;执行LEA AX,TABLE后AX寄存器的内容是 。
答:
1234H 0032H
25. 1、汇编语言程序上机操作的步骤
是 ;
; ; 。
答:
用编辑器编写汇编源程序ASM文件 用MASM命令编译ASM文件为OBJ文件 用LINK命令连接OBJ文件为EXE文件
在DOS下运行程序查看结果或者进入DEBUG查看结果
26. 假设X和X+2单元的内容为双精度数P, Y和Y+2单元的内容为双精度数Q(X,Y为低
位字),试说明下列程序段做什么工作?
MOV DX,X+2 MOV AX,X ADD AX,X ADC DX,X+2 CMP DX,Y+2 JL L2 JG L1 CMP AX,Y JBE L2
L1: MOV AX,1 JMP EXIT
L2: MOV AX,2 EXIT:… 分析以上程序段。写出该程序段实现的功
能: 。
答:
程序功能: AX =1 (2P>Q)
=2 (2P≤Q) 用语言描述也正确。
27. MOV CL,4
SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL
分析以上程序段。写出该程序段实现的功